手機網頁通過js打開app


最近接到這樣的一個需求,通過網上查閱了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

 

此方法有待完善(事實是我也沒有處理過)。

 

結束。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM