教學課程:使用 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 中建立專案:
啟動 Android Studio。
依序選取 [檔案]、[新增] 和 [新增專案]。
在 [ 選擇您的專案 ] 頁面上,選取 [空白活動],然後選取 [ 下一步]。
在 [ 設定專案 ] 頁面上,執行下列動作:
- 輸入應用程式的名稱。
- 指定要在其中儲存項目檔的位置。
- 選取 [完成]。
建立支援 FCM 的 Firebase 專案
登入 Firebase 控制台。 如果您還沒有 Firebase 專案,請建立新的 Firebase 專案。
建立項目之後,請選取 [將 Firebase 新增至 Android 應用程式]。
在 [ 將 Firebase 新增至 Android 應用程式] 頁面上,執行下列動作:
針對Android套件名稱,複製應用程式 build.gradle 檔案中的 applicationId 值。 在此範例中為
com.fabrikam.fcmtutorial1app
。選取 [ 註冊應用程式]。
選取 [下載google-services.json],將檔案儲存到您專案的 app 資料夾中,然後選取 [下一步]。
在 Firebase 控制台中,選取項目的齒輪。 然後選取 [專案 設定]。
如果您尚未將google-services.json檔案下載到 Android Studio 專案的應用程式資料夾中,您可以在此頁面執行此動作。
切換至 [ 雲端傳訊] 索引 標籤。
複製並儲存 伺服器金鑰 以供稍後使用。 您可以使用此值來設定中樞。
如果您在 Firebase 雲端傳訊索引標籤上看不到伺服器密鑰,請遵循下列步驟:
- 選取雲端傳訊 API (舊版) 停用標題的三點功能表。
- 遵循在Google Cloud Console 中管理 API 的連結。
- 在Google Cloud Console 中,選取按鈕以啟用Google雲端通訊 API。
- 請等待數分鐘。
- 返回您的 Firebase 控制台專案 Cloud Messaging 索引標籤,然後重新整理頁面。
- 查看雲端傳訊 API 標頭已變更為 已啟用 雲端傳訊 API(舊版),現在會顯示伺服器密鑰。
設定通知中樞
登入 Azure 入口網站。
選取左側功能表上的 [所有服務],然後在 [行動裝置] 區段中選取 [通知中樞]。 選取服務名稱旁邊的星號圖示,將服務加到左功能表上的 [我的最愛] 區段。 將 [通知中樞] 新增至 [我的最愛] 之後,在左功能表上予以選取。
在 [通知中 樞] 頁面上,選取 工具欄上的 [新增 ]。
在 [通知中 樞] 頁面上,執行下列動作:
在通知中樞輸入名稱。
在 [建立新命名空間] 中輸入名稱。 命名空間包含一或多個中樞。
從 [位置] 下拉式清單中選取值。 此值會指定您要在其中建立中樞的位置。
在資源群組中 選取現有的資源群組,或建立新的資源群組。
選取 建立。
選取 [通知 ] (鈴鐺圖示),然後選取 [移至資源]。 您也可以在 [通知中 樞 ] 頁面上重新整理清單,然後選取您的中樞。
從清單中選取 [ 存取原則 ]。 請注意,有兩個 連接字串 可供使用。 您稍後需要他們來處理推播通知。
重要
請勿在應用程式中使用 DefaultFullSharedAccessSignature 原則。 此原則僅供應用程式後端使用。
設定中樞的 Firebase 雲端通訊設定
在左窗格中的 [設定] 底下,選取 [Google][GCM/FCM]。
輸入您稍早儲存之 FCM 專案的伺服器金鑰。
在工具列上,選取 [ 儲存]。
Azure 入口網站 會顯示中樞已成功更新的訊息。 [ 儲存] 按鈕已停用。
您的通知中樞現在已設定為使用 Firebase 雲端通訊。 您也有將通知傳送至裝置並註冊應用程式以接收通知所需的 連接字串。
將您的應用程式 連線 至通知中樞
將Google Play服務新增至專案
在 Android Studio 中,選取 功能表上的 [工具 ],然後選取 [SDK 管理員]。
選取專案中所使用的 Android SDK 目標版本。 然後選取 [ 顯示套件詳細數據]。
如果尚未安裝,請選取 [Google API]。
切換至 [ SDK 工具] 索引 標籤。如果您尚未安裝Google Play服務,請選取 [Google Play 服務 ],如下圖所示。 然後選取 [ 套用 ] 進行安裝。 請記下 SDK 路徑,以供後續步驟使用。
如果您看到 [ 確認變更 ] 對話框,請選取 [ 確定]。 元件安裝程式會安裝要求的元件。 安裝元件之後,選取 [ 完成 ]。
選取 [確定] 以關閉 [新增專案] 對話框的 [設定]。
新增 Azure 通知中樞連結庫
在 應用程式的 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'
在 [相依性] 區段之後新增下列存放庫:
dependencyResolutionManagement { repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS) repositories { google() mavenCentral() maven { url 'https://example.io' } } }
新增Google Firebase支援
如果檔案尚未存在,請在檔案結尾新增下列外掛程式。
apply plugin: 'com.google.gms.google-services'
選取工具列上的 [ 立即 同步處理]。
新增程式碼
建立 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()); } } } }
在
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"); }
在 Android Studio 的功能表欄上,選取 [建置],然後選取 [重建專案 ],以確定程式代碼中沒有任何錯誤。 如果您收到ic_launcher圖示的相關錯誤,請從AndroidManifest.xml檔案中移除下列語句:
android:icon="@mipmap/ic_launcher"
請確定您有執行應用程式的虛擬設備。 如果您沒有帳戶,請新增一個,如下所示:
在選取的裝置上執行應用程式,並確認它已成功向中樞註冊。
注意
註冊可能會在初始啟動期間失敗,直到
onTokenRefresh()
呼叫實例標識符服務的方法為止。 重新整理應該會起始通知中樞的成功註冊。
傳送測試通知
您可以從 Azure 入口網站 將推播通知傳送至通知中樞,如下所示:
在 [Azure 入口網站] 中,於中樞的通知中樞頁面上,選取 [疑難解答] 區段中的 [測試傳送]。
在 [平臺] 中,選取 [Android]。
請選取傳送。 您尚未在 Android 裝置上看到通知,因為您尚未在裝置上執行行動應用程式。 執行行動應用程式之後,請再次選取 [ 傳送 ] 按鈕以查看通知訊息。
請參閱入口網站頁面底部清單中作業的結果。
您會在裝置上看到通知訊息。
推播通知通常會在後端服務中傳送,例如Mobile Apps或使用相容的連結庫 ASP.NET。 如果後端無法使用連結庫,您也可以直接使用 REST API 來傳送通知訊息。
在模擬器上執行行動應用程式
在模擬器內測試推播通知之前,請確定模擬器映像支援您為應用程式選擇的Google API層級。 如果您的映像不支援原生 Google API,您可能會收到 SERVICE_NOT_AVAILABLE 例外狀況。
此外,請確定您已在 設定> Accounts 下將 Google 帳戶新增至執行中的模擬器。 否則,嘗試向 FCM 註冊可能會導致 AUTHENTICATION_FAILED 例外狀況。
下一步
在本教學課程中,您已使用 Firebase 雲端通訊,將通知廣播至已向服務註冊的所有 Android 裝置。 若要瞭解如何將通知推送至特定裝置,請繼續進行下列教學課程:
以下是傳送通知的一些其他教學課程清單:
Azure Mobile Apps:如需如何從與通知中樞整合的Mobile Apps 後端傳送通知的範例,請參閱 將推播通知新增至iOS 應用程式。
ASP.NET: 使用通知中樞將推播通知傳送給使用者。
Azure 通知中樞 Java SDK:請參閱 如何使用來自 Java 的通知中樞從 Java 傳送通知。 這已在 Eclipse 中測試 Android 開發。
PHP: 如何使用 PHP 的通知中樞。