標籤:xamarin android
幾乎每一個應用程式的一個重要特性是支援推播通知的能力。使用推播通知,您可以更新使用者,而不需要應用程式在任何時候運行或輪詢伺服器, 避免潛在的電池電量不足。 隨著火力點雲資訊的介紹(FCM),Google使得在Android應用程式中實現推播通知變得容易了一點。FCM是Google雲訊息(GCM)的新版本和改進版本,您可以使用它將遠程通知發送到客戶機應用程式。對於將瞄準多個平台或需要利用先進的推操作(如分段推送)的應用程式,我們可以使用帶有Azure通知集線器的FCM。
與GCM不同,FCM負責為您提供基本的訊息傳遞管道。使用FCM,您不再需要編寫代碼來註冊應用程式,也不必包含重試邏輯來更新訂閱令牌。您可以通過以下操作向您的應用程式添加基本的FCM推播通知:
安裝Xamarin.Android NuGets包和一個認證檔案.
添加一對<service> 定義到你的ndroidManifest.xml.
寫幾行代碼把它們全部組合起來。
另外,不要編寫發送通知的測試程式,你可以使用新的基於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>一節:
點擊(此處)摺疊或開啟
<receiver
android:name="com.google.firebase.iid.FirebaseInstanceIdInternalReceiver"
android:exported="false" />
<receiver
android:name="com.google.firebase.iid.FirebaseInstanceIdReceiver"
android:exported="true"
android:permission="com.google.android.c2dm.permission.SEND">
<intent-filter>
<action android:name="com.google.android.c2dm.intent.RECEIVE" />
<action android:name="com.google.android.c2dm.intent.REGISTRATION" />
<category android:name="${applicationId}" />
</intent-filter>
</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 並輸入如下代碼:
點擊(此處)摺疊或開啟
using System;
using Android.App;
using Firebase.Iid;
using Android.Util;
namespace FCMExample
{
[Service]
[IntentFilter(new[] { "com.google.firebase.INSTANCE_ID_EVENT" })]
public class MyFirebaseIIDService : FirebaseInstanceIdService
{
const string TAG = "MyFirebaseIIDService";
public override void OnTokenRefresh()
{
var refreshedToken = FirebaseInstanceId.Instance.Token;
Log.Debug(TAG, "Refreshed token: " + refreshedToken);
}
}
}
改變命名空間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應用程式中實現推播通知