最近接到這樣的一個需求,通過網上查閱了a lot資料(其實是踩了很多坑),意識到有必要做一個這樣的隨筆,以便查閱。
先說重點:
1. 第三方瀏覽器通過網頁打開app的普遍方法是通過scheme命令直接打開。
2. 微信或QQ瀏覽器通過網頁打開app最完善的方法是上傳應用寶。
3. 微信或QQ瀏覽器通過網頁打開app只有ios9以上可實現(Android和Ios 9以下除外)。
廢話不說,上代碼:
一。 第三方瀏覽器直接打開app。
1 安卓: 2 3 var state = null; 4 try { 5 if (scheme != '') { 6 openIframe.src = '【scheme】://【host】/【openwith】'; 7 } 8 } catch (e) { } 9 if (state) { 10 window.close(); 11 } else { 12 location.href='下載地址'; 13 } 14 15 蘋果: 16 17 if (scheme != '') { 18 window.location.href = '【scheme】://'; 19 }
此處推薦做法:在頁面加載的時候嘗試打開,加載完畢點擊跳轉到下載(推薦)。【注:此方式弊端為ios safari瀏覽器打開時,會提示無法打開】
二。微信或QQ瀏覽器直接打開app。
注:此方法僅適用於蘋果ios9以上系統。
准備以下stuff:
1. 獨立域名。
2. SSL證書。
3. 被簽名的json文件。
4. Xcode 7・iOS 9 SDK
5. Capabilities
6. AppDelegate的代理設置
步驟:
1. 在Capabilities的設置中,設置`Associated Domains’的Domains內容
例:https://www.facebook.com/ -> applinks:facebook.com
2. apple-app-site-association文件的配置
注:apple-app-site-association文件一定要放在服務器的根目錄下。
1 { 2 "applinks": { 3 "apps": [], 4 "details": { 5 "TBEJCS6FFP.com.domain.App": { 6 "paths":[ "*" ] 7 } 8 } 9 } 10 }
paths中的內容為對應App啟動的鏈接路徑
全路徑的時候使用“*”。
特定位置的時候需要指定具體內容,
1 ["/wwdc/news/", /videos/wwdc/2015/*]
TBEJCS6FFP.com.domain.App這部分使用的是你的TeamID和Bundle Identifier
3. 對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
4. App對應的開發
在AppDelegate.m文件中添加以下代碼
1 - (BOOL)application:(UIApplication *)application continueUserActivity:(NSUserActivity *)userActivity restorationHandler:(void (^)(NSArray * _Nullable))restorationHandler 2 { 3 NSLog(@"continueUserActiity enter"); 4 NSLog(@"\tAction Type : %@", userActivity.activityType); 5 NSLog(@"\tURL : %@", userActivity.webpageURL); 6 NSLog(@"\tuserinfo :%@",userActivity.userInfo); 7 8 NSLog(@"continueUserActiity exit"); 9 restorationHandler(nil); 10 11 NSHTTPCookieStorage *sharedHTTPCookieStorage = [NSHTTPCookieStorage sharedHTTPCookieStorage]; 12 NSArray *cookies = [sharedHTTPCookieStorage cookiesForURL:userActivity.webpageURL]; 13 14 NSLog(@"COOKIE{name: %@", cookies); 15 return true; 16 }
如代碼所示,我們可以獲取到跳轉鏈接的一些基本信息
URL內容,ActionType等都是可以獲取並且在代碼中進行修改的。
微信或QQ瀏覽器打開ios9以上app 結束。
三。微信或QQ瀏覽器通過應用寶直接打開app
此方法有待完善(事實是我也沒有處理過)。
結束。