在Android应用程序中实现推送通知
2017-09-25 10:59
417 查看
几乎每一个应用程序的一个重要特性是支持推送通知的能力。使用推送通知,您可以更新用户,而不需要应用程序在任何时候运行或轮询服务器,
避免潜在的电池电量不足。
随着火力点云信息的介绍(FCM),谷歌使得在Android应用程序中实现推送通知变得容易了一点。FCM是谷歌云消息(GCM)的新版本和改进版本,您可以使用它将远程通知发送到客户机应用程序。对于将瞄准多个平台或需要利用先进的推操作(如分段推送)的应用程序,我们可以使用带有Azure通知集线器的FCM。
与GCM不同,FCM负责为您提供基本的消息传递管道。使用FCM,您不再需要编写代码来注册应用程序,也不必包含重试逻辑来更新订阅令牌。您可以通过以下操作向您的应用程序添加基本的FCM推送通知:
安装Xamarin.Android NuGets包和一个证书文件.
添加一对<service> 定义到你的ndroidManifest.xml.
写几行代码把它们全部组合起来。
另外,不要编写发送通知的测试程序,你可以使用新的基于Web的火力点控制台发送通知到你的应用程序测试。
今天,我们来看看如何使用Xamarin.Firebase.Messaging包来构建一个基于FCM消息通知功能到你的应用中
在你可以在你的应用程序中使用FCM服务之前,你通过Firebase控制台创建一个Firebase项目。在你登录后,点击CREATE NEW PROJECT,输入项目名,并点击 CREATE PROJECT:
![](https://s3.amazonaws.com/blog.xamarin.com/wp-content/uploads/2017/04/18132658/01-create-project.png)
下一步,点击Add Firebase to your Android app。 当出现提示时,输入应用程序的包名并单击“注册应用程序”:
![](https://s3.amazonaws.com/blog.xamarin.com/wp-content/uploads/2017/04/24120408/Screen-Shot-2017-04-24-at-20.01.571.png)
![](https://s3.amazonaws.com/blog.xamarin.com/wp-content/uploads/2017/04/24120409/Screen-Shot-2017-04-24-at-19.57.001.png)
当你点击REGISTER APP,证书自动生成以便你的应用能够访问FireBase服务器。证书打包到一个名叫google-services.json的文件中, 当你点击REGISTER APP 按钮后证书自动下载, 保存好这个文件,后续你会用到它。
下一步,你需要添加两个Xamarin NuGet包到你的应用中。启动NuGet 包管理器(在Visual Studio中,在解决方案浏览器右击References并选择Manage NuGet Packages), 浏览 Xamarin.GooglePlayServices.Base,选择它,并点击Install.
![](https://s3.amazonaws.com/blog.xamarin.com/wp-content/uploads/2017/04/18132922/03-gps-nuget.png)
The Google Play Services package must be installed in order for FCM to work. Next, do the same for Xamarin.Firebase.Messaging:
![](https://s3.amazonaws.com/blog.xamarin.com/wp-content/uploads/2017/04/18133008/04-fbm-nuget.png)
将为这些包中的每一个安装额外的依赖包。
此外,要确保您在你的Anroid设备安装并拥有 Google Play Services APK。Firebase消息使用Google Play 涌 APK和Firebase服务器通信。
当你在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 页):
![](https://s3.amazonaws.com/blog.xamarin.com/wp-content/uploads/2017/04/18133307/05-build-action.png)
现在 google-services.json是项目的一部分,Xamarin构建处理能扩展这个证书并将它合并到AndroidManifest.xml 文件中。 Xamarin.Firebase.Messaging 使用这个证书来访问 Firebase服务。
你的客户机应用程序必须先注册FCM,然后才能收到推送通知。这是Xamarin.Firebase.Messaging接触FCM方法,发送它的证书,并接收注册令牌环返回的消息。这个道理,这是定期更新,以创造一个安全的通道,Firebase服务器。你也可以转发此令牌您的应用服务器,可以与Firebase服务。
你的应用必须实现FirebaseInstanceIdService来处理创建和更新信息环。这实际上比听起来简单得多,接下来你会看到。
编辑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 权限中启用它:
![](https://s3.amazonaws.com/blog.xamarin.com/wp-content/uploads/2017/04/18134200/06-internet-permissions.png)
现在,是时候写代码了!添加一个新的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窗口,直到显示令牌信息。比如:
![](https://s3.amazonaws.com/blog.xamarin.com/wp-content/uploads/2017/04/18134451/07-token.png)
将此令牌复制到剪贴板; 在下面的步骤中你将会粘贴到Firebase控制台。
登录到 Firebase 控制台,选择你的项目,点击Notifications,再点击SEND YOUR FIRST MESSAGE:
![](https://s3.amazonaws.com/blog.xamarin.com/wp-content/uploads/2017/04/18134513/08-first-message.png)
在Compose message 页,在Message text中输入消息。选择Single device 作为目标,并将你IDE Output窗口拷贝的令牌信息粘贴到注册令牌框中:
![](https://s3.amazonaws.com/blog.xamarin.com/wp-content/uploads/2017/04/18134755/09-compose-message.png)
在点击 SEND MESSAGE之前, 将应用切换到后台运行(你可以触摸Android overview按钮并点击home屏)。当你在Firebase控制台准备好时点击 SEND MESSAGE。当 Review message 对话框显示时,点击SEND。通知图标就会出现在Android设备上:
![](https://s3.amazonaws.com/blog.xamarin.com/wp-content/uploads/2017/04/18134605/10-notification-icon.png)
打开通知查看消息;通知消息应该正是你在Firebase控制台录入的:
![](https://s3.amazonaws.com/blog.xamarin.com/wp-content/uploads/2017/04/18134903/11-notification-text.png)
祝贺您,您刚刚发送并接收了第一个FCM推送通知!
这个简单的示例只涉及到使用Visual Studio中的FCM和推送通知所能做的工作。为了解更多关在Visual Studio和其它平台使用Xamarin.Android,在其中使用Firebase云消息服务,一定要阅读 Firebase Cloud Messaging 和Remote Notifications with Firebase Cloud Messaging. FCMNotifications 示例应用程序还是,如果你建立一个应用程序,使用FCM的推送通知借代码从一个好地方。
避免潜在的电池电量不足。
随着火力点云信息的介绍(FCM),谷歌使得在Android应用程序中实现推送通知变得容易了一点。FCM是谷歌云消息(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:![](https://s3.amazonaws.com/blog.xamarin.com/wp-content/uploads/2017/04/18132658/01-create-project.png)
下一步,点击Add Firebase to your Android app。 当出现提示时,输入应用程序的包名并单击“注册应用程序”:
![](https://s3.amazonaws.com/blog.xamarin.com/wp-content/uploads/2017/04/24120408/Screen-Shot-2017-04-24-at-20.01.571.png)
![](https://s3.amazonaws.com/blog.xamarin.com/wp-content/uploads/2017/04/24120409/Screen-Shot-2017-04-24-at-19.57.001.png)
当你点击REGISTER APP,证书自动生成以便你的应用能够访问FireBase服务器。证书打包到一个名叫google-services.json的文件中, 当你点击REGISTER APP 按钮后证书自动下载, 保存好这个文件,后续你会用到它。
向项目添加包
下一步,你需要添加两个Xamarin NuGet包到你的应用中。启动NuGet 包管理器(在Visual Studio中,在解决方案浏览器右击References并选择Manage NuGet Packages), 浏览 Xamarin.GooglePlayServices.Base,选择它,并点击Install.![](https://s3.amazonaws.com/blog.xamarin.com/wp-content/uploads/2017/04/18132922/03-gps-nuget.png)
The Google Play Services package must be installed in order for FCM to work. Next, do the same for Xamarin.Firebase.Messaging:
![](https://s3.amazonaws.com/blog.xamarin.com/wp-content/uploads/2017/04/18133008/04-fbm-nuget.png)
将为这些包中的每一个安装额外的依赖包。
此外,要确保您在你的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 页):
![](https://s3.amazonaws.com/blog.xamarin.com/wp-content/uploads/2017/04/18133307/05-build-action.png)
现在 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 权限中启用它:![](https://s3.amazonaws.com/blog.xamarin.com/wp-content/uploads/2017/04/18134200/06-internet-permissions.png)
实现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窗口,直到显示令牌信息。比如:
![](https://s3.amazonaws.com/blog.xamarin.com/wp-content/uploads/2017/04/18134451/07-token.png)
将此令牌复制到剪贴板; 在下面的步骤中你将会粘贴到Firebase控制台。
发送消息
登录到 Firebase 控制台,选择你的项目,点击Notifications,再点击SEND YOUR FIRST MESSAGE:![](https://s3.amazonaws.com/blog.xamarin.com/wp-content/uploads/2017/04/18134513/08-first-message.png)
在Compose message 页,在Message text中输入消息。选择Single device 作为目标,并将你IDE Output窗口拷贝的令牌信息粘贴到注册令牌框中:
![](https://s3.amazonaws.com/blog.xamarin.com/wp-content/uploads/2017/04/18134755/09-compose-message.png)
在点击 SEND MESSAGE之前, 将应用切换到后台运行(你可以触摸Android overview按钮并点击home屏)。当你在Firebase控制台准备好时点击 SEND MESSAGE。当 Review message 对话框显示时,点击SEND。通知图标就会出现在Android设备上:
![](https://s3.amazonaws.com/blog.xamarin.com/wp-content/uploads/2017/04/18134605/10-notification-icon.png)
打开通知查看消息;通知消息应该正是你在Firebase控制台录入的:
![](https://s3.amazonaws.com/blog.xamarin.com/wp-content/uploads/2017/04/18134903/11-notification-text.png)
祝贺您,您刚刚发送并接收了第一个FCM推送通知!
了解更多
这个简单的示例只涉及到使用Visual Studio中的FCM和推送通知所能做的工作。为了解更多关在Visual Studio和其它平台使用Xamarin.Android,在其中使用Firebase云消息服务,一定要阅读 Firebase Cloud Messaging 和Remote Notifications with Firebase Cloud Messaging. FCMNotifications 示例应用程序还是,如果你建立一个应用程序,使用FCM的推送通知借代码从一个好地方。
相关文章推荐
- Android实现本地推送通知的解决方案
- Android推送通知的实现--PHP+ANDROID做消息推送:基于IBM的MQTT协议的Tokudu项目测试
- Android实现推送通知
- SignalR+HTML5实现消息推送及Android通知栏消息
- Android定时推送通知/提醒功能的实现
- Unity干中学——如何实现类似Windows Store 应用程序和Android Toast的通知?
- 关于android推送服务-点击通知栏回不到当前应用程序的问题研究
- Android实现点击通知栏后,先启动应用再打开目标Activity ,极光推送等推送的也可以参考一下(转)
- Android推送通知的实现--Android推送通知指南
- Android实现点击通知栏后,先启动应用再打开目标Activity ,极光推送等推送的也可以参考一下(转)
- 如何实现类似Windows Store 应用程序和Android Toast的通知?
- android应用程序,使用不同方法,在activity之中隐藏Title,或者实现FullScreen(隐藏通知栏)显示。
- Android推送通知的实现--采用MQTT协议实现Android消息推送
- Android实现本地推送通知的解决方案
- Android实现推送PushService通知Notification
- Android开发笔记之notification消息推送 通知栏的实现
- Android推送通知的实现--通过 WebSphere MQ 遥测传输 (MQTT) 将 Android 手机引入物联网
- Android推送通知的实现--采用MQTT协议实现Android消息推送
- Android应用程序入门 推箱子游戏开发(一) surfaceView 实现动画效果
- Android推送通知指南