欢迎访问移动开发之家(rcyd.net),关注移动开发教程。移动开发之家  移动开发问答|  每日更新
页面位置 : > > > 内容正文

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

来源: 开发者 投稿于  被查看 14850 次 评论:241

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


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

1:Universal Links

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

  IOS主流跳转方案有两种:

    1:Scheme

    2:Universal Links

  Scheme的协议是由开发者完全自定义,同时访问失败没有任何内容可以展现,所以IOS9就引入Universal Links。Universal Links 是通过域名下apple-app-site-association来确定app,因为域名又必须是https又不会重复,还能当作地址来访问网页,解决了上述两个问题。

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 id

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

 

 

 

  json中path是干什么用的:

    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下载

相关文章

    暂无相关文章

用户评论