1. 程式人生 > >在Android應用程序中實現推送通知

在Android應用程序中實現推送通知

xamarin android

幾乎每一個應用程序的一個重要特性是支持推送通知的能力。使用推送通知,您可以更新用戶,而不需要應用程序在任何時候運行或輪詢服務器, 避免潛在的電池電量不足。 隨著火力點雲信息的介紹(FCM),谷歌使得在Android應用程序中實現推送通知變得容易了一點。FCM是谷歌雲消息(GCM)的新版本和改進版本,您可以使用它將遠程通知發送到客戶機應用程序。對於將瞄準多個平臺或需要利用先進的推操作(如分段推送)的應用程序,我們可以使用帶有Azure通知集線器的FCM。

與GCM不同,FCM負責為您提供基本的消息傳遞管道。使用FCM,您不再需要編寫代碼來註冊應用程序,也不必包含重試邏輯來更新訂閱令牌。您可以通過以下操作向您的應用程序添加基本的FCM推送通知:

  1. 安裝Xamarin.Android NuGets包和一個證書文件.

  2. 添加一對<service> 定義到你的ndroidManifest.xml.

  3. 寫幾行代碼把它們全部組合起來。

另外,不要編寫發送通知的測試程序,你可以使用新的基於Web的火力點控制臺發送通知到你的應用程序測試。

今天,我們來看看如何使用Xamarin.Firebase.Messaging包來構建一個基於FCM消息通知功能到你的應用中

建立Firebase Cloud Messaging

在你可以在你的應用程序中使用FCM服務之前,你通過Firebase控制臺創建一個Firebase項目。在你登錄後,點擊

CREATE NEW PROJECT,輸入項目名,並點擊 CREATE PROJECT:

技術分享

下一步,點擊Add Firebase to your Android app。 當出現提示時,輸入應用程序的包名並單擊“註冊應用程序”:

技術分享
技術分享

當你點擊REGISTER APP,證書自動生成以便你的應用能夠訪問FireBase服務器。證書打包到一個名叫google-services.json的文件中, 當你點擊REGISTER APP 按鈕後證書自動下載, 保存好這個文件,後續你會用到它。

向項目添加包

下一步,你需要添加兩個Xamarin NuGet包到你的應用中。啟動NuGet 包管理器(在Visual Studio中,在解決方案瀏覽器右擊References並選擇Manage NuGet Packages), 瀏覽 Xamarin.GooglePlayServices.Base,選擇它,並點擊Install.

技術分享

The Google Play Services package must be installed in order for FCM to work. Next, do the same for Xamarin.Firebase.Messaging:

技術分享

將為這些包中的每一個安裝額外的依賴包。

此外,要確保您在你的Anroid設備安裝並擁有 Google Play Services APK。Firebase消息使用Google Play 湧 APK和Firebase服務器通信。

將谷歌服務JSON文件添加到項目中

當你在Firebase控制臺創建一個項目,你將下載google-services.json 證書文件,現在將它插入到你的應用中!

拷貝google-services.json項目文件夾, 並將到添加到項目中(在Visual Studio中,你可以在瀏覽器解決方案點擊Show All Files 圖標,右擊google-services.json,接著選擇Include in Project)。

保存變得並關閉解決方案。重新打開解決方案並為google-services.json設置構建行為為GoogleServicesJson (在Visual Studio, Build Action 彈出菜單在Advanced 一節的Properties 頁):

技術分享

現在 google-services.json是項目的一部分,Xamarin構建處理能擴展這個證書並將它合並到AndroidManifest.xml 文件中。 Xamarin.Firebase.Messaging 使用這個證書來訪問 Firebase服務。

添加實例ID接收器

你的客戶機應用程序必須先註冊FCM,然後才能收到推送通知。這是Xamarin.Firebase.Messaging接觸FCM方法,發送它的證書,並接收註冊令牌環返回的消息。這個道理,這是定期更新,以創造一個安全的通道,Firebase服務器。你也可以轉發此令牌您的應用服務器,可以與Firebase服務。

你的應用必須實現FirebaseInstanceIdService來處理創建和更新信息環。這實際上比聽起來簡單得多,接下來你會看到。

在Android清單中聲明實例ID接收器

編輯AndroidManifest.xml (在解決方案瀏覽器中點擊Properties ) 並在 <receiver> 元素之後 插入到<application>一節:

點擊(此處)折疊或打開

  1. <receiver

  2. android:name="com.google.firebase.iid.FirebaseInstanceIdInternalReceiver"

  3. android:exported="false" />

  4. <receiver

  5. android:name="com.google.firebase.iid.FirebaseInstanceIdReceiver"

  6. android:exported="true"

  7. android:permission="com.google.android.c2dm.permission.SEND">

  8. <intent-filter>

  9. <action android:name="com.google.android.c2dm.intent.RECEIVE" />

  10. <action android:name="com.google.android.c2dm.intent.REGISTRATION" />

  11. <category android:name="${applicationId}" />

  12. </intent-filter>

  13. </receiver>


這將聲明用於管理註冊令牌的必要接收者。


增加互聯網的權限

如果你的權限列表沒有啟用 INTERNET 權限,在Properties > Android Manifest > Required 權限中啟用它:

技術分享

實現Firebase Instance ID 服務

現在,是時候寫代碼了!添加一個新的CE文件到你的項目中(在Visual Studio, 右擊項目名並選擇Add > New Item > Class)。給它取名為MyFirebaseIIDService.cs 並輸入如下代碼:

點擊(此處)折疊或打開

  1. using System;

  2. using Android.App;

  3. using Firebase.Iid;

  4. using Android.Util;


  5. namespace FCMExample

  6. {

  7. [Service]

  8. [IntentFilter(new[] { "com.google.firebase.INSTANCE_ID_EVENT" })]

  9. public class MyFirebaseIIDService : FirebaseInstanceIdService

  10. {

  11. const string TAG = "MyFirebaseIIDService";

  12. public override void OnTokenRefresh()

  13. {

  14. var refreshedToken = FirebaseInstanceId.Instance.Token;

  15. Log.Debug(TAG, "Refreshed token: " + refreshedToken);

  16. }

  17. }

  18. }



改變命名空間FCMExample為你應用的命名空間。

這就是它的全部!

當註冊的令牌創建或者改變時執行OnTokenRefresh方法。因為當更新時,令牌輸出日誌到Output窗口,你就可以確認應用是否在運行。你將輸入令牌到Firebase控制臺,當你想要改善一個測試通知到你的應用時。

現在您的應用程序具有足夠的功能來接收來自流媒體的背景通知,是時候進行測試了。在你構建應用之前,請確保應用包名匹配你在Firebase控制臺創建你的Firebase項目時輸入的包名。

重新構建你的應用,運行它,並觀察Output窗口,直到顯示令牌信息。比如:

技術分享

將此令牌復制到剪貼板; 在下面的步驟中你將會粘貼到Firebase控制臺。

發送消息

登錄到 Firebase 控制臺,選擇你的項目,點擊Notifications,再點擊SEND YOUR FIRST MESSAGE:

技術分享

Compose message 頁,在Message text中輸入消息。選擇Single device 作為目標,並將你IDE Output窗口拷貝的令牌信息粘貼到註冊令牌框中:

技術分享

在點擊 SEND MESSAGE之前, 將應用切換到後臺運行(你可以觸摸Android overview按鈕並點擊home屏)。當你在Firebase控制臺準備好時點擊 SEND MESSAGE。當 Review message 對話框顯示時,點擊SEND。通知圖標就會出現在Android設備上:

技術分享

打開通知查看消息;通知消息應該正是你在Firebase控制臺錄入的:

技術分享

祝賀您,您剛剛發送並接收了第一個FCM推送通知!

了解更多

這個簡單的示例只涉及到使用Visual Studio中的FCM和推送通知所能做的工作。為了解更多關在Visual Studio和其它平臺使用Xamarin.Android,在其中使用Firebase雲消息服務,一定要閱讀 Firebase Cloud Messaging 和Remote Notifications with Firebase Cloud Messaging. FCMNotifications 示例應用程序還是,如果你建立一個應用程序,使用FCM的推送通知借代碼從一個好地方。


本文出自 “wangccsy” 博客,轉載請與作者聯系!

在Android應用程序中實現推送通知