昨天成功地為App建立推播分享,能否創造一種更無縫、更使用者友善的體驗,讓使用者無論是點擊朋友分享的連結,還是點擊我們發送的推播通知,都能像穿越任意門一樣,直接被帶到App內的指定頁面?
而深層連結 (Deep Linking)是一種能將使用者從App外部(網站、另個App、通知)直接導向App內部特定內容的機制。今天就要來為App設定專屬的「地址」,並讓App知道如何接收和處理這些來自外部的「信件」。
第一部分:了解深層連結的種類
在實作之前,我們需要了解兩種主要的深層連結:
考量到只想做30天MVP的目標,將專注於實作第一種:Custom URL Schemes,因為它足以實現我們從推播通知跳轉到App的核心需求,且無需額外的網站設定。
第二步:設定平台的URL Scheme
要讓作業系統認得我們的專屬地址inspiration://,我們必須在Android和iOS的設定檔中進行「註冊」。
Step1. 用VS Code或Xcode打開ios/Runner/Info.plist 檔案。
Step2. 在 標籤的結尾( 之前)加入以下XML程式碼:
<key>CFBundleURLTypes</key>
<array>
<dict>
<key>CFBundleTypeRole</key>
<string>Editor</string>
<key>CFBundleURLName</key>
<string>com.example.threeInspiration</string> <key>CFBundleURLSchemes</key>
<array>
<string>inspiration</string> </array>
</dict>
</array>
Step1. 打開 android/app/src/main/AndroidManifest.xml檔案。
Step2. 找到 <activity android:name=".MainActivity" ...> 這個區塊。
Step3. 在 標籤之前,加入以下 區塊:
<intent-filter>
<action android:name="android.intent.action.VIEW"/>
<category android:name="android.intent.category.DEFAULT"/>
<category android:name="android.intent.category.BROWSABLE"/>
<data android:scheme="inspiration"/> </intent-filter>
成以上設定,App就已經具備了接收inspiration:// 連結的能力。
第三步:在Flutter中監聽傳入的連結
光能接收還不夠,我們還要在Flutter層監聽並處理這些連結。這裡我們將處理兩種情況:點擊分享連結和點擊推播通知。
Step1. 安裝套件:flutter pub add uni_links
Step2. 監聽連結:在App的主頁面(如HomePage)的initState中設定監聽器。
firebase_messaging套件本身就提供了監聽通知點擊事件的Stream,這是更現代且推薦的做法。
Stpe1. 修改main.dart: main函式中,加入背景訊息處理。
Step2. 修改n8n的FCM酬載 (Payload):
在Day 15的n8n工作流中,修改HTTP Request節點的Body,在message物件中加入data欄位。
現在App可以透過分享和通知,在App的內外自由穿梭,體驗大大提升,蛋目前我們的App對於使用者來說,還算停留在一個「單機」的體驗。如果使用者換了手機,或是想在平板上也使用App,所有的收藏資料都還停留在舊裝置上。
明天,將引入Firebase Firestore,將使用者的核心資料存儲到雲端,為多端同步打下堅實的基礎!
【哈囉你好:)感謝你的閱讀!其他我會常出沒的地方:Threads】