最近项目中新增了微信登录和QQ登录功能,微信开放平台和腾讯开放平台中都要求填写Universal Link,需要在服务器上部署一下才能使用。
先来了解一下Universal Link是做什么用的,目前iOS app之间的跳转有两种方式URL Scheme和Universal Link,URL Scheme的方式会被微信屏蔽,所以只能用Universal Link。项目中如果使用到了微信或者QQ的登录、分享功能就必须要配置Universal Link。
配置Universal Link的步骤:
1.创建一个文件,文件名为apple-app-site-association,不带后缀名。
2.填写文件内容如下:
{ "applinks": { "apps": [], "details": [ { "appID": "123.456", "paths": [ "*","/qq_conn/xxx/*" ] } ] } }
其中123替换为TeamID,TeamID查看方法如下:
456替换为app的Bundle ID,Bundle ID查看方法如下:
path中的*代表跳转时不指定具体跳转到哪一个页面
/qq_conn/xxx/*,为腾讯开放平台需要的,如不支持QQ登录或QQ分享可以不填,其中xxx改为腾讯开放平台的appID
3.把填写好的文件给到公司的服务端人员,让他把文件上传到公司服务器的根目录下,注意一定要放到https域名的根目录下。
下文介绍了如何使用rancher把文件部署到服务器的根目录:
https://www.jianshu.com/p/e6b7ee9bda89
4.假如配置好的服务器地址为https://ABC.DEF.cn,那么点击如下地址:https://ABC.DEF.cn/apple-app-site-association,就会将apple-app-site-association文件直接下载下来,打开文件即可查看到之前填写好的内容。
5.进入开发者账号,找到当前项目对应的ID,点击进入,勾选Associated Domains,点击保存。
6.验证Universal Link是否配置成功,将部署好的Universal Link用手机Safari打开,下拉页面,如果出现如下界面,显示应用图标和名称,在XXX App中打开,则说明部署成功。
Universal Link配置多项目方法
如果同一开发者账号下有多个app的话,无需配置多个Universal Link,同一Universal Link支持多个app的方法如下:
1.创建一个文件,文件名为apple-app-site-association,不带后缀名。
2.填写文件内容如下:
{ { "applinks": { "apps": [], "details": [ { "appID": "123.456", "paths": [ "/aaa/*","/qq_conn/xxx/*"] }, { "appID": "123.789", "paths": [ "/bbb/*","/qq_conn/yyy/*"] } ] } }
其中123替换为Team ID,456替换为第一个app的Bundle ID,789替换为第二个app的Bundle ID,aaa、bbb为自定义的路径,xxx、yyy为腾讯开放平台的app ID,如不支持QQ登录和QQ分享则不填,两个以上的app以此类推。
3、4、5步方法同上单项目的配置方法完全相同
6.验证Universal Link是否配置成功,和单项目不同的是,如上配置好后第一个app的Universal Link地址为https://ABC.DEF.cn/aaa/,第二个app的Universal Link地址为https://ABC.DEF.cn/bbb/,以此类推
iOS开发人员需要操作的步骤
1.进入到项目里的Signing & Capabilities,找到Associated Domins,填写Universal Link,格式为applinks:ABC.DEF.cn。例如公司服务器地址为https://ABC.DEF.cn,则填写applinks:ABC.DEF.cn(无论是支持单app还是多app的Universal Link都这样填)
Xcode中Associated Domins的配置方法
2.Universal Link在代码中的使用方法:
当使用Universal Link唤醒app时,会调用AppDelagate中的如下方法:
- (BOOL)application:(UIApplication *)application continueUserActivity:(nonnull NSUserActivity *)userActivity restorationHandler:(nonnull void (^)(NSArray<id<UIUserActivityRestoring>> * _Nullable))restorationHandler{ //当使用Universal Links唤醒app时就执行这个方法。 NSLog(@"userActivity : %@",userActivity.webpageURL.description); //在这里可以根据自己的项目需求做对应的处理 return YES; }
注:如果Universal Link配置好之后微信或QQ登录、分享还不可用,需要检查一下微信开放平台、腾讯开放平台上的Universal Link是否已经填好,并且要保证开放平台和项目中填写的Universal Link一致,
只支持一个app的Universal Link:
如Universal Link为https://ABC.DEF.cn,则微信开放平台填写https://ABC.DEF.cn/,不要带apple-app-site-association后缀,QQ互联上Universal Link填写的格式为ABC.DEF.cn,点击确定后会自动生成https://ABC.DEF.cn/qq_conn/xxx的格式
支持多个app的Universal Link:
如Universal Link为https://ABC.DEF.cn/aaa,则微信开放平台填写https://ABC.DEF.cn/aaa/,QQ互联上Universal Link填写的格式为ABC.DEF.cn,点击确定后会自动生成https://ABC.DEF.cn/qq_conn/xxx的格式
参考链接:
https://www.jianshu.com/p/e2fcbb61c71c