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文件
{ "applinks": { "apps": [], "details": { "TBEJCS6FFP.com.domain.App": { "paths":[ "*" ] } } } }
paths中的內容為對應App啟動的鏈接路徑
全路徑的時候使用“*”。
特定位置的時候需要指定具體內容,
["/wwdc/news/", /videos/wwdc/2015/*]
TBEJCS6FFP.com.domain.App這部分使用的是你的TeamID和Bundle Identifier
3.3 對apple-app-site-association文件的簽名
我使用的是以下的方法對apple-app-site-association進行簽名。
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文件中添加以下代碼
- (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更新的部分可能會沒有效果
如果需要使用我的服務器和app進行測試的同時可以私信我。