1.Universal Link
理解为苹果官方支持deeplink就行了
2.通过点击HTTP链接启动APP
Web・iOS应用在支持Universal Link的前提下,当用户点击特点的链接时会自己起动应用
・App已经安装的前提下:直接启动App然后现实链接内容
・App没有安装的前提下:Web上继续显示链接内容
3.Universal Link的实现方法
首先需要准备一下内容
Web服务器
・独立的domain
・SSL证书
・被签名的JSON文件
iOS应用
・iOS9以上
・Xcode 7・iOS 9 SDK
・Capabilities
・AppDelegate的代理设置
3.1 Capabilities的设置
在Capabilities的设置中,设置`Associated Domains’的Domains内容
例:https://www.facebook.com/ -> applinks:facebook.com
注意:对于subdomain,www的有无要仔细考虑一下
3.2 apple-app-site-association文件的配置
apple-app-site-association文件一定要放在服务器的根目录下!!!!!!
首先要准备一下apple-app-site-association文件
1
2
3
4
5
6
7
8
9
10
|
{ "applinks" :
{ "apps" :
[], "details" :
{ "TBEJCS6FFP.com.domain.App" :
{ "paths" :[ "*" ] } } } } |
paths中的内容为对应App启动的链接路径
全路径的时候使用“*”。
特定位置的时候需要指定具体内容,
1
|
[ "/wwdc/news/" ,
/videos/wwdc/ 2015 /*] |
TBEJCS6FFP.com.domain.App这部分使用的是你的TeamID和Bundle Identifier
3.3 对apple-app-site-association文件的签名
我使用的是以下的方法对apple-app-site-association进行签名。
1
|
cat
apple-app-site-association-unsigned.js | openssl smime -sign -inkey g01-server.key -signer g01-server.crt -certfile g01-dvcacert.cer -noattr -nodetach -outform DER > apple-app-site-association |
3.4 App对应的开发
在AppDelegate.m文件中添加以下代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
-
( BOOL )application:(UIApplication
*)application continueUserActivity:( NSUserActivity *)userActivity
restorationHandler:( void (^)( NSArray *
_Nullable))restorationHandler { NSLog (@ "continueUserActiity
enter" ); NSLog (@ "\tAction
Type : %@" ,
userActivity.activityType); NSLog (@ "\tURL
: %@" ,
userActivity.webpageURL); NSLog (@ "\tuserinfo
:%@" ,userActivity.userInfo); NSLog (@ "continueUserActiity
exit" ); restorationHandler( nil ); NSHTTPCookieStorage *sharedHTTPCookieStorage
= [ NSHTTPCookieStorage sharedHTTPCookieStorage]; NSArray *cookies
= [sharedHTTPCookieStorage cookiesForURL:userActivity.webpageURL]; NSLog (@ "COOKIE{name:
%@" ,
cookies); return true ; } |
如代码所示,我们可以获取到跳转链接的一些基本信息
URL内容,ActionType等都是可以获取并且在代码中进行修改的。
4.结果
通过以上的配置后,一个基础的Universal Link应用就开发结束了
点击对应的链接我们可以看到自己的App被成功启动
5.一些事实
相同的服务器不同的目录结构可能导致Universal Link不启动
应用和json文件同时更新时,json更新的部分可能会没有效果