我一個小菜鳥又開始分享最近做的東西啦,不足之處請大家多多指教.
最近公司要求做一個功能,將 app 中分享出去的文章,在微信打開相應app的 h5鏈接后,點擊頁面頂部一按鈕可跳轉到自己的 app 應用.如下圖所示:
點擊打開按鈕之后將跳轉自己的 app.
經過多方的查找資料,最終確定了使用 ios9出的Universal Links,下面我為大家講解一下使用的方法.
1.服務器需要做的處理:
第一,網站必須要有SSL證書(也就是支持https).(大家注意一下, SSL 證書必須要是機構認證的證書,比如騰訊云,阿里云,我推薦用阿里云免費得證書,我們也是用的這個證書.開始的時候我們用的自己公司個人認證的證書,在 app 啟動時不會自動下載在服務器存放的 json 文件,這點大家一定要注意)
第二,在網站根目錄下放一個名為“apple-app-site-association”的json文件,去除后綴“.json”,換句話說可以通過https://www.test.com/apple-app-site-association訪問到該文件。
"apple-app-site-association"文件內容如下:
{
"applinks":
{
"apps": [],
"details": [
{"appID":"teamID.bundleId”,
"paths": ["/deaplink","/wwdc/news/","*"]
},
{"appID":"ABCD1234.com.apple.wwdc","paths": ["*"]
}
]
}
}
appID 的 格式為teamID.bundleId形式。
如何獲取teamID呢?
登錄開發者網站,找到Membership選項卡。
teamId.png
appID具體顯示就是:xxxxxxxxxxx.com.mytest.app這種
paths
paths配置,實際上就是限制哪些路徑可以喚醒app,哪些路徑不能喚醒app。格式如下:
"paths": ["/wwdc/news/","NOT /videos/wwdc/2010/*","/videos/wwdc/201?/*"]
使用*配置,則整個網站都可以使用
使用特定的URL,例如/wwdc/news/來指定某一個特殊的鏈接
在特定URL后面添加*,例如/videos/wwdc/2015/*, 來指定網站的某一部分
除了使用*來匹配任意字符,你也可以使用?來匹配單個字符,你可以在路徑當中結合這兩個字符使用,例如/foo/*/bar/201?/mypage
需要注意的是:
配置的paths路徑,是區分大小寫的
驗證apple-app-site-association文件
文件配置完成之后,將其上傳到你的服務器根目錄或者.well-known這個子目錄下。
確保使用https://yourdomain.com/apple-app-site-association這個鏈接可以訪問到,yourdomain.com為你的服務器域名。
也可以使用蘋果的驗證網站,驗證文件是否能被蘋果請求到。如果是未上線的應用,使用驗證網站時可能出現如下提示:
Validation Tool.png
-出現該提示為apple-app-site-association文件配置正確。
-出現404錯誤碼提示,則為apple-app-site-association文件未上傳成功,或者使用https://yourdomain.com/apple-app-site-association路徑無法訪問。
2.建立web網頁和app應用之間的關聯 ->app IDs配置 和 項目配置
app IDs 配置
進入開發者網站,找到你自己的bundleId,可以點擊edit按鈕,開啟associate domains,如下圖:
associated domains.png
項目配置
在項目的Capablities中開啟Associated domains,如下圖:
appLinks.png
注意domains可以添加多個,前綴必須為applinks:,applinks:后為你的服務器的域名。
代碼接收Universal Links喚醒
-(BOOL)application:(UIApplication*)application continueUserActivity:(NSUserActivity*)userActivity restorationHandler:(void(^)(NSArray* _Nullable))restorationHandler{
NSLog(@"userActivity : %@",userActivity.webpageURL.description);
returnYES;
}
在appdelegate中實現上面這個方法,當使用Universal Links喚醒app時就執行這個方法。
3.驗證配置
快捷驗證,在備忘錄中輸入https://yourdomain.com/apple-app-site-association,長按這個鏈接,出現下圖提示則配置成功。
有的需求需要跳轉相應的界面可以通過 paths 這個字段設置其是否進行跳轉,還可設置不跳轉app 的路徑前面要加 NOT ,例如"NOT www.test.com/*",星號代表所有,還可以使用?等.
再向大家推薦一個方法測試是否從服務器請求到了 json 文件
使用charles抓包顯示,只有初次安裝app時才會去請求apple-app-site-association文件,所以測試時有可能因為網絡波動導致apple-app-site-association文件獲取失敗。這種情況,多卸載幾次,安裝時使用4G。
希望這篇文章對大家有所幫助,有什么不足之處請大家多多指教.有什么問題也可以留言詢問我.再向大家推薦一個基于Universal Links的第三方框架,LinkedMe,大家也可以用這個第三方,也比較簡單.
最后與大家分享一句話,"不積跬步,無以至千里;不積小流,無以成江海".加油!!