本教學課程示範如何使用 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 雲端傳訊索引標籤上看不到伺服器密鑰,請遵循下列步驟:
- 選取 [Cloud Messaging API (Legacy) Disabled] \(Cloud Messaging API (舊版) 已停用\) 標題的三點功能表。
- 遵循在 Google Cloud Console 中管理 API 的連結。
- 在Google Cloud Console 中,選取按鈕以啟用Google雲端通訊 API。
- 請等待數分鐘。
- 返回您的 Firebase 控制台專案 Cloud Messaging 索引標籤,然後重新整理頁面。
- 查看 Cloud Messaging API 標頭已變更為 [Cloud Messaging API (Legacy) Disabled] \(Cloud Messaging API (舊版) 已停用\),而且現在會顯示伺服器金鑰。
設定通知中樞
登入 Azure 入口網站。
選取左側功能表上的 [所有服務],然後在行動裝置區段中選取[通知中心]。 選取服務名稱旁邊的星號圖示,將服務加到左功能表上的 [我的最愛] 區段。 將 通知中樞 新增至 [我的最愛]之後,請在左側功能表上選取它。
在 [通知中樞] 頁面上,選取工具列上的 [新增]。
在 [ 通知中樞] 頁面上,執行下列動作:
在Notification Hub中輸入名稱。
在 [建立新命名空間] 中輸入名稱。 命名空間包含一或多個中樞。
從 [位置] 下拉式清單中選取值。 此值會指定您要在其中建立中樞的位置。
在 資源群組中選取現有的資源群組,或建立新的資源群組。
選取 ,創建。
選取 [通知 ] (鈴鐺圖示),然後選取 [移至資源]。 您也可以在 [通知樞紐頁面] 上重新整理清單,然後選取您的樞紐。
從清單中選取 [ 存取原則 ]。 請注意,有兩個連接字串可供使用。 稍後您將需要它們來處理推播通知。
這很重要
請勿在應用程式中使用 DefaultFullSharedAccessSignature 原則。 此原則只會用於應用程式後端。
設定中樞的 Firebase 雲端通訊設定
在左窗格的 [設定] 下方,選取 [Google (GCM/FCM)]。
針對您稍早儲存的 FCM 專案,輸入其伺服器金鑰。
在工具列上,選取 [儲存]。
Azure 入口網站會顯示已成功更新中樞的訊息。 [儲存] 按鈕已停用。
您的通知中樞現在已設定為使用 Firebase 雲端通訊。 您也擁有了所需的連接字串,而可將通知傳送給裝置並註冊應用程式來接收通知。
將您的應用程式連接到通知中樞
新增 Google Play 服務至專案
在 Android Studio 中,選取功能表上的 [工具],然後選取 [SDK 管理員]。
選取您專案中使用的 Android SDK 目標版本。 然後選取 [顯示套件詳細資料]。
如果尚未安裝 [Google API],請加以選取。
切換到 [SDK Tools] 索引標籤。如果您尚未安裝 Google Play Services,請選取 [Google Play Services],如下圖所示。 然後選取 [套用] 來安裝。 請注意在稍後步驟中使用的 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 例外狀況。
此外,請確定已將 Google 帳戶新增至執行中模擬器的 [設定]>[帳戶] 下方。 否則,嘗試向 FCM 註冊可能會導致 AUTHENTICATION_FAILED 例外狀況。
後續步驟
在本教學課程中,您已使用 Firebase 雲端通訊將通知廣播至所有向服務註冊的 Android 裝置。 若想了解如何將通知推送至特定裝置,請繼續進行下列教學課程:
以下是傳送通知的一些其他教學課程清單:
Azure Mobile Apps:如需如何從與通知中樞整合的Mobile Apps 後端傳送通知的範例,請參閱 將推播通知新增至iOS 應用程式。
ASP.NET:使用通知中樞將推播通知傳送給使用者。
Azure 通知中樞 Java SDK:請參閱 如何從 Java 使用通知中樞 ,以便從 Java 傳送通知。 對於 Android 的開發已經在 Eclipse 中測試。
PHP: 如何從 PHP 使用通知中樞。