---
# System prepended metadata

title: APP Links
tags: [Android]

---

###### tags: `Android`
# APP Links

Deep Link & APP Link
https://developer.android.com/training/app-links?hl=zh-tw

# Firebase Dynamic Link
## Firebase 環境配置
1. 連結 Firebase 與專案
2. 在 Firebase 設定 Android 的 SHA256、iOS 的 App Store ID、團隊 ID
3. 在 Firebase 開啟動態連結服務


android 可參考以下連結取得 SHA256
[Android | 取得 MD5、SHA1、SHA256 金鑰指紋](https://medium.com/@ab20803/android-%E5%8F%96%E5%BE%97-md5-sha1-sha256-%E9%87%91%E9%91%B0%E6%8C%87%E7%B4%8B-1e7e28382d24)

## 產生連結
產生連結分成手動產生、程式碼產生，手動產生只要至 Firebase 後台即可產生

這裡我們使用程式碼產生連結，可以利用 Firebase 套件或 Rest API 產生連結

:::success
不同平台給予的參數都一致時，產生的連結會一致，能用此方式判斷不同平台的參數是否相同
:::

## 獲取連結資訊
我們需要設定 intent filter 辨別要接受的資料來源，因此要在 manifest 設定
設定完成後，使用 Firebase 套件來處理 intent 的資訊

要注意的事情是如果 activity 的啟動模式有調整，要記得將處理 intent 的程式碼放在 onNewIntent 的週期中
因為這跟啟動模式有關係，處理好才能保證在各種不同的情況下，點擊連結時能接到後續的邏輯

## 注意事項
1. 在開啟動態連結服務前，記得要幫專案設定 SHA256、App Store ID、團隊 ID，否則 iOS 可能會發生無法導覽的問題
2. 產生連結時 NavigationInfoParameters 的 setForcedRedirectEnabled 不要設定，這會導致 iOS 無法導覽到 APP，雖然也不清楚這個參數的用途
3. 不同平台給予的參數都一致時，產生的連結會一致，能用此方式判斷不同平台的參數是否相同

## 參考資料
https://medium.com/@wsrew2000/firebase-dynamic-link%E6%A1%88%E4%BE%8B%E7%A0%94%E7%A9%B6-5f057f6b9903
https://firebase.google.com/docs/dynamic-links/create-links?hl=zh-cn
[Android深度链接 Deep Links 和 App Links](https://www.jianshu.com/p/1632be1c2451)
[Android DeepLink介绍与使用](https://juejin.im/post/5d8d8646e51d45784e447b70)
[Android App Links 設定心得筆記](https://medium.com/@louis383/android-app-links-%E8%A8%AD%E5%AE%9A%E5%BF%83%E5%BE%97%E7%AD%86%E8%A8%98-6bd8ab212297)
[Android中使用App Links](https://www.jianshu.com/p/4ae1ae21cbdd)
[Android Firebase接入（二）--Firebase 動態連結（Dynamic Links）](https://www.itread01.com/content/1545573271.html)