Universal Link踩坑與研究

拾雪發表於2017-12-13

更新 18.02.27

Universal Link也被微信封堵了。見味精大神的 blog: juejin.im/post/5a5371…


Universal link 簡介

Apple官方文件連結:developer.apple.com/library/con…

通用連結是蘋果於iOS9時推出的一種無縫跳轉技術。

官方介紹如下:

“當您支援通用連結時,iOS使用者可以點選連結到您的網站,並無縫地重定向到已安裝的應用程式,而無需通過Safari。如果您的應用未安裝,點選連結到您的網站在Safari中開啟您的網站。

相比之前的custom URL schemes方式,通用連結有以下優點:

獨有.不像 custom URL schemes, 通用連結不會被別的應用宣告, 因為他們用標準HTTP或HTTPS連結至您的網站.

安全.當使用者安裝你的應用時,iOS系統會校驗你上傳至網站的檔案以確保您的網站允許您的應用程式代表其開啟URLs,只有你能建立和上傳這個檔案,所以網站與應用之間的關聯是安全的.

靈活.如果您的應用沒有安裝,通用連結亦會正常運轉.當應用沒有安裝,將會如使用者所期望的在safari中開啟.

簡單.一個URL可以同時供網站與app使用.

私有.其他應用與您的應用之間的交流無需知道您的應用是否安裝.”

(url:developer.apple.com/library/con…

建立通用連結

這個按照官方文件按步照班即可,或者參考以下連結:

dev.branch.io/getting-sta…

strivingboy.github.io/blog/2015/0…

通用連結的現狀

現狀:

1.目前我們的應用已經支援通用連結,但不能從微信中直接跳轉至我們的應用。

2.用了一段時間之後通用連結失效。

3.對於部分手機偶現的所有APP的通用連結失效問題,已經詢問蘋果開發人員,目前尚未有回應。

已解決的問題:

1.在微信中無法跳轉

因為之前在微信中跳轉的domain域是相同的,所以導致從微信中無法跳轉至我們的應用。

按如下操作:

a.在微信中開啟的url為 https://a.xxx.com/zzz 的網頁

b.點選該網頁上通用連結的按鈕,通用連結為a.xxx.com/yyy

會發現跳轉失敗,頁面仍在微信網頁中開啟。

將步驟b中的通用連結改為:b.xxx.com/yyy再點選開啟即可順利跳轉至我們的應用。

蘋果官方解釋如下:

“When a user is browsing your website in Safari and they tap a universal link to a URLin the same domainas the current webpage, iOS respects the user’s most likely intent and opens the link in Safari.If the user taps a universal link to a URL in a different domain, iOS opens the link in your app.”(url:developer.apple.com/library/con…

即:相同domain的情況下的跳轉,iOS系統會認為使用者更傾向於在網頁中繼續跳轉,所以不會跳轉至對應的應用。

2.用了一段時間之後通用連結失效

原因: 使用通用連結跳轉至我們應用後,點選狀態列右邊的的 xxx.com 按鈕,通用連結失效。

點選該按鈕會被iOS認為是關閉用應用開啟URL的功能。所以之後無法使用應用開啟URL。

解決方案:將URL在safari中開啟,然後往下拉會發現出現如下圖的banner,點選右邊的開啟按鈕即可恢復。

蘋果官方解釋如下:

When a user taps a universal link that you handle, iOS also examines the user’s recent choices to determine whether to open your app or your website. For example, a user who  has tapped a universal link to open your app can later choose to open your website in Safari by tapping a breadcrumb button in the status bar. After the user makes this choice, iOS  continues to open your website in Safari until the user chooses to open your app by tapping OPEN in the Smart App Banner on the webpage.

(url:developer.apple.com/library/con…

沒有解決的一些疑問:

問題現象:部分裝置重啟之後,通用連結失效

1.為什麼裝置重啟之後通用連結會失效?

部分裝置重啟之後,丟失apple-app-site-association檔案,導致url與應用之間的無法關聯。從而導致通用連結失效。

2.為什麼會丟失apple-app-site-association檔案?

apple-app-site-association檔案丟失屬於系統級別的問題,目前沒有很好的解釋。

3.apple-app-site-association檔案會重新下載嗎?

目前蘋果官方解釋是隻有在app安裝的時候才會去請求下載驗證該檔案。

“When the app is installed, the system downloads and verifies the site association file for each of its associated domains. If the verification is successful, the app is associated with    the domain.”(url:developer.apple.com/reference/s…

另外有猜測在應用更新時,也會去請求下載該檔案。

(見:forums.developer.apple.com/thread/3017…forums.developer.apple.com/thread/6972)

4.該通用連結失效時其他應用的通用連結能生效嗎?

由於樣本較少,就目前觀察的情況而言,裝置重啟之後的失效會導致所有應用的通用連結失效。

5.有沒有能解決的方案?

刪除並重新安裝應用可以修復,但目前沒有確鑿的官方解釋來佐證。

在stackFlow (stackoverflow.com/questions/3…)以及 蘋果開發者論壇    (forums.developer.apple.com/message/156…)上有類似的問題,目前尚未有解答。正在持續關注。


相關文章