向後台應用程式發送測試訊息

要開始使用 FCM,請建立最簡單的用例:當應用程式位於裝置背景時,從通知編輯器向開發設備發送測試通知訊息。本頁面列出了實現此目的的所有步驟,從設定到驗證 - 如果您已經為 FCM設定了 Flutter 應用程序,它可能涵蓋您已經完成的步驟。

安裝 FCM 插件

  1. 如果您尚未安裝並初始化適用於 Flutter 的 Firebase SDK,請執行此操作。

  2. 從 Flutter 專案的根目錄中,執行以下命令來安裝外掛程式:

    flutter pub add firebase_messaging
    
  3. 完成後,重建您的 Flutter 應用程式:

    flutter run
    

訪問註冊令牌

若要將訊息傳送到特定設備,您需要知道該設備的註冊令牌。由於您需要在通知控制台的欄位中輸入令牌才能完成本教學課程,因此請確保在檢索令牌後複製令牌或安全地儲存它。

若要檢索應用程式實例的目前註冊令牌,請呼叫getToken() 。如果未授予通知權限,此方法將向使用者要求通知權限。否則,它會傳回一個令牌或由於錯誤而拒絕 future。

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

發送測試通知訊息

  1. 在目標裝置上安裝並執行應用程式。在 Apple 裝置上,您需要接受接收遠端通知的權限請求。

  2. 確保該應用程式位於裝置的背景。

  3. 在 Firebase 控制台中,開啟訊息傳遞頁面

  4. 如果這是您的第一個訊息,請選擇建立您的第一個行銷活動

    1. 選擇Firebase 通知訊息,然後選擇建立
  5. 否則,在「行銷活動」標籤上,選擇「新行銷活動」 ,然後選擇「通知」

  6. 輸入訊息文字。所有其他欄位都是可選的。

  7. 從右側窗格中選擇傳送測試訊息

  8. 在標記為 新增 FCM 註冊令牌 的欄位中,輸入您在本指南上一部分中獲得的註冊令牌。

  9. 選擇測試

選擇“測試”後,目標用戶端裝置(應用程式位於背景)應該會收到通知。

若要深入了解向您的應用程式發送的訊息,請參閱FCM 報告儀表板,該儀表板記錄Apple 和Android 裝置上發送和開啟的訊息數,以及Android 應用程式的「展示次數」(使用者看到的通知)數據。

處理互動

當用戶點擊通知時,Android 和 iOS 上的預設行為都是開啟應用程式。如果應用程式被終止,它將被啟動,如果它在後台,它將被帶到前台。

根據通知的內容,您可能希望在應用程式開啟時處理使用者的互動。例如,如果使用通知發送新的聊天訊息並且用戶選擇它,您可能希望在應用程式開啟時開啟特定對話。

firebase-messaging套件提供了兩種方法來處理此互動:

  1. getInitialMessage() :如果應用程式從終止狀態打開,則此方法傳回包含RemoteMessageFuture 。一旦使用, RemoteMessage將被刪除。
  2. onMessageOpenedApp :當應用程式從背景狀態開啟時發布RemoteMessage Stream

為了確保用戶獲得流暢的體驗,您應該處理這兩種情況。下面的程式碼範例概述瞭如何實現這一點:

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 應用程式中接收訊息以開始傳送到前台應用程式。

超越通知訊息

要為您的應用程式添加其他更高級的行為,您需要一個伺服器實作

然後,在您的應用程式用戶端中: