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更新的部分可能会没有效果