請按照下列步驟在 Flutter 上設定 FCM 用戶端。
平台專屬設定和需求
部分必要步驟視您指定的平台而定。
iOS+
在 Xcode 中啟用應用程式功能
應用程式必須先在 Xcode 專案中啟用推播通知和背景模式,才能開始接收訊息。
上傳 APNs 驗證金鑰
使用 FCM 前,請先將 APNs 憑證上傳至 Firebase。如果您尚未取得 APN 憑證,請前往 Apple Developer Member Center 建立。
- 在 Firebase 控制台的專案中,依序選取齒輪圖示 >「Project Settings」,然後選取「Cloud Messaging」分頁標籤。
- 為您的開發憑證和/或正式版憑證選取 [Upload Certificate] (上傳憑證) 按鈕。至少須提供一個。
- 為每個憑證選取 .p12 檔案,並提供密碼 (如果有的話)。確認這個憑證的軟體包 ID 與應用程式的軟體包 ID 相符,請選取「Save」(儲存)。
方法滑動
如要在 Apple 裝置上使用 FCM Flutter 外掛程式,請勿停用方法 swizzling。您必須進行 swizzling,否則 Firebase 的重要功能 (例如 FCM 符記處理) 將無法正常運作。
Android
Google Play 服務
FCM 用戶端需要搭載 Android 4.4 以上版本且已安裝 Google Play 服務的裝置,或是搭載 Android 4.4 且使用 Google API 的模擬器。請注意,您不限於透過 Google Play 商店部署 Android 應用程式。
依賴 Play 服務 SDK 的應用程式在存取 Google Play 服務功能前,應一律檢查裝置是否有相容的 Google Play 服務 APK。建議您在兩個位置執行此操作:主要活動的 onCreate()
方法和 onResume()
方法。onCreate()
中的檢查可確保應用程式在檢查成功前無法使用。onResume()
中的檢查可確保使用者透過其他方式 (例如透過返回按鈕) 返回執行中的應用程式時,仍會執行檢查。
如果裝置沒有相容的 Google Play 服務版本,應用程式可以呼叫 GoogleApiAvailability.makeGooglePlayServicesAvailable()
,讓使用者從 Play 商店下載 Google Play 服務。
網路
透過 FCM 設定網路憑證
FCM 網頁介面會使用名為「Voluntary Application Server Identification」或「VAPID」的網頁憑證金鑰,授權將要求傳送至支援的網路推播服務。如要讓應用程式訂閱推播通知,您必須將一組鍵與 Firebase 專案建立關聯。您可以產生新的金鑰組,也可以透過 Firebase 控制台匯入現有的金鑰組。
產生新的金鑰組
在「網路推播憑證」分頁中,按一下「產生金鑰組」。主控台會顯示金鑰組已產生的通知,並顯示公開金鑰字串和新增日期。
匯入現有的金鑰組
如果您已在網頁應用程式中使用現有的金鑰組,可以將其匯入 FCM,以便透過 FCM API 存取現有的網頁應用程式執行個體。如要匯入金鑰,您必須擁有 Firebase 專案的擁有者級存取權。以 Base64 URL 安全編碼格式匯入現有的公開金鑰和私密金鑰:
在「網路推送憑證」分頁中,找出並選取「匯入現有的金鑰組」連結文字。
在「Import a key pair」對話方塊中,在對應的欄位中提供公開和私密金鑰,然後按一下「Import」。主控台會顯示公開金鑰字串和新增日期。
如要進一步瞭解金鑰格式和產生方式,請參閱「應用程式伺服器金鑰」。
安裝 FCM 外掛程式
如果尚未安裝,請安裝並初始化 Flutter 專用的 Firebase 外掛程式。
在 Flutter 專案的根目錄中執行下列指令,以安裝外掛程式:
flutter pub add firebase_messaging
完成後,請重新建構 Flutter 應用程式:
flutter run
存取註冊權杖
如要傳送訊息給特定裝置,您必須知道該裝置的註冊權杖。您必須在「通知」控制台的欄位中輸入權杖,才能完成本教學課程。因此,請務必在擷取權杖後複製或安全地儲存權杖。
如要擷取應用程式例項目前的註冊權杖,請呼叫 getToken()
。如果使用者尚未授予通知權限,這個方法會要求使用者授予通知權限。否則,則會傳回憑證,或因發生錯誤而拒絕 Future。
// You may set the permission requests to "provisional" which allows the user to choose what type
// of notifications they would like to receive once the user receives a notification.
final notificationSettings = await FirebaseMessaging.instance.requestPermission(provisional: true);
// For apple platforms, ensure the APNS token is available before making any FCM plugin API calls
final apnsToken = await FirebaseMessaging.instance.getAPNSToken();
if (apnsToken != null) {
// APNS token is available, make FCM plugin API requests...
}
在網站平台上,請將 VAPID 公開金鑰傳遞至 getToken()
:
final fcmToken = await FirebaseMessaging.instance.getToken(vapidKey: "BKagOny0KF_2pCJQ3m....moL0ewzQ8rZu");
如要隨時收到符記更新通知,請訂閱 onTokenRefresh
串流:
FirebaseMessaging.instance.onTokenRefresh
.listen((fcmToken) {
// TODO: If necessary send token to application server.
// Note: This callback is fired at each app startup and whenever a new
// token is generated.
})
.onError((err) {
// Error getting token.
});
防止自動初始化
產生 FCM 註冊權杖後,程式庫會將 ID 和設定資料上傳至 Firebase。如果您想避免符記自動產生,請在建構期間停用自動初始化功能。
iOS
在 iOS 上,請將中繼資料值新增至 Info.plist
:
FirebaseMessagingAutoInitEnabled = NO
Android
在 Android 上,將這些中繼資料值新增至 AndroidManifest.xml
,即可停用 Analytics 收集和 FCM 自動初始化功能 (必須同時停用這兩項功能):
<meta-data
android:name="firebase_messaging_auto_init_enabled"
android:value="false" />
<meta-data
android:name="firebase_analytics_collection_enabled"
android:value="false" />
在執行階段重新啟用 FCM 自動初始化功能
如要為特定應用程式執行個體啟用自動初始化功能,請呼叫 setAutoInitEnabled()
:
await FirebaseMessaging.instance.setAutoInitEnabled(true);
設定後,這個值會在應用程式重新啟動時保留。
後續步驟
設定完用戶端應用程式後,您就可以開始使用通知編寫工具傳送下游訊息。請參閱「傳送測試訊息至背景應用程式」一文。
如要在應用程式中新增其他進階行為,您需要伺服器導入程序。
接著,在應用程式用戶端中執行下列操作: