Swift Dynamic Link 動態連結
Dynamic Link 是Firebase所產生的Link
裡面會自動依照 OS 進行URL Scheme or Universal link 跳轉至App
。Firebase前置作業:
建立新專案,並綁定iOS Project填入Bundle Identifier
且將GoogleService-Info.plist放進專案中,並安裝好
pod ‘Firebase/Analytics’
。Firebase 應用程式設定:
設定-專案設定
最下方可以看到該專案綁定的iOS Project,
需要檢查是否填妥
1. App Store ID (若尚未上架,可以先隨意填,但必填)2. Team ID
App Store ID 當使用者未裝載App,可指引至App Store 讓使用者下載。
。Firebase Dynamic Links建立:
左側選取dynamic links,[開始使用]進入。
-
會先詢問想要在短網址上domain,盡量接近產品品牌名稱,讓使用者更肯定此連結為該品牌相關。亦可使用google提供網域註冊。
-
建立完成後,上方會顯示剛剛註冊的domain,表示列表皆為該前置字串系列。[新增動態連結]進行添加。
-
新增動態連結
1.本次所產生的短網址樣貌,可以隨機,亦可自訂一串網址。
2.訂定該短網址解出來的原網址內容。以及在列表上辨識該網址名稱。
3.設定該短網址點擊後的行為,因為想要進入iOS App,故選取所綁定的iOS App,當用戶沒有下載該App,可選擇轉向App Store or 自家官網。
Android App設定同上。
資料追蹤收集,可自行選填,完成後[建立]。
-
建立完成後,在列表上可見短連結,複製後可以貼在欲宣傳位置。點開網址可見點擊狀況,但不會馬上被收集,需要一點時間。
如果想添加其他前置字串,亦可點擊左上,有添加選項。
。App設定:
確認已安裝Analytics SDK & Dynamic Links SDK
pod 'Firebase/Analytics'
pod 'Firebase/DynamicLinks'
-
Xcode的Target 添加 Capability - Associated Domains
applinks: 剛設定的Domain
在UIApplicationDelegate: import Firebase
並在application:didFinishLaunchingWithOptions:
執行FirebaseApp.configure()
啟用Firebase。
再import FirebaseDynamicLinks
(需透過此SDK將接收到的短網址進行還原)
當 App 收到短網址,
- 觸發 1 號進入點:
application:continueUserActivity:restorationHandler:(iOS 9.0以上,不包含9.0)
可能來源:ex. Line open to this app .. or other app or other web
。userActivity.webpageURL
<URL> 物件
url: https://testApp.page.link/EYZz
。Firebase Method
//使用Firebase解析,解析後東西會在completion回傳
//App再進行解析及跳頁DynamicLinks.dynamicLinks().handleUniversalLink(url: ...) { (dynamicLink, error) in //回傳<DynamicLink> 物件
}
。DynamicLink 物件
<DynamicLink> 物件
FIRDynamicLink: 0x600002057400,
url: [https://test.com?page=home],
match type: unique,
minimumAppVersion: N/A,
match message: (null)
- 觸發 2 號進入點:
application:openURL:sourceApplication:annotation:(iOS 9.0+,不包含9.0)、application:openURL:options:(iOS 8.0以上 ~ iOS 9.0)
可能來源:ex. Facebook Message open to this app .. or 下載後第一次啟動App其中值得注意,第一次下載App有兩種情況:
- 自行從AppStore下載,啟動App時,雖然會觸發method,但所帶的dynamicLink.url 為nil。(indicating that the SDK failed to find a matching pending Dynamic Link.)
- 透過dynamicLink,發現尚未下載App,故導向AppStore進行下載,下載完畢後,啟動App時,觸發該method,所帶的dynamicLink 為剛剛點擊的dynamicLink內容,如果無痕模式也可能為nil。(when your app is opened for the first time after installation on any version of iOS.)
。url
<URL> 物件 (回傳為url encode,且內含原網址)Encode:url: YourAppBundleIdentifier://google/link/?match_type=weak&request_ip_version=…Decode還原:url: YourAppBundleIdentifiert://google/link/?match_type=weak&request_ip_version=xxx&utm_source=firebase&utm_campaign=YourDynamicTitle&utm_medium=dynamic_link&deep_link_id=YourRawUrl&match_message=Best (of many) pre-install links matched for this device.
。Firebase Method
//使用Firebase解析,解析成功會直接return值
//App再進行解析及跳頁if let dynamicLink = DynamicLinks.dynamicLinks().dynamicLink(fromCustomSchemeURL: url) {}
。DynamicLink 物件
<DynamicLink> 物件
FIRDynamicLink: 0x600002057400,
url: [https://test.com?page=home],
match type: unique,
minimumAppVersion: N/A,
match message: (null)
這樣就完成簡單的DeepLink實作。
再幫我拍拍手哦~讓我知道有人閱讀也對你有幫助~
可以幫我點個讚,或是分享一杯咖啡支持我。