現在有這樣一個需求:用戶點擊分享文章上的"打開app"跳轉到我們的App中或者App中的指定頁面。
可行的方案大概有三種:
一、直接使用URL Scheme。
(優點:十分簡單,在plist文件中配置一個scheme,點擊短信中的scheme或者將scheme輸入到瀏覽器中就可以直接跳到App中。 缺點:當手機上沒有安裝App時,短信中點擊scheme會沒有反應,瀏覽器中會訪問失敗。而且在微信和QQ中這種方式是被禁用的)。因為有些app的內置瀏覽器是不讓你隨便跳到別人的app的,除非你和人家有合作,人家單獨給你開通VIP通道,哈哈!
把URL Schemes交給做web的同學,進行配置,記住 后面要加 :// 例如: nodellink://
二、使用iOS9之后的新特性,通用鏈接(Universal Links)。
這是我做過的,下面把流程走一遍:
1.先決條件:你必須有一個域名,且這個域名需要支持https。
這個去找你們的后臺要
2.去開發者中心
對應的appid下申請一下權限
3.打開工程配置中的Associated Domains,在其中的Domains中填入你想支持的域名,必須以applinks:為前綴。
4.創建一個內容為json格式的文件,蘋果將會在合適的時候,從我們在項目中填入的域名請求這個文件。這個文件名必須為apple-app-site-association,沒有后綴名,文件內容是這樣子的:
{
"applinks": {
"apps": [],
"details": [
{
"appID": "9JA89QQQQQ.com.apple.wwdc",
"paths": [ "/wwdc/news/", "/videos/wwdc/2015/*"]
},
{
"appID": "ABCD1234.com.apple.wwdc",
"paths": [ "*" ]
}
]
}
}
我們后臺的做法是直接出去了一個字典,鏈接最后不要帶有路徑域名直接加apple-app-site-association,且不要帶json后綴
{
"applinks": {
"apps": [],
"details": [
{
"appID": "ABCD1234.com.apple.wwdc",
"paths": [ "*" ]
}
]
}
}
說明:
appID:組成方式是 teamId.yourapp’s bundle identifier。如上面的 9JA89QQQQQ就是teamId。登陸開發者中心,在Account - Membership里面可以找到Team ID。
paths:設定你的app支持的路徑列表,只有這些指定的路徑的鏈接,才能被app所處理。星號的寫法代表了可識別域名下所有鏈接。
5.上傳該文件到你的域名所對應的根目錄或者.well-known目錄下,這是為了蘋果能獲取到你上傳的文件。上傳完后,自己先訪問一下,看看是否能夠獲取到,當你在瀏覽器中輸入這個文件鏈接后,應該是直接下載apple-app-site-association文件。
(不過我們并沒有上傳到更目錄,而且蘋果官方校驗并未通過,然并軟,我們在記事本上實驗通過)
千萬不要認為坑踩完了,還有一個很隱蔽的,本人讀了三遍蘋果英文文檔,文檔中都沒有寫,就是你分享的鏈接的域名和你點開鏈接里的打開按鈕web所替換的鏈接的域名一定不能相同,我被這個問題坑了一個月,怎么都調不起來應用。估計是微信和qq內部做了屏蔽,只有這兩個鏈接域名不一樣的時候才能調起應用
6.把這個域名給到你們的web人員手中,可以讓他在跳轉的按鈕功能進行配置,以及加入相關參數,我們可以在delegate中解析(但是需要注意的是這時鏈接后面就不需要添加://了)
func application(_ application: UIApplication, continue userActivity: NSUserActivity,
restorationHandler: @escaping ([Any]?) -> Void) -> Bool {
//判斷是從Universal Links進來的鏈接
if userActivity.activityType == NSUserActivityTypeBrowsingWeb {
let webpageURL = userActivity.webpageURL
// print("點擊的鏈接是:\(webpageURL)")
//進行后續的處理,根據參數進行相關跳轉,(參數你們自己定)
}
return true
}
)
三、讓后臺人員寫一個可以訪問的網頁,點擊短信中的鏈接,跳轉到網頁
在網頁中判斷是iOS端還是安卓端,然后自動跳轉對應的scheme,如果手機上安裝了App,則直接跳到App,如果沒有安裝App,則停留在當前網頁,在網頁上有一個去下載的按鈕,點擊按鈕可以去下載App。
如果需要跳到指定頁面,需要在發送短信時讓后臺人員將參數拼接在鏈接后邊,之后拼接到scheme后面帶到App中,然后我們在AppDelegate的-(BOOL)application: openURL和-(BOOL)application: openURL: options:的方法里接收傳入進來的url鏈接后面的參數,之后進行指定頁面的跳轉就可以了。\
[相關鏈接]
http://blog.csdn.net/kuangdacaikuang/article/details/52955070
https://yohunl.com/ios-universal-links-tong-yong-lian-jie/
http://blog.csdn.net/mo_xiao_mo/article/details/60954116
http://www.lxweimin.com/p/738ac2b8865d
http://www.lxweimin.com/p/ddf6c0b5f0fd
http://blog.csdn.net/nvlangxin/article/details/50896524