Universal Links
念
能链接app深层次的内容。
点击Universal Links时,系统直接重定向link到你的app。安装app时,系统直接验证,并交给app打开URLs。没有安装时,交给Safari处理。
Universal Links 与 Custom URLs的区别?
Universal Links 更安全,苹果能在你的网站通过Apple App Site Association来验证关联,排除其它app修改你方案和重定向你链接。
行
- 创建app与website的双向关联,并且明确app可以处理。
- 在app delegate中响应
在Safari中浏览网站,点击universal link时,如果域名相同,继续在Safari中浏览;域名不同,系统会在app中打开链接。
呼
App可以通过universal links通讯。
open(_:options:completionHandler:)
在自己app内部,是不能通过universal link打开自己网站的。
建
-
app添加Associated Domains Entitlement。
格式为
<service>:<fully qualified domain> -
添加Apple App Site Association file。创建名为
apple-app-site-association的文件。{ "applinks": { "apps": [], "details": [{ "appID": "<App ID Prefix>.<Bundle ID>", "paths": ["*", "/wechat/*"] }] }, "webcredentials": { "apps": ["<App ID Prefix>.<Bundle ID>"] } }不要有后缀名!放到服务器后,服务器需要设置mime类型为application/json。
应
在app delegate中
func application(_ application: UIApplication,
continue userActivity: UIUserActivity,
restorationHandler: @escaping ([UIUserActivityRestoring]?) -> Void) -> Bool
在scene delegate中
参考
universalLink注意事项
1.如果app官网为m.test.com 则需要将apple-app-site-association配置到m.test.com域名下
2.微信开发者平台配置的universalLink为m.test.com/ 最后一个/为微信平台要求
3.在调用微信的sdk的时候 调用方法
+ (BOOL)registerApp:(NSString *)appid universalLink:(NSString *)universalLink;
中的universalLink需要和主站保持一致 也为m.test.com, 不需要加最后的/
4.在xcode中的配置应为 applinks:m.test.com 不包含https://前缀
5.工程中的plist中的白名单LSApplicationQueriesSchemes应当包含weixinULAPI
6.在xcode工程中
- (BOOL)application:(UIApplication *)application continueUserActivity:(NSUserActivity *)userActivity restorationHandler:(void (^)(NSArray * _Nullable))restorationHandler {
里面应当执行
return [WXApi handleOpenUniversalLink:userActivity delegate:self];
}
如果包含微信id 则这个链接是微信分享朋友圈/好友/微信支付 相关 否则为唤起app操作,可以单独处理唤起的userActivity.webpageURL.description 跳转指定页面
7.如果不想在安装了app的时候, 打开h5就跳转app, 需要做一个m.test2.com的域名 用这个当做universalLink, 使用h5的时候还用m.test2.com 只有当发送短信的时候发送的是m.test2.com, 打开的是app, 如果未安装则指向m.test.com, 原先的m.test.com也不会受到影响
8.自检测试函数测试通过需要注释掉,否则会二次唤起
9.未验证问题排查 docs.qq.com/doc/DZHNvSG…