微信中經過頁面直接打開app分爲安卓版和IOS版,兩個的實現方式是徹底不一樣的。html
安卓版實現:使用騰訊的應用寶,只要配置了「微下載」以後,打開連接騰訊會幫你判斷本地是否已經安裝了app,若是本地安裝就直接打開,沒有安裝的話就是騰訊微下載的頁面進行app下載,固然微下載的頁面騰訊提供了幾個模板,能夠本身選擇和修改。ios
IOS實現:ios像直接點擊連接打開本地app就難了,有兩種方式可供咱們選擇:服務器
1.騰訊深度合做的公司,微信能夠幫你打開app;微信
2.使用IOS9+的新功能「Universal Links」(通用連接);app
很顯然,第二種方式更適合咱們普通的公司。dom
1.配置https(必須是https)網站支持;ide
建立「apple-app-site-association」文件,注意不帶後綴,放到網站根目錄,確保可使用:https://xxx.xxx.xxx/apple-app-site-association直接能夠訪問,apple-app-site-association文件內容以下:測試
{ "applinks": { "apps": [], "details": [ { "appID": "*****.com.gangguwang.yewugo", "paths": [ "/app/*" ] } ] } }
其中appId是你的Prefix + ID,如圖:網站
paths爲你連接攔截的地址,好比我上面填寫的是「/app/*」,就是當我訪問https://xxx.xxxx.xxx/app/x的時候,會打開本地app,其餘鏈接時候則爲正常顯示,這個地址能夠配置成多個,也能夠直接寫*;ui
2.配置蘋果證書,開啓「Associated Domains」,以下圖:
Identifiers - App IDs –Edit 而後開啓打鉤 Associated Domains 後保存,配置地址:https://developer.apple.com/account/ios/identifier/bundle
3.配置你的App的Universal Links(通用連接)
若是你是普通的ios項目的的話,配置以下:項目 targets->Capabilities->Associated Domains,如圖填寫你的連接域名
域名的格式必須爲:applinks:你的域名(ex:applinks:www.domain.com),能夠配置多個;
若是你是Xamarin項目的話,須要選擇Entitlements.plist配置關聯域,如圖:
這樣配置完以後,打包便可測試你的應用咯。
若是你要處理連接打開本地app並跳轉到相應的詳情頁的話,須要這樣實現:
1.在你的xxx.iOS項目打開「AppDelegate.cs」文件;
2.重寫方法,代碼以下:
public override bool ContinueUserActivity(UIApplication application, NSUserActivity userActivity, UIApplicationRestorationHandler completionHandler) { if (userActivity.ActivityType == NSUserActivityType.BrowsingWeb) { string url = userActivity.WebPageUrl.ToString(); //全地址 if (!string.IsNullOrEmpty(url)) { //你的業務處理 } } return true; }
參考文檔:https://components.xamarin.com/gettingstarted/googleiosappindexing
1.配置的網站必須是https,不能爲http;
2.[重要]展現地址和打開的地址不能在一個域名下(做者測試發現放在同一服務器下都不行),好比展現頁的地址是https://a.domain.com/?id=10,打開的若是是https://a.domain.com/app/?id=10,系統默認是打開頁面,而不是觸發通用連接打開app;
3.[重要]配置玩證書以後須要更新證書,才能內部打包和提測上傳成功;
4.通用連接可被屏蔽,點擊右上角配置的連接以後,通用連接就失效了,解決方案詳見:《iOS通用連接(Universal Links)忽然點擊無效的解決方案》。
若是以爲本文對你有幫助,請點擊右下角「推薦」按鈕,謝謝!