在Android應用程式中實現推播通知

來源:互聯網
上載者:User

標籤:xamarin android

幾乎每一個應用程式的一個重要特性是支援推播通知的能力。使用推播通知,您可以更新使用者,而不需要應用程式在任何時候運行或輪詢伺服器, 避免潛在的電池電量不足。 隨著火力點雲資訊的介紹(FCM),Google使得在Android應用程式中實現推播通知變得容易了一點。FCM是Google雲訊息(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:

650) this.width=650;" class="alignnone size-full wp-image-31070" src="https://s3.amazonaws.com/blog.xamarin.com/wp-content/uploads/2017/04/18132658/01-create-project.png" width="907" height="404" />

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

650) this.width=650;" src="https://s3.amazonaws.com/blog.xamarin.com/wp-content/uploads/2017/04/24120408/Screen-Shot-2017-04-24-at-20.01.571.png" class="aligncenter size-full wp-image-31155" width="600" height="334" />
650) this.width=650;" src="https://s3.amazonaws.com/blog.xamarin.com/wp-content/uploads/2017/04/24120409/Screen-Shot-2017-04-24-at-19.57.001.png" class="aligncenter size-full wp-image-31156" width="521" height="431" />

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

向項目添加包

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

650) this.width=650;" class="alignnone size-full wp-image-31072" src="https://s3.amazonaws.com/blog.xamarin.com/wp-content/uploads/2017/04/18132922/03-gps-nuget.png" width="1154" height="161" />

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

650) this.width=650;" class="alignnone size-full wp-image-31073" src="https://s3.amazonaws.com/blog.xamarin.com/wp-content/uploads/2017/04/18133008/04-fbm-nuget.png" width="1162" height="154" />

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

此外,要確保您在你的Anroid裝置安裝並擁有 Google Play Services APK。Firebase訊息使用Google Play 湧 APK和Firebase伺服器通訊。

將Google服務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 頁):

650) this.width=650;" src="https://s3.amazonaws.com/blog.xamarin.com/wp-content/uploads/2017/04/18133307/05-build-action.png" class="aligncenter size-full wp-image-31074" width="349" height="241" />

現在 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 許可權中啟用它:

650) this.width=650;" class="aligncenter size-full wp-image-31075" src="https://s3.amazonaws.com/blog.xamarin.com/wp-content/uploads/2017/04/18134200/06-internet-permissions.png" width="486" height="248" />

實現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.  

  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為你應用的命名空間。

這就是它的全部!

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

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

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

650) this.width=650;" src="https://s3.amazonaws.com/blog.xamarin.com/wp-content/uploads/2017/04/18134451/07-token.png" class="alignnone size-full wp-image-31076" width="1005" height="128" />

將此令牌複製到剪貼簿; 在下面的步驟中你將會粘貼到Firebase控制台。

發送訊息

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

650) this.width=650;" src="https://s3.amazonaws.com/blog.xamarin.com/wp-content/uploads/2017/04/18134513/08-first-message.png" class="alignnone size-full wp-image-31077" width="1200" height="559" />

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

650) this.width=650;" src="https://s3.amazonaws.com/blog.xamarin.com/wp-content/uploads/2017/04/18134755/09-compose-message.png" class="aligncenter size-full wp-image-31080" width="350" />

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

650) this.width=650;" src="https://s3.amazonaws.com/blog.xamarin.com/wp-content/uploads/2017/04/18134605/10-notification-icon.png" class="aligncenter size-full wp-image-31078" width="400" />

開啟通知查看訊息;通知訊息應該正是你在Firebase控制台錄入的:

650) this.width=650;" src="https://s3.amazonaws.com/blog.xamarin.com/wp-content/uploads/2017/04/18134903/11-notification-text.png" class="aligncenter size-full wp-image-31081" width="400" />

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

瞭解更多

這個簡單的樣本只涉及到使用Visual Studio中的FCM和推播通知所能做的工作。為瞭解更多關在Visual Studio和其它平台使用Xamarin.Android,在其中使用Firebase雲Message Service,一定要閱讀 Firebase Cloud Messaging 和Remote Notifications with Firebase Cloud Messaging.  FCMNotifications 應用程式範例還是,如果你建立一個應用程式,使用FCM的推播通知借代碼從一個好地方。


本文出自 “wangccsy” 部落格,轉載請與作者聯絡!

在Android應用程式中實現推播通知

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.