iOS 微信1.8.6分享增加universal links
由于微信SDK的升级,要求iOS分享登录等功能需要增加Universal link这个东西,
这些细节要注意的前提是,先照着微信官方和Apple官方文档把基础的配置配置OK了,再来看这个。
当然有些人照着官方文档看着就做好了,这是极少部分人,很多都会碰到磕磕绊绊,这里也是过来人给碰到问题的人提供多个解决方案的思路。不喜勿喷
就来说说我在做这个的过程中遇到的坑以及解决办法吧,网上有很多方案迷惑人,这里给大家指一条光明大道吧,首先你需要一个https的域名,然后跟你们的后台老大哥说让他吧一个Jason文件传到根目录,文件的名称一定要是apple-app-site-association,文件的内容大致是这样的:
{
"applinks": {
"apps": [],
"details": [
{
"appID": "TeamId.bundleId",
"paths": [ "/abc/*" ]
}
]
}
}
如果后台配合就找后台帮忙放一下文件,注意两点,第一:json格式文本,是.json格式的,但是不要带.json后缀,如果实在不行,就找个阿里云的服务器(支持https),放到阿里云服务器也可以,自己操作起来方便
第二:Content-Type:application/json,必须是json格式
文件访问地址:http://www.abc.com/apple-app-site-association要能访问到才可以,也可以参考官方在https://search.developer.apple.com/appsearch-validation-tool/
这里去验证
image.png
teamId 去开发者中心团队里面查看这个很简单的,重点是:paths一定要设置随便一个字符串都行一定要设置如果不设置可能会导致你的app与微信链接是先跳转到微信然后回到app然后又跳转到微信,每次分享都这样,所以兄弟不要挣扎了,就按我说的做吧记得这个path一定要以*号结尾实在不行就复制我上面这个文字吧把teamid和bundleid替换下就行。干货来了,如果你的域名是https://abc.cn那么在浏览器输入https://abc.cn/apple-app-site-association就是直接下载这个jason文件如果下载出来的内容乱码则有问题让你的老大哥去查吧,正确的显示应该如下:
image然后去苹果开发者中心在你的appid下开启associated domains功能
image之后在你的项目里添加对应的capability
imageassociated domains 里面的domains 填写,如果你的域名是https://www.abc.cn,那么则填写 applinks:www.abc.cn,这里大重点符号记得不要加入https啦这里也算是一个坑吧,至于前缀“applinks:”就是Json文件中的applinks:,不要随便改哦。
Scheme也要添加一个weixinULAPI才可以
接下来我们去微信开放平台,在应用的Universal Links中添加你的地址,如果你的域名是https://abc.cn,文件中path配置的是abc,那么微信开放平台你就填https://abc.cn/abc/一定要以斜线/结尾哦。保存之后,在代码中微信的初始化的时候把对应的https://abc.cn/abc/传给微信SDK就行啦
代码里面注册universalLink的形式主要有下面这几种
//微信官方
[WXApi registerApp:kWeChatAppID universalLink:kWeChatULink];
//如果你用的是友盟
[UMSocialGlobal shareInstance].universalLinkDic = @{@(UMSocialPlatformType_WechatSession):kWeChatULink};
// 如果用的是ShareSDK
[platformsRegister setupWeChatWithAppId:wxAppIDKey appSecret:wxAppSecret universalLink:kWeChatULink];
这样设置一下就行啦。记住这里穿过去的universal links一定要跟在微信开放平台留的一致呦。好啦,到这里算是一切都完毕啦。可以享受分享功能啦。注意在第一次分享的时候依然会先跳转到微信然后返回到app然后短暂的停留之后又跳转到微信,不过接下来分享就不会出现这种情况,只有第一次会这样,需要建立连接,如果每次都来回跳转,就要检查下自己的Jason文件里的path是不是有问题,这里还有个地方要注意的,如果你修改了jason文件的内容,建议app调试的时候先卸载在重新运行,不然可能有缓存导致修改一直不生效。
//这里讲解几个参数的意义
域名:www.abc.com(支持https)
后缀:abcapp(自定义短连接)
对应的配置就应该是
微信后台universal links:https://www.abc.com/abcapp/
代码中kWeChatULink宏定义:links:https://www.abc.com/abcapp/
注意:微信后台配置和代码中宏定义保持一致
associated domains配置:applinks:www.abc.com
json文件内容配置:paths与后缀保持一致,
例如
{
"applinks": {
"apps": [],
"details": [
{
"appID": "TeamID.<包名com.xxx.xxx>",
"paths": [ "/abcapp/*" ]
}
]
}
}
备注:
在注册微信key之后,打印一下日志。调用微信SDK的自检函数,自检函数会打开为悉尼并通过ulink方式回到app,如果ulink方式失败,会降级通过scheme方式返回。
image.png
看控制台输出,打印7个step == 才算成功的,没有问题的。
image.png
少一个都是配置有问题的。
补充一个检查的链接,好多人说配置是对的,但是依然显示“未验证应用”的提示
参考:https://docs.qq.com/doc/DZHNvSGJLS3pqbHNl
如果还有什么问题欢迎加我来唠:583169500。