如要開始使用 FCM,請建立最簡單的用途:傳送 測試通知訊息 通知編輯器至開發裝置 應用程式於裝置背景運作時。 本頁面列出從設定到驗證,完成的所有步驟 - 其中可能包含您已完成的步驟 (如果您 已經設定 Flutter 應用程式 。
安裝 FCM 外掛程式
在 Flutter 專案的根目錄中執行下列指令,以安裝 外掛程式:
flutter pub add firebase_messaging
完成後,請重新建構 Flutter 應用程式:
flutter run
存取註冊權杖
如要傳送訊息至特定裝置,您需要知道該裝置的 註冊權杖因為您必須在 透過通知控制台完成本教學課程,請務必複製權杖 或在擷取後妥善保存
如要擷取應用程式執行個體目前的註冊權杖,請呼叫
getToken()
。如果使用者尚未授予通知權限,這個方法會
要求使用者授予通知權限。如果沒有,則會傳回符記
拒絕未來。
final fcmToken = await FirebaseMessaging.instance.getToken();
傳送測試通知訊息
在目標裝置上安裝並執行應用程式。如果你使用 Apple 裝置, 接受接收遠端通知的要求。
確認應用程式在裝置的背景執行。
如果這是第一則訊息,請選取「建立您的第一則訊息」 廣告活動。
- 選取「Firebase 通知訊息」,然後選取「建立」。
或者,在「廣告活動」分頁中選取「新增廣告活動」 點選「通知」。
輸入訊息文字。所有其他欄位皆為選填。
從右側窗格中選取「Send test message」。
在標示為「新增 FCM 註冊權杖」的欄位中輸入註冊資訊 取得的符記
選取「測試」。
選取「測試」後,目標用戶端裝置 (應用程式位於 背景) 應接收通知。
如要進一步瞭解訊息傳送至應用程式的資訊,請參閱 FCM 報表資訊主頁 這項服務會記錄在 Apple 和 Android 裝置上傳送及開啟的訊息數量 以及「曝光」資料(使用者看到的通知) Android 應用程式。
處理互動
使用者輕觸通知時,Android 和 iOS 裝置的預設行為iOS 即可開啟應用程式。如果應用程式遭到終止 系統會隨即開始運作;如果位於背景,就會移至前景。
根據通知內容,您可能需要處理應用程式當使用者的互動情形 開啟後,舉例來說,假設有人透過通知傳送新的即時通訊訊息,使用者選取該訊息時,建議您 應用程式開啟時,開啟特定對話。
firebase-messaging
套件提供兩種處理這類互動的方式:
getInitialMessage()
:如果應用程式是從已終止的狀態開啟,此方法會傳回包含RemoteMessage
的Future
。用完後,系統會移除RemoteMessage
。onMessageOpenedApp
:Stream
,當從應用程式開啟應用程式時,會發布RemoteMessage
背景狀態。
為了確保使用者享有流暢的體驗,你應該同時處理上述兩種情況。程式碼範例 下文將概述如何達到這個目標:
class Application extends StatefulWidget {
@override
State<StatefulWidget> createState() => _Application();
}
class _Application extends State<Application> {
// In this example, suppose that all messages contain a data field with the key 'type'.
Future<void> setupInteractedMessage() async {
// Get any messages which caused the application to open from
// a terminated state.
RemoteMessage? initialMessage =
await FirebaseMessaging.instance.getInitialMessage();
// If the message also contains a data property with a "type" of "chat",
// navigate to a chat screen
if (initialMessage != null) {
_handleMessage(initialMessage);
}
// Also handle any interaction when the app is in the background via a
// Stream listener
FirebaseMessaging.onMessageOpenedApp.listen(_handleMessage);
}
void _handleMessage(RemoteMessage message) {
if (message.data['type'] == 'chat') {
Navigator.pushNamed(context, '/chat',
arguments: ChatArguments(message),
);
}
}
@override
void initState() {
super.initState();
// Run code required to handle interacted messages in an async function
// as initState() must not be async
setupInteractedMessage();
}
@override
Widget build(BuildContext context) {
return Text("...");
}
}
處理互動的方式取決於應用程式設定。以上範例
顯示了使用 StatefulWidget
的基本範例。
後續步驟
將訊息傳送至前景設定的應用程式
在您在應用程式運作期間成功傳送通知訊息後 請參閱 在 Flutter 應用程式中接收訊息 就可以開始將應用程式傳送到前景中
不再侷限於通知訊息
如要為應用程式新增其他進階行為,您需要 伺服器實作。
接著,在應用程式用戶端中: