若是你的app支持通用连接,那么iOS 9用户点击连接到你的网站,能够准确地定位到到手机安装的你的APP应用程序,而不经过Safari去实现。若是用户手机没有安装你的APP应用程序,经过通用链接能利用一个连接到你的网站,而不用经过在Safari打开你的网站。web
不像自定义URL schemes协议头那样,通用的连接不能被其余应用程序声称,由于他们使用标准HTTP或HTTPS连接你的网站。json
若是iOS用户安装了你的应用,应用程序启动(不是登录)时就会检查你上传到web服务器json文件(apple-app-site-association),以确保你的网站容许应用程序打开url。只有你能建立和上传这个文件,因此专门配置的网站与你的应用程序链接之间是安全的。数组
触发通用链接时,若是用户没有安装你的应用程序,点击这个通用链接会打开Safari加载你的网站内容,这是用户所指望。安全
只需一个URL就能根据用户有没有安装你的APP,决定加载你的网站仍是你的APP应用程序。bash
其余应用程序能够与你的应用程序通讯,而不须要知道你的应用程序是否在用户手机中安装。服务器
文件内容以下:app
{
"applinks": {
"apps": [],
"details": [
{
"appID": "teamID.bundleId",
"paths": ["/mall/app_download/app","/app_download/app"]
},
{
"appID": "teamID.bundleId",
"paths": ["/path/app_download/app","/app_download/app","*"]
}
]
}
}
复制代码
注意事项以下:dom
teamID
.bundleId
形式*
配置,则整个网站均可以使用/wwdc/news/
来指定某一个特殊的连接*
来匹配任意字符,你也可使用 ?
来匹配单个字符,你能够在路径当中结合这两个字符使用,例如 /foo/*/bar/201?/mypage
.well-known
这个子目录下。注意事项以下:网站
确保使用https://yourdomain.com/apple-app-site-association
这个连接能够访问到,yourdomain.com
为你的服务器域名。ui
也可使用苹果的验证网站,验证文件是否能被苹果请求到。若是是未上线的应用,使用验证网站时可能出现以下提示:
出现该提示为apple-app-site-association
文件配置正确。
出现404
错误码提示,则为apple-app-site-association
文件未上传成功,或者使用https://yourdomain.com/apple-app-site-association
路径没法访问。
项目配置
在项目的Capablities
中开启Associated domains
,以下图:
注意事项:
domains
能够添加多个,前缀必须为applinks:
,applinks:
后为你的服务器的域名。代码接收Universal Links唤醒
在appdelegate中实现下面这个方法,当使用Universal Links唤醒app时就执行这个方法。
-(BOOL)application:(UIApplication *)application continueUserActivity:(NSUserActivity *)userActivity restorationHandler:(void (^)(NSArray<id<UIUserActivityRestoring>> * _Nullable))restorationHandler
{
if ([userActivity.activityType isEqualToString:NSUserActivityTypeBrowsingWeb]) {
NSURL *webUrl = userActivity.webpageURL;
if ([webUrl.absoluteString containsString:@"?"]) {
}
}
return YES;
}
复制代码
验证以上配置
快捷验证,在备忘录中输入https://yourdomain.com/apple-app-site-association
,长按这个连接,出现下图提示则配置成功。