請按照下列步驟在 Flutter 上設定 FCM 用戶端。
特定平台的設定和需求
某些必要步驟取決於您指定的平台。
iOS+
在 Xcode 中啟用應用程式功能
您必須先啟用推送功能,應用程式才能開始接收訊息 通知及背景模式。
上傳 APN 驗證金鑰
使用 FCM 前,請將 APN 憑證上傳至 Firebase。如果您不 已有 APN 憑證,請在 Apple Developer Member Center:
- 在 Firebase 控制台的專案中選取齒輪圖示,然後選取 「Project Settings」,然後選取「Cloud Messaging」分頁標籤。
- 選取開發憑證的「Upload Certificate」按鈕。 實際工作環境憑證或兩者皆有。(至少要輸入一個)。
- 為每個憑證選取 .p12 檔案,並提供密碼 (如果有的話) 不限。請確定這個憑證的軟體包 ID 與 選取「Save」(儲存)。
方法滑動
如要在 Apple 裝置上使用 FCM Flutter 外掛程式,請勿停用上述方法 搖擺。必須使用 Swizz,如果沒有的話,還有一些 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 設定 Web 憑證
FCM 網頁介面使用稱為「自願應用程式伺服器」的 Web 憑證 身分」或「VAPID」金鑰,以便授權向支援的網路傳送要求 推播服務如要訂閱應用程式推播通知,你必須完成下列步驟: 將一組金鑰連結至 Firebase 專案。您可以產生 建立新的金鑰組,或透過 Firebase 控制台匯入現有的金鑰組。
產生新的金鑰組
開啟雲端通訊 Firebase 控制台的「設定」窗格,然後捲動至 「網頁設定」部分。
在「網路推送憑證」分頁中,按一下「產生金鑰配對」。 控制台會顯示金鑰組已產生的通知,並 已新增公開金鑰字串和日期。
匯入現有的金鑰組
如果目前已有金鑰組已用於網頁應用程式, 能匯入 FCM 讓您可以連上現有的網頁應用程式 透過 FCM API 管理執行個體如要匯入金鑰,您必須具備 具備 Firebase 專案的擁有者層級存取權將現有的公開和 私密金鑰 (採用 Base64 網址安全編碼格式):
開啟雲端通訊 Firebase 控制台的「設定」窗格,然後捲動至 「網路設定」部分。
在「網路推播憑證」分頁中,找出並選取連結文字「匯入」 現有的金鑰組」
在「Import a keyPair」(匯入金鑰組) 對話方塊中,提供您的公開和私密金鑰 然後按一下「匯入」。控制台會顯示 已新增公開金鑰字串和日期。
如要進一步瞭解金鑰的格式和產生方式, 請參閱應用程式伺服器金鑰。
安裝 FCM 外掛程式
在 Flutter 專案的根目錄中執行下列指令,以安裝 外掛程式:
flutter pub add firebase_messaging
完成後,請重新建構 Flutter 應用程式:
flutter run
存取註冊權杖
如要傳送訊息至特定裝置,您需要知道該裝置的 註冊權杖因為您必須在 透過通知控制台完成本教學課程,請務必複製權杖 或在擷取後妥善保存
如要擷取應用程式執行個體目前的註冊權杖,請呼叫
getToken()
。如果使用者尚未授予通知權限,這個方法會
要求使用者授予通知權限。如果沒有,則會傳回符記
拒絕未來。
// 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 註冊權杖時,系統會上傳程式庫 傳遞到 Firebase 所需的 ID 和設定資料如果您想 符記自動產生,在建構時停用自動初始化。
iOS
在 iOS 上,將中繼資料值新增至 Info.plist
:
FirebaseMessagingAutoInitEnabled = NO
Android
在 Android 上,停用 Analytics 收集和 FCM 自動初始化 (必須
停用這兩項功能),方法是將下列中繼資料值新增至 AndroidManifest.xml
:
<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);
設定這個值後,每次重新啟動的應用程式都會保留這個值。
後續步驟
用戶端應用程式設定完成後,您就可以開始傳送下游 包含 通知編輯器。 請參閱「將測試訊息傳送至背景應用程式」。
如要為應用程式新增其他進階行為,您需要 伺服器實作。
接著,在應用程式用戶端中: