Android Google FCM云消息集成_android google推送集成-程序员宅基地

技术标签: Google fcm  fcm 云消息  Android  

一、FCM注意一点:

发送即可收到。

对于 Notification,当app处于前台的是不会接收(app在前台的时候是不会接受推送的,我就被坑了,以为集成有误),至于当app处于后台或者被强杀时依然收到,强杀后能收到。而dataMessage是前后台都能收到。

经测试,美版手机无障碍

二、接入FCM

二.1、前提

想要使用FCM,需要满足如下几个条件

  • 设备必须是android4.0以上,Google Play Services 必须是 11.2.0以上版本
  • Android SDK Manager 必须有Google Play services SDK
  • Android Studio必须是1.5以上版本

用户手机必须可以连得上Google Play Services 

二.2.1、在Firebase控制台添加自己的应用

首先你得有一个Google账号嘛,然后登录Firebase的控制台

创建应用

 

.
选择添加到安卓应用

 

 

.

下载生成的文件名为 “google-services.json”的文件,放在应用级别的文件目录下

 

.

 

二.2.2、添加使用Firebase SDK

添加SDK

项目gradle

 

应用gradle

这点官网无涉及,但是没加可能会报异常
Failed to resolve: com.google.firebase:firebase-messaging:11.2.0

  • dependencies
  • 在文件的最后添加
    apply plugin: 'com.google.gms.google-services'

 

配置FireBase SDK

唯一Token的获取和上传
最初启动您的应用时,FCM SDK 会为客户端应用实例生成一个注册令牌。如果您希望定位单台设备或创建设备组,则需要通过继承 FirebaseInstanceIdService来访问此令牌。

当您需要检索当前令牌时,请调用 FirebaseInstanceId.getInstance().getToken()

.
.
消息的接收监听

  • MyFirebaseMessagingService

.

public class MyFirebaseMessagingService extends FirebaseMessagingService {
    private static final String TAG = "FBTEST";

    @Override
    public void onMessageReceived(RemoteMessage remoteMessage) {
        super.onMessageReceived(remoteMessage);

        Log.e("======", "收到推送 From: " + remoteMessage.getFrom());

        // Check if message contains a data payload.
        if (remoteMessage.getData().size() > 0) {
            Log.e("======", "收到推送 Message data payload: " + remoteMessage.getData());
        }

        // Check if message contains a notification payload.
        if (remoteMessage.getNotification() != null) {
            Log.e("======", "收到通知 Message Notification Body: " + remoteMessage.getNotification().getBody());
        }
    }

}

.
token变化的监听

  • MyFirebaseInstanceIDService
    public class MyFirebaseInstanceIDService extends FirebaseInstanceIdService {
        private static final String TAG = "FBTEST";
    
        @Override
        public void onTokenRefresh() {
            super.onTokenRefresh();
            String refreshedToken = FirebaseInstanceId.getInstance().getToken();
            Log.d(TAG, "刷新Token Refreshed token: " + refreshedToken);
            Log.e("=========", "" + refreshedToken);
            // If you want to send messages to this application instance or
            // manage this apps subscriptions on the server side, send the
            // Instance ID token to your app server.
            sendRegistrationToServer(refreshedToken);
        }
    
        /**
         * Persist token to third-party servers.
         * <p>
         * Modify this method to associate the user's FCM InstanceID token with any server-side account
         * maintained by your application.
         *
         * @param token The new token.
         */
        private void sendRegistrationToServer(String token) {
            // TODO: Implement this method to send token to your app server.
        }
    
    }
    

注册令牌可能会在发生下列情况时更改:

  • 应用删除实例 ID
  • 应用在新设备上恢复
  • 用户卸载/重新安装应用
  • 用户清除应用数据。

注册service
.清单文件注册service

<service
    android:name=".MyFirebaseMessagingService">
    <intent-filter>
        <action android:name="com.google.firebase.MESSAGING_EVENT"/>
    </intent-filter>
</service>
<service
    android:name=".MyFirebaseInstanceIDService">
    <intent-filter>
        <action android:name="com.google.firebase.INSTANCE_ID_EVENT"/>
    </intent-filter>
</service>
<meta-data android:name="firebase_messaging_auto_init_enabled"
    android:value="false" />
<meta-data
    android:name="com.google.firebase.messaging.default_notification_icon"
    android:resource="@drawable/ic_launcher_background" />
<meta-data
    android:name="com.google.firebase.messaging.default_notification_color"
    android:resource="@color/colorAccent" />

配置完成

三、接收推送

控制台发消息,只可以发Notification,但是也足够我们测试啦
(dataMessage必须服务器代码发)

控制台

 

.

官方地址:https://firebase.google.com/docs/cloud-messaging/android/client?hl=zh-cn

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/Mr___Xu/article/details/83071364

智能推荐

最详尽的4K技术科普_x5200w 升级固件-程序员宅基地

文章浏览阅读5.7k次。什么是4K?4K是一个分辨率的范畴,即4096×2160的像素分辨率,一般用于专业设备居多,目前家庭用的设备,如4K电视、4K显示器、4K投影仪甚至是4K蓝光碟等分辨率则为3840x2160。2K分辨率则是2048x1080的像素分辨率,高清电视机、高清显示器、投影仪以及蓝光的分辨率基本上都是1920x1080的像素分辨率。高清 1080p 能够显示的有效像素为2,073,600(19..._x5200w 升级固件

小程序Git版本管理_gittoolbox关闭自动pull-程序员宅基地

文章浏览阅读2.1k次。一.新项目上传Gita.新建git仓库,复制git仓库地址,创建git仓库的时候最好别使用Readme,否则会很纠结b.点击小程序工具栏的版本管理,初始化git,双勾选直接确定c.配置git仓库地址及仓库认证名称自己取,地址为git仓库地址配置git仓库的账号密码d.拉取远程仓库e.上传代码到远程仓库,master为分支名,上传完毕二.拉Git上的小程序项目a.复制要..._gittoolbox关闭自动pull

理解Golang中defer的使用_golang defer-程序员宅基地

文章浏览阅读2.5w次,点赞24次,收藏59次。之前一直对Go中的defer不太理解,所以我单独弄出来整理一下。在golang当中,defer代码块会在函数调用链表中增加一个函数调用。这个函数调用不是普通的函数调用,而是会在函数正常返回,也就是return之后添加一个函数调用。因此,defer通常用来释放函数内部变量。通过defer,我们可以在代码中优雅的关闭/清理代码中所使用的变量。defer作为golang清理变量的特性,有其独有且明确..._golang defer

MySQL性能优化实践:SQL查询优化之使用只读索引、IN方法和临时表分批查询(附加:索引的创建删除命令)_分批查询mysql-程序员宅基地

文章浏览阅读275次。在处理大量数据时,MySQL的性能可能面临瓶颈。为了提升查询效率,本文将介绍三种优化SQL查询的方法:只读索引、IN方法和临时表分批查询。通过Java示例代码和讲解,帮助读者理解并应用这些优化技巧,提升MySQL查询性能。通过本文介绍的只读索引、IN方法和临时表分批查询这三种优化方法,你可以提升MySQL的查询性能。根据实际需求和场景,选择合适的优化方法,可以获得更好的查询体验。_分批查询mysql

Python-正则表达式-程序员宅基地

文章浏览阅读75次。前言:什么是正则表达式?正则表达式(Regular expressions 也称为 REs,或 regexes 或 regex patterns)本质上是一个微小的且高度专业化的编程语言。正则表达式并不是Python的一部分。它被嵌入到 Python 中,并通过 re 模块提供给程序猿使用。使用正则表达式,你需要指定一些规则来描述那些你希望匹配的字...

Binder 内存分配_binder_alloc-程序员宅基地

文章浏览阅读4k次,点赞2次,收藏5次。Kernel 日志:[240894.843088] (4)[23213:dumpsys]binder: 23213:23213 ioctl 40046210 7fd1741174 returned -22[240894.989640] (5)[855:HwBinder:779_2]binder_alloc: 883: binder_alloc_buf size 213544 failed, no address space[240894.989691] (5)[855:HwBinder:77.._binder_alloc

随便推点

20. Vue UI框架 ElementUi的使用 以及webpack.config.js配置_vue把element ui的按钮写到config里-程序员宅基地

文章浏览阅读964次。1.对于element UI 的简单说明基于Vue的UI框架 => 饿了么公司基于vue开的的vue的Ui组件库 => Element Ui 基于vue pc端的UI框架官网 => http://element.eleme.io/2.element UI的使用(1)找官网 http://element.eleme.io/#/zh-CN/component/q..._vue把element ui的按钮写到config里

7-5 兔子繁衍问题_r7-5 兔子繁衍问题 分数 10-程序员宅基地

文章浏览阅读7.1k次,点赞7次,收藏7次。一对兔子,从出生后第3个月起每个月都生一对兔子。小兔子长到第3个月后每个月又生一对兔子。假如兔子都不死,请问第1个月出生的一对兔子,至少需要繁衍到第几个月时兔子总数才可以达到N对?输入格式:输入在一行中给出一个不超过10000的正整数N。输出格式:在一行中输出兔子总数达到N最少需要的月数。输入样例:30输出样例:9思路:有一个误区就是兔子不是第三个月之后再生,而是第三个月就直接..._r7-5 兔子繁衍问题 分数 10

Excel宏实现msgbox弹窗_vba 弹窗-程序员宅基地

文章浏览阅读1.6k次,点赞5次,收藏7次。由于EXCEL表格的宏是指基于VB的一种宏语言VBA脚本,主要用于扩展Microsoft Office软件如Excel的功能。Excel宏是Excel中的一种编程功能,它可以让用户录制一系列的操作,以便在需要时自动执行这些操作。用户可以将录制的宏与Excel的单元格、图表、数据分析工具等其他功能结合使用,从而大大提高Excel的自动化程度。根据上图操作后,要注意的是,输入宏名称时,名称为任意一表格地址(例如:A1 C9 M555等)在多个工作簿之间移动数据....在工作表之间移动数据;_vba 弹窗

用友NCCloud破解思路、用友ERP破解思路_csdn 用友nc-程序员宅基地

文章浏览阅读1.6k次,点赞22次,收藏24次。NCCloud破解,nccloud二次开发,ncc破解,ncc二次开发,用友NC Cloud大型企业数字化平台,深度应用新一代数字智能技术,完全基于云原生架构,打造开放、互联、融合、智能的一体化云平台,聚焦数智化管理、数智化经营、数智化商业等三大企业数智化转型战略方向,提供涵盖数字营销、财务共享、全球司库、智能制造、敏捷供应链、人才管理、智慧协同等18大解决方案,帮助大型企业全面落地数智化。_csdn 用友nc

Linux ssh远程登录_远程登录 xauth 是什么-程序员宅基地

文章浏览阅读1.8k次。Linux ssh命令ssh远程登录ssh讲解示例ssh登录限制_远程登录 xauth 是什么

YoloV5 最强剪枝技术 模型压缩,3ms推理的YoloV5mAP60_怎么看yolov5剪枝效果-程序员宅基地

文章浏览阅读8.8k次,点赞10次,收藏83次。UltraFastYoloV5发布!基于剪枝技术的模型压缩,3ms推理的YoloV5mAP60+_怎么看yolov5剪枝效果

推荐文章

热门文章

相关标签