iOS假装进步iOS学习专题iOS工具

iOS 微信SDK更新后需要UniversalLink解决方案

2019-10-07  本文已影响0人  老坛泡菜
一:缘由

微信更新1.8.6的SDK后,在delegate注册时多了一个universalLink参数,当时我是一脸懵逼的,啥玩意啊?
微信官方是这么解释的(微信iOS开发文档)。

WXApi.registerApp(appid: String, universalLink: String)

意思大概就是之前是用URL Schemes方式跳转APP,现在为了安全性等原因,改用universalLink方式。蛋疼的是更新之后就必须用这种方式,要是不填universalLink,不管是分享还是支付都无法调起微信,真是有够折腾人的。

二:什么是UniversalLink

中文译叫:通用链接,简单来说就是一个URL,当用户在浏览器中访问此url时,苹果会检测此URL对应的APP是否已安装。

已安装则跳转到APP。
未安装则访问此URL实际内容。

这里有几篇苹果官方文档的解释,使用谷歌浏览器翻译一下就好了,文章都不长,强烈建议都认真看一圈。我也是反复读了很多遍后才理解这玩意的。
支持通用链接
允许应用程序和网站链接到您的内容
启用通用链接
处理通用链接

三:如何开启UniversalLink

步骤还是比较多的,这里先列出来操作步骤(顺序不分前后的)。

四:步骤详解

启用Xcode-Capabilities中的Associated Domains,以applinks:+你准备的UniversalLink的形式填写对应值。例如:applinks:help.wechat.com

大致意思就是苹果会在APP第一次启动时(仅第一次),去访问你准备好的那个域名根目录或.well-known子目录下的apple-app-site-association文件。最好两个地方都放一份吧,而且还要保证能get请求到此文件,该文件不需要后缀名。

那么此文件的内容是什么呢?还是来看看官方的解释

其实就是一个json,apps数组不用管,details里面填入对应得appID和paths。

appID好理解就是用前缀+bundleID的方式,在App Store应用后台可以查看此前缀

paths则是可访问APP的对应页面路径,如果你只是单纯的想启动APP使用通配符即可,更多关于paths的介绍这里不做过多撰述,下面有个我的例子,替换APPID和BundleID就可以了。

{
    "applinks":{
        "apps":[

        ],
        "details":[
            {
                "paths":["*"],
                "appID":"abcdefg.com.wechat.wexin"
            }
        ]
    }
}

ok,到这里apple-app-site-association文件就制作好了,把它交给你的后台人员,按照之前说的放到相应目录。一切就绪后,打包一次APP,然后你就可以先在safari浏览器中测试走一波,把完整的URL地址输入进去。页面加载完手指往下拉一下,看是否有打开APP的提示,如果有则配置成功!

func application(_ application: UIApplication, continue userActivity: NSUserActivity, restorationHandler: @escaping ([UIUserActivityRestoring]?) -> Void) -> Bool {
        return WXApi.handleOpenUniversalLink(userActivity, delegate: self)
    }
五、总结

做完这些后,应该就可以成功调起微信了,如果还有什么特殊的需求,建议多仔细阅读苹果官方文档,和微信更新的文档。本文只是记录自己踩坑的过程,如果能帮助你,感谢给颗小星星。如有不足之处,请指正。

上一篇下一篇

猜你喜欢

热点阅读