通用链接的作用是将网站和App建立联系,通过点击http链接打开App
以下是几篇不错的文章,照着做。等实际做的时候再添加过程和填坑过程。
One URL works for both your website and your app.
Apple 推出通用链接:一种能够方便的通过传统HTTP链接来启动APP, 使用相同的网址打开网站和 APP。
主要工作
- 添加域名到
Capabilities - 上传
apple-app-site-association文件 - 在
AppDelegate里处理通用链接 - 开发者网站打开
Associated Domains功能
开发者中心->Identitiers->App IDs->需要支持的应用App ID - 添加功能之后,
Provisioning Profile需要重新生成并更新一下,因为entitlement文件增加内容了,需要更新到证书里面
主要原理
如果支持通用链接(比如iOS9,并且把这个功能打开了),当用户点击了通用链接后,iOS系统会启动App,并且APPDelegate中的代理函数application:continueUserActivity:restorationHandler:会被调用。NSUserActivity * 类型的参数userActivity的属性activityType的值为NSUserActivityTypeBrowsingWeb,这样就可以判断这次的启动是用户通过点击通用链接而过来的。对于iOS9以前的不支持通用链接的系统,这里不会进来。
另外,URL信息,通过userActivity的属性webpageURL传递过来。根据这个URL,可以跳转本地的页面,或者像以前一样,调用Safari显示网页,具体操作就根据URL的编码约定了。
// 通用链接
- (BOOL)application:(UIApplication *)application continueUserActivity:(NSUserActivity *)userActivity restorationHandler:(void (^)(NSArray * _Nullable))restorationHandler {
// 用户点击通用链接,导致APP启动,会进到这个里面
if ([userActivity.activityType isEqualToString:NSUserActivityTypeBrowsingWeb]) {
NSURL *url = userActivity.webpageURL;
if (nil == url) {
return YES;
}
if ([url.host isEqualToString:@"domain.com"]) {
// 是目标链接,调用Native代码,打开对应的页面
} else {
// 不是目标链接,用Safari打开
[[UIApplication sharedApplication] openURL:url];
}
}
return YES;
}