提兵百万西湖上,立马吴山第一峰!这篇文章主要讲述在Android应用程序中实现推送通知相关的知识,希望能为你提供帮助。
几乎每一个应用程序的一个重要特性是支持推送通知的能力。使用推送通知,您可以更新用户,而不需要应用程序在任何时候运行或轮询服务器,
避免潜在的电池电量不足。
随着火力点云信息的介绍(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:
![在Android应用程序中实现推送通知](https://s3.amazonaws.com/blog.xamarin.com/wp-content/uploads/2017/04/18132658/01-create-project.png)
文章图片
下一步,点击Add Firebase to your Android app。 当出现提示时,输入应用程序的包名并单击“注册应用程序”:
![在Android应用程序中实现推送通知](https://s3.amazonaws.com/blog.xamarin.com/wp-content/uploads/2017/04/24120408/Screen-Shot-2017-04-24-at-20.01.571.png)
文章图片
![在Android应用程序中实现推送通知](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.
![在Android应用程序中实现推送通知](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:
【在Android应用程序中实现推送通知】
![在Android应用程序中实现推送通知](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 页):
![在Android应用程序中实现推送通知](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 权限中启用它:
![在Android应用程序中实现推送通知](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窗口,直到显示令牌信息。比如:
![在Android应用程序中实现推送通知](https://s3.amazonaws.com/blog.xamarin.com/wp-content/uploads/2017/04/18134451/07-token.png)
文章图片
将此令牌复制到剪贴板; 在下面的步骤中你将会粘贴到Firebase控制台。
发送消息
登录到 Firebase 控制台,选择你的项目,点击Notifications,再点击SEND YOUR FIRST MESSAGE:
![在Android应用程序中实现推送通知](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窗口拷贝的令牌信息粘贴到注册令牌框中:
![在Android应用程序中实现推送通知](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设备上:
![在Android应用程序中实现推送通知](https://s3.amazonaws.com/blog.xamarin.com/wp-content/uploads/2017/04/18134605/10-notification-icon.png)
文章图片
打开通知查看消息;通知消息应该正是你在Firebase控制台录入的:
![在Android应用程序中实现推送通知](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的推送通知借代码从一个好地方。
本文出自 “wangccsy” 博客,转载请与作者联系!
推荐阅读
- AndroidStudio用Cmake方式编译NDK代码(cmake配置.a库)
- 添加面部跟踪和实时识别到您的Android应用程序
- mac下appium启动
- 小蜜app系统开发微领地小蜜模式分析
- android 自定义dialog的实现方法
- AndroidStudio如何引入so包
- win8系统储存空间技巧运用图文详细教程介绍
- Win 8系统开机后桌面所有应用程序不见怎样办
- Win 8音频管理器弹出“插头已从插孔中拔出”提示怎样办