【开发经验】iOS不使用微信sdk,直接打开小程序

直接贴代码

iOS审核不让有支付代码,所以只使用轻度功能的话,可以不使用微信SDK。

使用前需要先去微信开放平台绑定。

我的封装

/**
 *  开发前需要到微信开放平台把App绑定小程序,然后在小程序的管理员微信上点击同意绑定,就可以转跳了
 *  字段解释:
 *  @appid:小程序appid
 *  @username:‘gh’开头的小程序公用id
 *  @path:小程序需要打开页面的路径
 *  @type:0是正式版,1是开发版,2是体验版
 **/
-(void)jumpToWechatMiniProgram:(NSString *)appid ghId:(NSString *)username path:(NSString *)path type:(NSString *)miniProgramtype{
    NSString *mPath = [path stringByReplacingOccurrencesOfString:@"/" withString:@"%2F"];
    NSString *url = [NSString stringWithFormat:@"weixin://app/%@/jumpWxa/?userName=%@&path=%@&miniProgramType=%@&extMsg=",appid,username,mPath,miniProgramtype];
    [[UIApplication sharedApplication] openURL:[NSURL URLWithString:url]options:@{} completionHandler:^(BOOL success) {
        NSLog(@"跳转成功");
    }];
}

调用

-(IBAction)jumpWithUrl:(id)sender{
    [self jumpToWechatMiniProgram:@"wx8888888888888" ghId:@"gh_88888888888" path:@"pages/index/index?session=自己定的参数" type:@"2"];
}

Scheme白名单

如果是真机测试记得在info.plist添加白名单

<key>LSApplicationQueriesSchemes</key>
    <array>
        <string>mqzone</string>
        <string>sinaweibo</string>
        <string>mqqwpa</string>
        <string>mqqbrowser</string>
        <string>wtloginmqq2</string>
        <string>weixin</string>
        <string>wechat</string>
    </array>

获取微信sdk的其他功能

iOS中,app互相转跳走的都是openUrl这个接口,通过scheme就可以转跳到目标程序,但是scheme是不审核的,可以随意指定,所以我们可以通过写一个假微信(scheme是weixin),来拦截微信SDK的启动请求,从而获取到对应的启动字符串,然后自己拼接字符串即可。

伪造微信

在info.plist里添加(注意缩进不要弄错了,最好在模拟器上试,如果安装了微信,是不会跳到我们的假微信里的。):

<key>CFBundleURLTypes</key>
    <array>
        <dict>
            <key>CFBundleURLSchemes</key>
            <array>
                <string>weixin</string>
            </array>
            <key>CFBundleURLName</key>
            <string>1111</string>
        </dict>
    </array>

看不到源码页面的话,右键info.plist,选择Open As -> Source Code就能看到了,改完了切回Property List模式,不报错就说明格式是对的。

获取转跳参数

在appDelegate.m里增加:

// 这方法显示已经废弃了,但是只是获取参数还是可以的
- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url
  sourceApplication:(NSString *)sourceApplication annotation:(id)annotation{
    //显示截取的urlscheme
    UIAlertView *alert = [[UIAlertView alloc]initWithTitle:@"接收到的urlScheme" message:url.absoluteString delegate:nil cancelButtonTitle:nil otherButtonTitles:@"确定", nil];
    [alert show];
//    复制到剪贴板
    UIPasteboard *pasteboard = [UIPasteboard generalPasteboard];
    pasteboard.string = url.absoluteString;
    
    return YES;
}

然后就能看到弹窗里的urlscheme就可以了,只要拼接出一个一样的urlscheme,就可以启用微信SDK同样的功能。

相关推荐