共用方式為


教學課程:使用 Firebase SDK 1.0.0-preview1 版將推播通知傳送至 Android 裝置

本教學課程示範如何使用 Azure 通知中樞和 Firebase 雲端通訊 (FCM) SDK 的更新版本(1.0.0-preview1 版)將推播通知傳送至 Android 應用程式。 在本教學課程中,您會建立空白的Android應用程式,以使用Firebase雲端通訊 (FCM) 接收推播通知。

重要

自 2024 年 6 月起,FCM 舊版 API 將不再受到支援,且將會淘汰。 若要避免推播通知服務中的任何中斷,您必須 儘快移轉至 FCM v1 通訊協定

您可以從 GitHub 下載本教學課程的完整程式碼。

本教學課程涵蓋下列步驟:

  • 建立 Android Studio 專案。
  • 建立支援 Firebase 雲端傳訊的 Firebase 專案。
  • 建立通知中樞。
  • 連線 您的應用程式至中樞。
  • 測試應用程式。

必要條件

若要完成本教學課程,您必須擁有作用中的 Azure 帳戶。 如果您沒有帳戶,只需要幾分鐘的時間就可以建立免費試用帳戶。 如需詳細資料,請參閱 Azure 免費試用

注意

Azure 中國區域不支援Google/Firebase API。

您也需要下列項目:

  • 建議使用最新版本的 Android Studio
  • 最低支援為 API 層級 19。

建立 Android Studio 專案

第一個步驟是在 Android Studio 中建立專案:

  1. 啟動 Android Studio。

  2. 依序選取 [檔案]、[新增] 和 [新增專案]。

  3. 在 [ 選擇您的專案 ] 頁面上,選取 [空白活動],然後選取 [ 下一步]。

  4. 在 [ 設定專案 ] 頁面上,執行下列動作:

    1. 輸入應用程式的名稱。
    2. 指定要在其中儲存項目檔的位置。
    3. 選取 [完成]。

    設定專案

建立支援 FCM 的 Firebase 專案

  1. 登入 Firebase 控制台。 如果您還沒有 Firebase 專案,請建立新的 Firebase 專案。

  2. 建立項目之後,請選取 [將 Firebase 新增至 Android 應用程式]。

    新增 Firebase

  3. 在 [ 將 Firebase 新增至 Android 應用程式] 頁面上,執行下列動作:

    1. 針對Android套件名稱,複製應用程式 build.gradle 檔案中的 applicationId。 在此範例中為 com.fabrikam.fcmtutorial1app

      指定套件名稱

    2. 選取 [ 註冊應用程式]。

  4. 選取 [下載google-services.json],將檔案儲存到您專案的 app 資料夾中,然後選取 [下一步]。

    下載Google服務

  5. 在 Firebase 控制台中,選取項目的齒輪。 然後選取 [專案 設定]。

    專案設定

  6. 如果您尚未將google-services.json檔案下載Android Studio 專案的應用程式資料夾中,您可以在此頁面執行此動作。

  7. 切換至 [ 雲端傳訊] 索引 標籤。

  8. 複製並儲存 伺服器金鑰 以供稍後使用。 您可以使用此值來設定中樞。

  9. 如果您在 Firebase 雲端傳訊索引標籤上看不到伺服器密鑰,請遵循下列步驟:

    1. 選取雲端傳訊 API (舊版) 停用標題的三點功能表。
    2. 遵循在Google Cloud Console 中管理 API 的連結
    3. 在Google Cloud Console 中,選取按鈕以啟用Google雲端通訊 API。
    4. 請等待數分鐘。
    5. 返回您的 Firebase 控制台專案 Cloud Messaging 索引標籤,然後重新整理頁面。
    6. 查看雲端傳訊 API 標頭已變更為 已啟用 雲端傳訊 API(舊版),現在會顯示伺服器密鑰。

    顯示啟用雲端通訊 API(舊版)的入口網站螢幕快照。

設定通知中樞

  1. 登入 Azure 入口網站

  2. 選取左側功能表上的 [所有服務],然後在 [行動裝置] 區段中選取 [通知中]。 選取服務名稱旁邊的星號圖示,將服務加到左功能表上的 [我的最愛] 區段。 將 [通知中樞] 新增至 [我的最愛] 之後,在左功能表上予以選取。

  3. 在 [通知中 樞] 頁面上,選取 工具欄上的 [新增 ]。

    新增中樞

  4. 在 [通知中 樞] 頁面上,執行下列動作:

    1. 在通知中樞輸入名稱。

    2. 在 [建立新命名空間] 中輸入名稱。 命名空間包含一或多個中樞。

    3. 從 [位置] 下拉式清單中選取值。 此值會指定您要在其中建立中樞的位置。

    4. 在資源群組中 選取現有的資源群組,或建立新的資源群組

    5. 選取 建立

      建立中樞

  5. 選取 [通知 ] (鈴鐺圖示),然後選取 [移至資源]。 您也可以在 [通知中 ] 頁面上重新整理清單,然後選取您的中樞。

    選取中樞

  6. 從清單中選取 [ 存取原則 ]。 請注意,有兩個 連接字串 可供使用。 您稍後需要他們來處理推播通知。

    存取原則

    重要

    請勿在應用程式中使用 DefaultFullSharedAccessSignature 原則。 此原則僅供應用程式後端使用。

設定中樞的 Firebase 雲端通訊設定

  1. 在左窗格中的 [設定] 底下選取 [Google][GCM/FCM]。

  2. 輸入您稍早儲存之 FCM 專案的伺服器金鑰

  3. 在工具列上,選取 [ 儲存]。

    伺服器金鑰

  4. Azure 入口網站 會顯示中樞已成功更新的訊息。 [ 儲存] 按鈕已停用。

您的通知中樞現在已設定為使用 Firebase 雲端通訊。 您也有將通知傳送至裝置並註冊應用程式以接收通知所需的 連接字串。

將您的應用程式 連線 至通知中樞

將Google Play服務新增至專案

  1. 在 Android Studio 中,選取 功能表上的 [工具 ],然後選取 [SDK 管理員]。

  2. 選取專案中所使用的 Android SDK 目標版本。 然後選取 [ 顯示套件詳細數據]。

    SDK 管理員

  3. 如果尚未安裝,請選取 [Google API]。

    API

  4. 切換至 [ SDK 工具] 索引 標籤。如果您尚未安裝Google Play服務,請選取 [Google Play 服務 ],如下圖所示。 然後選取 [ 套用 ] 進行安裝。 請記下 SDK 路徑,以供後續步驟使用。

    播放服務

  5. 如果您看到 [ 確認變更 ] 對話框,請選取 [ 確定]。 元件安裝程式會安裝要求的元件。 安裝元件之後,選取 [ 完成 ]。

  6. 選取 [確定] 以關閉 [新增專案] 對話框的 [設定]。

新增 Azure 通知中樞連結庫

  1. 應用程式的 build.gradle 檔案中,於 [相依性] 區段中新增下列幾行:

    implementation 'com.microsoft.azure:notification-hubs-android-sdk-fcm:1.1.4'
    implementation 'androidx.appcompat:appcompat:1.4.1'
    implementation 'com.android.volley:volley:1.2.1'
    
  2. 在 [相依性] 區段之後新增下列存放庫:

    dependencyResolutionManagement {
     repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)
     repositories {
         google()
         mavenCentral()
         maven { url 'https://example.io' }
     }
    }
    

新增Google Firebase支援

  1. 如果檔案尚未存在,請在檔案結尾新增下列外掛程式。

    apply plugin: 'com.google.gms.google-services'
    
  2. 選取工具列上的 [ 立即 同步處理]。

新增程式碼

  1. 建立 NotificationHubListener 物件,此對象會處理從 Azure 通知中樞攔截訊息。

    public class CustomNotificationListener implements NotificationListener {
    
       @override
       public void onNotificationReceived(Context context, RemoteMessage message) {
    
          /* The following notification properties are available. */
          Notification notification = message.getNotification();
          String title = notification.getTitle();
          String body = notification.getBody();
          Map<String, String> data = message.getData();
    
          if (message != null) {
             Log.d(TAG, "Message Notification Title: " + title);
             Log.d(TAG, "Message Notification Body: " + message);
          }
    
          if (data != null) {
              for (Map.Entry<String, String> entry : data.entrySet()) {
                  Log.d(TAG, "key, " + entry.getKey() + " value " + entry.getValue());
              }
          }
       }
    }
    
  2. OnCreate 類別的 MainActivity 方法中,新增下列程序代碼,以在建立活動時啟動通知中樞初始化程式:

    @Override
    protected void onCreate(Bundle savedInstanceState) {
    
       super.onCreate(savedInstanceState);
       setContentView(R.layout.activity_main);
       NotificationHub.setListener(new CustomNotificationListener());
       NotificationHub.start(this.getApplication(), "Hub Name", "Connection-String");
    
    }
    
  3. 在 Android Studio 的功能表欄上,選取 [建置],然後選取 [重建專案 ],以確定程式代碼中沒有任何錯誤。 如果您收到ic_launcher圖示的相關錯誤,請從AndroidManifest.xml檔案中移除下列語句:

    android:icon="@mipmap/ic_launcher"
    
  4. 請確定您有執行應用程式的虛擬設備。 如果您沒有帳戶,請新增一個,如下所示:

    1. 裝置管理員

    2. 虛擬裝置

    3. 在選取的裝置上執行應用程式,並確認它已成功向中樞註冊。

      裝置註冊

      注意

      註冊可能會在初始啟動期間失敗,直到 onTokenRefresh() 呼叫實例標識符服務的方法為止。 重新整理應該會起始通知中樞的成功註冊。

傳送測試通知

您可以從 Azure 入口網站 將推播通知傳送至通知中樞,如下所示:

  1. 在 [Azure 入口網站] 中,於中樞的通知中樞頁面上,選取 [疑難解答] 區段中的 [測試傳送]。

  2. [平臺] 中,選取 [Android]。

  3. 請選取傳送。 您尚未在 Android 裝置上看到通知,因為您尚未在裝置上執行行動應用程式。 執行行動應用程式之後,請再次選取 [ 傳送 ] 按鈕以查看通知訊息。

  4. 請參閱入口網站頁面底部清單中作業的結果。

    傳送測試通知

  5. 您會在裝置上看到通知訊息。

推播通知通常會在後端服務中傳送,例如Mobile Apps或使用相容的連結庫 ASP.NET。 如果後端無法使用連結庫,您也可以直接使用 REST API 來傳送通知訊息。

在模擬器上執行行動應用程式

在模擬器內測試推播通知之前,請確定模擬器映像支援您為應用程式選擇的Google API層級。 如果您的映像不支援原生 Google API,您可能會收到 SERVICE_NOT_AVAILABLE 例外狀況。

此外,請確定您已在 設定> Accounts 下將 Google 帳戶新增至執行中的模擬器。 否則,嘗試向 FCM 註冊可能會導致 AUTHENTICATION_FAILED 例外狀況。

下一步

在本教學課程中,您已使用 Firebase 雲端通訊,將通知廣播至已向服務註冊的所有 Android 裝置。 若要瞭解如何將通知推送至特定裝置,請繼續進行下列教學課程:

以下是傳送通知的一些其他教學課程清單: