傳送測試訊息至背景執行的應用程式

如要開始使用 FCM,請建立最簡單的用途:傳送 測試通知訊息 通知編輯器至開發裝置 應用程式於裝置背景運作時。 本頁面列出從設定到驗證,完成的所有步驟 - 其中可能包含您已完成的步驟 (如果您 已經設定 Flutter 應用程式

安裝 FCM 外掛程式

  1. 安裝並初始化 Flutter 適用的 Firebase SDK 如果尚未建立

  2. 在 Flutter 專案的根目錄中執行下列指令,以安裝 外掛程式:

    flutter pub add firebase_messaging
    
  3. 完成後,請重新建構 Flutter 應用程式:

    flutter run
    

存取註冊權杖

如要傳送訊息至特定裝置,您需要知道該裝置的 註冊權杖因為您必須在 透過通知控制台完成本教學課程,請務必複製權杖 或在擷取後妥善保存

如要擷取應用程式執行個體目前的註冊權杖,請呼叫 getToken()。如果使用者尚未授予通知權限,這個方法會 要求使用者授予通知權限。如果沒有,則會傳回符記 拒絕未來。

final fcmToken = await FirebaseMessaging.instance.getToken();

傳送測試通知訊息

  1. 在目標裝置上安裝並執行應用程式。如果你使用 Apple 裝置, 接受接收遠端通知的要求。

  2. 確認應用程式在裝置的背景執行。

  3. 在 Firebase 控制台中開啟「Messaging」頁面。

  4. 如果這是第一則訊息,請選取「建立您的第一則訊息」 廣告活動

    1. 選取「Firebase 通知訊息」,然後選取「建立」
  5. 或者,在「廣告活動」分頁中選取「新增廣告活動」 點選「通知」

  6. 輸入訊息文字。所有其他欄位皆為選填。

  7. 從右側窗格中選取「Send test message」

  8. 在標示為「新增 FCM 註冊權杖」的欄位中輸入註冊資訊 取得的符記

  9. 選取「測試」

選取「測試」後,目標用戶端裝置 (應用程式位於 背景) 應接收通知。

如要進一步瞭解訊息傳送至應用程式的資訊,請參閱 FCM 報表資訊主頁 這項服務會記錄在 Apple 和 Android 裝置上傳送及開啟的訊息數量 以及「曝光」資料(使用者看到的通知) Android 應用程式。

處理互動

使用者輕觸通知時,Android 和 iOS 裝置的預設行為iOS 即可開啟應用程式。如果應用程式遭到終止 系統會隨即開始運作;如果位於背景,就會移至前景。

根據通知內容,您可能需要處理應用程式當使用者的互動情形 開啟後,舉例來說,假設有人透過通知傳送新的即時通訊訊息,使用者選取該訊息時,建議您 應用程式開啟時,開啟特定對話。

firebase-messaging 套件提供兩種處理這類互動的方式:

  1. getInitialMessage():如果應用程式是從已終止的狀態開啟,此方法會傳回包含 RemoteMessageFuture。用完後,系統會移除 RemoteMessage
  2. onMessageOpenedAppStream,當從應用程式開啟應用程式時,會發布 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 應用程式中接收訊息 就可以開始將應用程式傳送到前景中

不再侷限於通知訊息

如要為應用程式新增其他進階行為,您需要 伺服器實作

接著,在應用程式用戶端中: