IOS 微信1.8.7对接以及Universal Links详细说明(微信未验证应用解决办法)

  最近微信对老版本sdk开始限制部分功能,分享、第三方登陆、支付等功能都会出现未验证应用,因此不得不更新最新版本sdk,下面就主要介绍对接最新版本的坑,主要是Universal Links这方面(主要是不了解)。html

1:Universal Links

  要对接最新的微信sdk,你必需要了解一下Universal Links是什么,由于最新sdk根据Universal Links来判断来源app是否可信。json

  IOS主流跳转方案有两种:xcode

    1:Scheme微信

    2:Universal Linksapp

  Scheme的协议是由开发者彻底自定义,同时访问失败没有任何内容能够展示,因此IOS9就引入Universal Links。Universal Links 是经过域名下apple-app-site-association来肯定app,由于域名又必须是https又不会重复,还能看成地址来访问网页,解决了上述两个问题。ide

2:配置Universal Links

  • 配置apple-app-site-association

  首先你要建立apple-app-site-association文件(注意没有任何后缀名,纯文本的文件),放到你https域名更目录下,访问对应的域名https://xxx.xxx.xx/apple-app-site-association 能下载文件就能够(也能够放到根目录下.well-known文件夹下,跟ssl证书配置的同样的文件夹,其余文件夹暂时没试过是否能够,知道的小伙伴能够留个言)。文件内容是个json字符串:测试

 1 {
 2     "applinks": {
 3         "apps": [],
 4         "details": [
 5             {
 6                 "appID": "%1.%2",
 7                 "paths": ["*" ]
 8             }
 9         ]
10     }
11 }

  其中%1是苹果开发者帐号的teamid,%2是指对应app的bundle idui

  teamid不知道在哪里的小伙伴,参考下图(bundle id我就不作赘述了 不知道的小伙去面壁思过)spa

 

 

 

  json中path是干什么用的:3d

    1:用来告诉safari那些是Universal Links。例如:https://www.baidu.com 是你的域名,path配置为["/test/*"],那么你在手机里safari打开https://www.baidu.com/test/xxx就会有app打开提示以下图(这个提示图要下个步骤配置好才有):

 

 

 

你访问https://www.baidu.com/ex/xxx 就没有提示

  2:启动 App 时 看成参数给 App 传进来,但因为这是为了对接微信sdk因此这块内容不作深究,有兴趣的小伙伴能够研究一下

  • 配置Associated Domains

  在苹果开发者帐号里面勾选对应app的Associated Domains

 

  在xcode里面配置(若是你是自动获取签名方式,xcode里面添加好Associated Domains,开发者后台自动勾选Associated Domains

 

注意Domains填的就是上一步apple-app-site-association放的域名,例:applinks:www.baidu.com(不要https://,不要加路径path)

  到这里Universal Links的配置就ok了,手机从新安装好app,safari打开对应的link地址就会提示(注意我手机打开提示要往上拉一下才看获得,致使我花了大半时间确认是否配置出错,后来才发如今上面):

3.配置微信sdk相关

  • 在微信开放平台配置Universal links

 

 

 

其中links地址要带上https://(看微信提示文字便可)

  • 配置Url Type

 

 

填入微信开放平台对应的appid便可

  • 配置Info

 

 

4.微信代码编辑

初始化代码编辑:

[WXApi registerApp:@"微信appid" universalLink:@"https://www.baidu.com"];

回掉代码编辑:

- (BOOL)application:(UIApplication *)application continueUserActivity:(NSUserActivity *)userActivity restorationHandler:(void(^)(NSArray<id<UIUserActivityRestoring>> * __nullable restorableObjects))restorationHandler
{
    return [WXApi handleOpenUniversalLink:userActivity delegate:self];
}

注意要增长WXApiDelegate,才能回掉onResp,业务代码就能保持不变

 

要测试是否全部都正常能够调用微信sdk自检代码

[WXApi startLogByLevel:WXLogLevelDetail logBlock:^(NSString *log) {
     NSLog(@"WeChatSDK: %@", log);
}];
[WXApi registerApp:@"微信appid" universalLink:@"https://www.baidu.com"];
[WXApi checkUniversalLinkReady:^(WXULCheckStep step, WXCheckULStepResult* result) { NSLog(@"step:%@, %u, %@, %@", @(step), result.success, result.errorInfo, result.suggestion); }];

 

以下图所示:这表示对接成功

 

 

5:注意事项

  对接了最新sdk以后不必定能立马去掉未验证应用提示。 根据微信解释以下:旧版本没有正确接入新版OpenSDK(有分享二跳,受权登陆二次确认的状况),新版 本刚修复这个问题。须要等新版本放量上去让总体错误率降低到90%如下才会从未验证应用中移除。

  参考文档:iOS应用出现未验证应用的问题排查

       微信IOS接入指南

       微信IOS SDK下载

相关文章
相关标签/搜索