溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

在Android應(yīng)用程序中實(shí)現(xiàn)推送通知

發(fā)布時(shí)間:2020-07-18 08:33:32 來源:網(wǎng)絡(luò) 閱讀:1232 作者:wangccsy 欄目:移動(dòng)開發(fā)

幾乎每一個(gè)應(yīng)用程序的一個(gè)重要特性是支持推送通知的能力。使用推送通知,您可以更新用戶,而不需要應(yīng)用程序在任何時(shí)候運(yùn)行或輪詢服務(wù)器, 避免潛在的電池電量不足。 隨著火力點(diǎn)云信息的介紹(FCM),谷歌使得在Android應(yīng)用程序中實(shí)現(xiàn)推送通知變得容易了一點(diǎn)。FCM是谷歌云消息(GCM)的新版本和改進(jìn)版本,您可以使用它將遠(yuǎn)程通知發(fā)送到客戶機(jī)應(yīng)用程序。對(duì)于將瞄準(zhǔn)多個(gè)平臺(tái)或需要利用先進(jìn)的推操作(如分段推送)的應(yīng)用程序,我們可以使用帶有Azure通知集線器的FCM。

與GCM不同,F(xiàn)CM負(fù)責(zé)為您提供基本的消息傳遞管道。使用FCM,您不再需要編寫代碼來注冊(cè)應(yīng)用程序,也不必包含重試邏輯來更新訂閱令牌。您可以通過以下操作向您的應(yīng)用程序添加基本的FCM推送通知:

  1. 安裝Xamarin.Android NuGets包和一個(gè)證書文件.

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

  3. 寫幾行代碼把它們?nèi)拷M合起來。

另外,不要編寫發(fā)送通知的測(cè)試程序,你可以使用新的基于Web的火力點(diǎn)控制臺(tái)發(fā)送通知到你的應(yīng)用程序測(cè)試。

今天,我們來看看如何使用Xamarin.Firebase.Messaging包來構(gòu)建一個(gè)基于FCM消息通知功能到你的應(yīng)用中

建立Firebase Cloud Messaging

在你可以在你的應(yīng)用程序中使用FCM服務(wù)之前,你通過Firebase控制臺(tái)創(chuàng)建一個(gè)Firebase項(xiàng)目。在你登錄后,點(diǎn)擊CREATE NEW PROJECT,輸入項(xiàng)目名,并點(diǎn)擊 CREATE PROJECT:

在Android應(yīng)用程序中實(shí)現(xiàn)推送通知

下一步,點(diǎn)擊Add Firebase to your Android app。 當(dāng)出現(xiàn)提示時(shí),輸入應(yīng)用程序的包名并單擊“注冊(cè)應(yīng)用程序”:

在Android應(yīng)用程序中實(shí)現(xiàn)推送通知
在Android應(yīng)用程序中實(shí)現(xiàn)推送通知

當(dāng)你點(diǎn)擊REGISTER APP,證書自動(dòng)生成以便你的應(yīng)用能夠訪問FireBase服務(wù)器。證書打包到一個(gè)名叫google-services.json的文件中, 當(dāng)你點(diǎn)擊REGISTER APP 按鈕后證書自動(dòng)下載, 保存好這個(gè)文件,后續(xù)你會(huì)用到它。

向項(xiàng)目添加包

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

在Android應(yīng)用程序中實(shí)現(xiàn)推送通知

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

在Android應(yīng)用程序中實(shí)現(xiàn)推送通知

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

此外,要確保您在你的Anroid設(shè)備安裝并擁有 Google Play Services APK。Firebase消息使用Google Play 涌 APK和Firebase服務(wù)器通信。

將谷歌服務(wù)JSON文件添加到項(xiàng)目中

當(dāng)你在Firebase控制臺(tái)創(chuàng)建一個(gè)項(xiàng)目,你將下載google-services.json 證書文件,現(xiàn)在將它插入到你的應(yīng)用中!

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

保存變得并關(guān)閉解決方案。重新打開解決方案并為google-services.json設(shè)置構(gòu)建行為為GoogleServicesJson (在Visual Studio,   Build Action 彈出菜單在Advanced 一節(jié)的Properties 頁):

在Android應(yīng)用程序中實(shí)現(xiàn)推送通知

現(xiàn)在 google-services.json是項(xiàng)目的一部分,Xamarin構(gòu)建處理能擴(kuò)展這個(gè)證書并將它合并到AndroidManifest.xml 文件中。 Xamarin.Firebase.Messaging 使用這個(gè)證書來訪問 Firebase服務(wù)。

添加實(shí)例ID接收器

你的客戶機(jī)應(yīng)用程序必須先注冊(cè)FCM,然后才能收到推送通知。這是Xamarin.Firebase.Messaging接觸FCM方法,發(fā)送它的證書,并接收注冊(cè)令牌環(huán)返回的消息。這個(gè)道理,這是定期更新,以創(chuàng)造一個(gè)安全的通道,F(xiàn)irebase服務(wù)器。你也可以轉(zhuǎn)發(fā)此令牌您的應(yīng)用服務(wù)器,可以與Firebase服務(wù)。

你的應(yīng)用必須實(shí)現(xiàn)FirebaseInstanceIdService來處理創(chuàng)建和更新信息環(huán)。這實(shí)際上比聽起來簡(jiǎn)單得多,接下來你會(huì)看到。

在Android清單中聲明實(shí)例ID接收器

編輯AndroidManifest.xml (在解決方案瀏覽器中點(diǎn)擊Properties ) 并在 <receiver> 元素之后 插入到<application>一節(jié):

點(diǎn)擊(此處)折疊或打開

  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>


這將聲明用于管理注冊(cè)令牌的必要接收者。


增加互聯(lián)網(wǎng)的權(quán)限

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

在Android應(yīng)用程序中實(shí)現(xiàn)推送通知

實(shí)現(xiàn)Firebase Instance ID 服務(wù)

現(xiàn)在,是時(shí)候?qū)懘a了!添加一個(gè)新的CE文件到你的項(xiàng)目中(在Visual Studio, 右擊項(xiàng)目名并選擇Add > New Item > Class)。給它取名為MyFirebaseIIDService.cs 并輸入如下代碼:

點(diǎn)擊(此處)折疊或打開

  1. using System;

  2. using Android.App;

  3. using Firebase.Iid;

  4. using Android.Util;

  5.  

  6. namespace FCMExample

  7. {

  8.     [Service]

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

  10.     public class MyFirebaseIIDService : FirebaseInstanceIdService

  11.     {

  12.         const string TAG = "MyFirebaseIIDService";

  13.         public override void OnTokenRefresh()

  14.         {

  15.             var refreshedToken = FirebaseInstanceId.Instance.Token;

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

  17.         }

  18.     }

  19. }



改變命名空間FCMExample為你應(yīng)用的命名空間。

這就是它的全部!

當(dāng)注冊(cè)的令牌創(chuàng)建或者改變時(shí)執(zhí)行OnTokenRefresh方法。因?yàn)楫?dāng)更新時(shí),令牌輸出日志到Output窗口,你就可以確認(rèn)應(yīng)用是否在運(yùn)行。你將輸入令牌到Firebase控制臺(tái),當(dāng)你想要改善一個(gè)測(cè)試通知到你的應(yīng)用時(shí)。

現(xiàn)在您的應(yīng)用程序具有足夠的功能來接收來自流媒體的背景通知,是時(shí)候進(jìn)行測(cè)試了。在你構(gòu)建應(yīng)用之前,請(qǐng)確保應(yīng)用包名匹配你在Firebase控制臺(tái)創(chuàng)建你的Firebase項(xiàng)目時(shí)輸入的包名。

重新構(gòu)建你的應(yīng)用,運(yùn)行它,并觀察Output窗口,直到顯示令牌信息。比如:

在Android應(yīng)用程序中實(shí)現(xiàn)推送通知

將此令牌復(fù)制到剪貼板; 在下面的步驟中你將會(huì)粘貼到Firebase控制臺(tái)。

發(fā)送消息

登錄到 Firebase 控制臺(tái),選擇你的項(xiàng)目,點(diǎn)擊Notifications,再點(diǎn)擊SEND YOUR FIRST MESSAGE:

在Android應(yīng)用程序中實(shí)現(xiàn)推送通知

Compose message 頁,在Message text中輸入消息。選擇Single device 作為目標(biāo),并將你IDE Output窗口拷貝的令牌信息粘貼到注冊(cè)令牌框中:

在Android應(yīng)用程序中實(shí)現(xiàn)推送通知

在點(diǎn)擊 SEND MESSAGE之前, 將應(yīng)用切換到后臺(tái)運(yùn)行(你可以觸摸Android overview按鈕并點(diǎn)擊home屏)。當(dāng)你在Firebase控制臺(tái)準(zhǔn)備好時(shí)點(diǎn)擊 SEND MESSAGE。當(dāng) Review message 對(duì)話框顯示時(shí),點(diǎn)擊SEND。通知圖標(biāo)就會(huì)出現(xiàn)在Android設(shè)備上:

在Android應(yīng)用程序中實(shí)現(xiàn)推送通知

打開通知查看消息;通知消息應(yīng)該正是你在Firebase控制臺(tái)錄入的:

在Android應(yīng)用程序中實(shí)現(xiàn)推送通知

祝賀您,您剛剛發(fā)送并接收了第一個(gè)FCM推送通知!

了解更多

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


向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI