Android:Google三方库之Firebase集成详细步骤(三)
Cloud Messaging
1、清单文件配置
a、(可选)一项扩展 FirebaseMessagingService 的服务。除了接收通知外,如果您还希望在后台应用中进行消息处理,则必须添加此服务。例如,您需要在前台应用中接收通知、接收数据载荷以及发送上行消息等,就必须扩展此服务
<serviceandroid:name=".java.MyFirebaseMessagingService"android:exported="false"><intent-filter><action android:name="com.google.firebase.MESSAGING_EVENT" /></intent-filter>
</service>
b、(可选)应用组件中用于设置默认通知图标和颜色的元数据元素。如果传入的消息未明确设置图标和颜色,Android 就会使用这些值。
<meta-dataandroid:name="com.google.firebase.messaging.default_notification_icon"android:resource="@drawable/ic_stat_ic_notification" />
<meta-dataandroid:name="com.google.firebase.messaging.default_notification_color"android:resource="@color/colorAccent" />
c、(可选)从 Android 8.0(API 级别 26)和更高版本开始,我们支持并推荐使用通知渠道。FCM 提供具有基本设置的默认通知渠道。如果您希望创建和使用自己的默认渠道,请将 default_notification_channel_id 设置为您的通知渠道对象的 ID(如下所示);只要传入的消息未明确设置通知渠道,FCM 就会使用此值。如需了解详情,请参阅管理通知渠道。
<meta-dataandroid:name="com.google.firebase.messaging.default_notification_channel_id"android:value="@string/default_notification_channel_id" />
以上三点都不配置的情况下:也能收到消息。如果需要在收到通知后,点击消息做特殊处理,就需要实现第一点。
2、获取设备注册令牌
初次启动您的应用时,FCM SDK 会为客户端应用实例生成一个注册令牌 (registration token)。如果您希望指定单一目标设备或者创建设备组,需要扩展 FirebaseMessagingService 并重写 onNewToken 来获取此令牌。
因为令牌可能会在初始启动后轮替,所以我们强烈建议您检索最近更新的注册令牌。
注册令牌可能会在发生下列情况时更改:
- 应用在新设备上恢复
- 用户卸载/重新安装应用
- 用户清除应用数据
如果需要检索当前令牌,请调用 FirebaseMessaging.getInstance().getToken()。
FirebaseMessaging.getInstance().token.addOnCompleteListener(OnCompleteListener { task ->if (!task.isSuccessful) {Log.w(TAG, "Fetching FCM registration token failed", task.exception)return@OnCompleteListener}// Get new FCM registration tokenval token = task.result//把当前获取的注册token传给自己服务器
})
监控令牌的生成
每当生成新令牌时,都会触发 onNewToken 回调函数。
/*** 需要继承:FirebaseMessagingService,重新onNewToken方法*/
override fun onNewToken(token: String) {Log.d(TAG, "Refreshed token: $token")//把当前token传给自己服务器sendRegistrationToServer(token)
}
上面的令牌需要调用后端接口传给自己服务器,如果只是需要记录安装时一次,可以只需要使用检索一次就好,不需要实时监听令牌的变化。
在所有的依赖Google服务的功能,都应该调用 GoogleApiAvailability.makeGooglePlayServicesAvailable()检查,如果没有就需要引导用户下载
相关文章:
Android:Google三方库之Firebase集成详细步骤(三)
Cloud Messaging 1、清单文件配置 a、(可选)一项扩展 FirebaseMessagingService 的服务。除了接收通知外,如果您还希望在后台应用中进行消息处理,则必须添加此服务。例如,您需要在前台应用中接收通知、接收数据载荷以及…...
2023年中国边缘计算网关现状及发展趋势分析[图]
边缘计算网关是一种可以在设备上运行本地计算、消息通信、数据缓存等功能的工业智能网关,可以在无需联网的情况下实现设备的本地联动以及数据处理分析。边缘计算网关是一种连接物联网设备和云端服务的关键技术,它可以在设备和云端之间建立一个安全、高效…...
LeetCode78.子集
这道题如果用暴力法几乎是不可能解出来的,因为情况太复杂了,但是一旦用上递归回溯就会轻松很多,先上代码: class Solution {List<List<Integer>> result new ArrayList<List<Integer>>();List<Integ…...
不是默认进入Linux|总是自动进入windows系统
问题描述 不是默认进入Linux系统无法主动出现boot引导自动进入windows系统 尝试无效 修复引导无效重装Grub无效重装系统无效 环境 Ubuntu 22.04 LST微星主板 解决方案 修改引导顺序: 开机狂按Del键,进入BIOS系统,左侧Settings 设置&…...
【面经八股】搜广推方向:常见面试题(二)
【面经&八股】搜广推方向:常见面试题(二) 文章目录 【面经&八股】搜广推方向:常见面试题(二)1. FTRL 是什么?(Follow The Regularized Leader)2. 梯度下降方法3. 推荐系统中常见的Embedding方法有哪些?4. Embedding与推荐系统有哪些结合5. FM 和 FFM6. FNN7. 深…...
机器学习与药物筛选的心得体会
机器学习在药物设计里面的应用可以说还是比较常见的,尤其是搞计算的都会或多或少的涉及到这块。比如国内做这块比较多的,浙江大学的侯廷军教授,北京化工大学的闫爱霞教授,华东理工大学的几个做模拟计算的老师,上海药物…...
初识数据结构
归纳编程学习的感悟, 记录奋斗路上的点滴, 希望能帮到一样刻苦的你! 如有不足欢迎指正! 共同学习交流! 🌎欢迎各位→点赞 👍 收藏⭐ 留言📝 熬过了我们不想要的生活…...
【阿里云】图像识别 智能分类识别 增加网络控制功能点(三)
一、增加网络控制功能 实现需求TCP 心跳机制解决Soket异常断开问题 二、Linux内核提供了通过sysctl命令查看和配置TCP KeepAlive参数的方法。 查看当前系统的TCP KeepAlive参数修改TCP KeepAlive参数 三、C语言实现TCP KeepAlive功能 四、setsockopt用于设置套接字选项的系…...
LeetCode 统计美丽子字符串 II【质因子分解,前缀和,哈希表】困难
本文属于「征服LeetCode」系列文章之一,这一系列正式开始于2021/08/12。由于LeetCode上部分题目有锁,本系列将至少持续到刷完所有无锁题之日为止;由于LeetCode还在不断地创建新题,本系列的终止日期可能是永远。在这一系列刷题文章…...
第一百八十一回 如何绘制阴影效果
文章目录 1. 概念介绍2. 使用方法2.1 SegmentedButton2.2 ButtonSegment 3. 代码与效果3.1 示例代码3.2 运行效果 4. 内容总结 1. 概念介绍 我们在本章回中介绍的SegmentedButton组件是一种分段式按钮,它把多个按钮连接成一组显示,组内再对不同的按钮进…...
Qt5.15.2静态编译 VS2017 with static OpenSSL
几年前编译过一次Qt静态库:VS2015编译Qt5.7.0生成支持XP的静态库,再次编译,毫无压力。 一.环境 系统:Windows 10 专业版 64位 编译器:visual studio 2017 第三方工具:perl,ruby和python python用最新的3.x.x版本也是可以的 这三个工具都需要添加到环境变量,安装时勾选…...
AIGC(生成式AI)试用 13 -- 数据时效性
数据时效性? 最新的数据,代表最新的状态,使用最新的数据也应该最有说服力。 学习需要时间,AIGC学习并接收最新数据的效果如何? 问题很简单,如何验证?这个需要找点更新快的对像进行验证。…...
Sass的嵌套CSS 规则详细教程
文章目录 前言父选择器的标识符&群组选择器的嵌套子组合选择器和同层组合选择器:>、和~嵌套属性后言 前言 hello world欢迎来到前端的新世界 😜当前文章系列专栏:Sass和Less 🐱👓博主在前端领域还有很多知识和…...
Spark---SparkCore(一)
一、术语与宽窄依赖 1、术语解释 1、Master(standalone):资源管理的主节点(进程) 2、Cluster Manager:在集群上获取资源的外部服务(例如:standalone,Mesos,Yarn) 3、Worker Node(standalone):资源管理的从节点(进程)或者说管理本机资源的…...
单链表原来是这样实现的!
文章目录 前言1. 链表的概念及结构1.1在链表里,每节“车厢”是什么样的呢?1.2为什么还需要指针变量来保存下⼀个节点的位置? 2. 单链表的实现1. 定义结构体(Seqlist)2. 打印函数(SLTPrint)小插曲,创建节点函数CreateNode3. 尾插函…...
excel一个单元格换行方法
要是在同一个单元格内输入文字输入不下的话,我们是可以进行同一个单元格换行设置的,而且换行的方法也是有很多种,下面我们就一起来看一下有哪些方法吧。 excel一个单元格换行方法: 方法一: 1、我们可以直接按下alte…...
echart一键生成迁徙图
echart_move 介绍 echart迁徙图,选择起点和目的地生成迁徙图 软件架构 html echarts js 使用说明 将文件放到同一目录下打开index.html即可 默认是小飞机图标,如果想修改图标,将图片放到同一目录,如1.svg 代码修改为对应位…...
开发、测试、生产环境
开发环境:开发环境是程序猿们专门用于开发的服务器,配置可以比较随意, 为了开发调试方便,一般打开全部错误报告。简单讲就是项目尚且处于编码阶段,一般这时候会把代码放在开发环境中,不会放在生产环境中。 …...
红队攻防文库文章集锦
再救你一次,不要让欲望击溃你的意志 0.红队攻防 1.红队实战 红队攻防之特殊场景上线cs和msf CVE-2021-42287&CVE-2021-42278 域内提权 红队攻防之Goby反杀 红队攻防实战之钉钉RCE 红队攻防实战之从边界突破到漫游内网(无cs和msf) 红队攻防实战系列一之C…...
Vue框架学习笔记——键盘事件
文章目录 前文提要键盘事件(并不是所有按键都能绑定键盘事件)常用的按键不同的tab和四个按键keyCode绑定键盘事件(不推荐)Vue.config.keyCode.自定义键名 键码 神奇的猜想div标签和click.enterbutton标签和click.enter 前文提要 …...
循环冗余码校验CRC码 算法步骤+详细实例计算
通信过程:(白话解释) 我们将原始待发送的消息称为 M M M,依据发送接收消息双方约定的生成多项式 G ( x ) G(x) G(x)(意思就是 G ( x ) G(x) G(x) 是已知的)࿰…...
【快手拥抱开源】通过快手团队开源的 KwaiCoder-AutoThink-preview 解锁大语言模型的潜力
引言: 在人工智能快速发展的浪潮中,快手Kwaipilot团队推出的 KwaiCoder-AutoThink-preview 具有里程碑意义——这是首个公开的AutoThink大语言模型(LLM)。该模型代表着该领域的重大突破,通过独特方式融合思考与非思考…...
vue3 字体颜色设置的多种方式
在Vue 3中设置字体颜色可以通过多种方式实现,这取决于你是想在组件内部直接设置,还是在CSS/SCSS/LESS等样式文件中定义。以下是几种常见的方法: 1. 内联样式 你可以直接在模板中使用style绑定来设置字体颜色。 <template><div :s…...
【Go】3、Go语言进阶与依赖管理
前言 本系列文章参考自稀土掘金上的 【字节内部课】公开课,做自我学习总结整理。 Go语言并发编程 Go语言原生支持并发编程,它的核心机制是 Goroutine 协程、Channel 通道,并基于CSP(Communicating Sequential Processes࿰…...
UR 协作机器人「三剑客」:精密轻量担当(UR7e)、全能协作主力(UR12e)、重型任务专家(UR15)
UR协作机器人正以其卓越性能在现代制造业自动化中扮演重要角色。UR7e、UR12e和UR15通过创新技术和精准设计满足了不同行业的多样化需求。其中,UR15以其速度、精度及人工智能准备能力成为自动化领域的重要突破。UR7e和UR12e则在负载规格和市场定位上不断优化…...
Ubuntu Cursor升级成v1.0
0. 当前版本低 使用当前 Cursor v0.50时 GitHub Copilot Chat 打不开,快捷键也不好用,当看到 Cursor 升级后,还是蛮高兴的 1. 下载 Cursor 下载地址:https://www.cursor.com/cn/downloads 点击下载 Linux (x64) ,…...
Oracle11g安装包
Oracle 11g安装包 适用于windows系统,64位 下载路径 oracle 11g 安装包...
go 里面的指针
指针 在 Go 中,指针(pointer)是一个变量的内存地址,就像 C 语言那样: a : 10 p : &a // p 是一个指向 a 的指针 fmt.Println(*p) // 输出 10,通过指针解引用• &a 表示获取变量 a 的地址 p 表示…...
git: early EOF
macOS报错: Initialized empty Git repository in /usr/local/Homebrew/Library/Taps/homebrew/homebrew-core/.git/ remote: Enumerating objects: 2691797, done. remote: Counting objects: 100% (1760/1760), done. remote: Compressing objects: 100% (636/636…...
SQL Server 触发器调用存储过程实现发送 HTTP 请求
文章目录 需求分析解决第 1 步:前置条件,启用 OLE 自动化方式 1:使用 SQL 实现启用 OLE 自动化方式 2:Sql Server 2005启动OLE自动化方式 3:Sql Server 2008启动OLE自动化第 2 步:创建存储过程第 3 步:创建触发器扩展 - 如何调试?第 1 步:登录 SQL Server 2008第 2 步…...
