共用方式為


教學課程:使用 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. 在 [ 設定專案 ] 頁面上,執行下列動作:

    • 輸入應用程式的名稱。
    • 指定要用來儲存專案檔的位置。
    • 選取 完成

    設定專案

建立支援 FCM 的 Firebase 專案

  1. 登入 Firebase 主控台。 建立新的 Firebase 專案 (如果您還沒有 Firebase 專案的話)。

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

    新增 Firebase

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

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

      指定套件名稱

    • 選取 註冊應用程式

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

    下載Google服務

  5. 在 Firebase 主控台中,選取您專案的齒輪圖示。 然後選取 [專案設定]

    項目設定

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

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

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

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

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

    入口網站螢幕擷取畫面:啟用 Cloud Messaging API (舊版)。

設定通知中樞

  1. 登入 Azure 入口網站

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

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

    新增集線器

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

    1. Notification Hub中輸入名稱。

    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 Tools] 索引標籤。如果您尚未安裝 Google Play Services,請選取 [Google Play Services],如下圖所示。 然後選取 [套用] 來安裝。 請注意在稍後步驟中使用的 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 例外狀況。

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

後續步驟

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

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