ios9- apple-app-site-associatio
最近项目中要新加一个小功能,通用链接处理(Universal Links):
即当某一个界面中有一个自己公司的URL链接,如果发现本地安装了app,那么就跳转到app而不是跳转safari的网页信息。这个时候需要用到ios9中的新个性:通用链接处理
说一下流程:
1.在自己的开发者账号需要申请包含 Associated Domains
Associated Domains2.设置里配置响应的域名(注意不要写ip)
添加Domains注意:添加的Domains 应该以 applinks开头,比如:applinks:mobile.amon.cn
添加完之后,会在程序里自动生成一个.entitlements文件,
entitlements文件item0是第一个域名地址,item1是第二个域名地址(后边的Value是创建的时候默认的名字,应该填自己公司的域名)
3.代码中接收来自其他外部url点击,并且在 AppDelegate 里支持通用链接
实现: - (BOOL)application:(UIApplication *)application continueUserActivity:(NSUserActivity *)userActivity restorationHandler:(void (^)(NSArray *restorableObjects))restorationHandler方法,如下:
代理当 userActivity 是 NSUserActivityTypeBrowsingWeb 类型, 则意味着它已经由通用链接 API 代理。这样的话, 它保证用户打开的 URL 将有一个非空的 webpageURL 属性。
4.设置json,这些需要服务端去配置
{
"applinks": {
"apps": [],
"details": {
“appID”: "公司开发者账号的小组ID.包名id": {
"paths":[ "*"]
}
}
}
}
appID是公司开发者账号的小组id和包名id,中间用.隔开
paths是在项目中的的.entitlements文件中域名后支持的路径,*表示全路径,download表示download路径下的所有url都可以进入到app中打开,其他的路径是不允许使用的
json格式的文件是app第一次安装,它会从 https://domain.com/apple-app-site-association 下载这个文件。
5.测试
需要测试该功能的时候,只需要在记事本或短信中输入App能识别的链接,然后直接点击或是长按就可以了,直接点的效果是跳转到你的App,长按的效果是弹出的菜单中第二项是“在'XXX'中打开”,这也代表着成功。直接在Safari中输入链接是无效的,必须从一处跳入才可以(比如上一级网页)
在开发这个功能的时候参考了很多资料,在这里附上链接
https://www.jianshu.com/p/c2ca5b5f391f
欢迎关注我的公众号,专注iOS开发、大前端开发、跨平台技术分享。
iOS开发之家