tencent cloud

移动推送

产品动态
公告
产品功能动态
Android SDK 发布动态
iOS SDK 发布动态
macOS SDK 发布动态
产品简介
产品概述
产品优势
应用场景
全球化部署
购买指南
价格总览
购买指引
计费模式
免费试用
欠费说明
快速入门
创建产品和应用
Android 快速接入
iOS 快速接入
创建推送任务
查询推送记录
推送测试方法指引
产品限制说明
操作指南
推送管理
推送高级功能
实践教程
iOS 平台角标功能实践
API 文档
简介
API 概览
调用方式
推送相关接口
标签相关接口
账号相关接口
统计相关接口
用户属性相关接口
服务端错误码
服务端 SDK
API(Java)
SDK 文档
Android 接入指南
iOS 接入指南
客户端集成插件
macOS接入指南
用户及权限
快速入门配置
进阶自定义配置
资源标签
服务协议
服务等级协议
开发者协议
常见问题
iOS 常见问题
Android 常见问题
Flutter 常见问题
其他问题
移动推送政策
移动推送隐私协议
TPNS 数据处理和安全协议
Developer Agreement
联系我们
词汇表

FCM 通道接入

PDF
聚焦模式
字号
最后更新时间: 2024-01-16 17:39:39

操作场景

FCM 通道是谷歌推出的系统级推送通道,在国外具备谷歌 Service 框架的手机上,鉴于其较宽松的后台进程管理方式,在应用进程未被强制停止的情况下,可以收到推送消息。FCM 通道不支持国内集群。

操作步骤

获取密钥

FCM 推送支持两种密钥配置,以下方式二选一,推荐使用“服务器私钥”的新协议方式。
1. 服务器私钥 (推荐) 进入 FireBase 官网,注册应用信息。在 Firebase 项目 > 选择具体的项目应用 > 设置 > 服务账号 > Firebase Admin SDK,单击生成新的私钥,获取到 Firebase 服务器私钥 json 文件。然后进入 移动推送控制台 > 配置管理 > 基础配置 > FCM 官方推送通道 栏目中,选中“(推荐)服务器私钥”,单击点击上传,上传获取到的 json 文件。
2. 旧版服务器密钥 进入 FireBase 官网,注册应用信息。在Firebase 项目 > 选择具体的项目应用 > 设置 > 云消息传递 获取到的 FCM 应用推送 服务器密钥,并配置到 移动推送控制台 > 配置管理 > 基础配置 > FCM 官方推送通道 栏目中。

配置内容

1. 配置 google-services.json 文件。如图所示:


2. 配置 gradle,集成谷歌 service。
1. 在项目级的 build.gradle 文件中的 dependencies 节点中添加下面代码:
classpath 'com.google.gms:google-services:4.2.0'
注意:
如果使用低于4.2.0版本出现 FCM Register error! java.lang.IllegalStateException: Default FirebaseApp is not initialized in this process com.qq.xg4all. Make sure to call FirebaseApp.initializeApp(Context) first.,建议在 res/values 文件夹下的 string.xml, 加上 YOUR_GOOGLE_APP_ID。
2. 在应用级的 build.gradle 文件中,添加依赖:
implementation 'com.tencent.tpns:fcm:[VERSION]-release' // FCM 推送 [VERSION] 为当前 SDK 版本号,版本号可在 Android SDK 发布动态查看
implementation 'com.google.firebase:firebase-messaging:17.6.0'

//在应用级的 gradle 文件的最后一行代码中新增并将 google-services.json 放进您应用 model 的根路径下
apply plugin: 'com.google.gms.google-services'
注意:
1. FCM 推送 [VERSION] 为当前 SDK 版本号,版本号可在 Android SDK 发布动态 查看。
2. Google 配置 google-play-services(建议版本 17.0.0+,较低版本有可能出现无法注册 FCM 风险)。

启用 FCM 推送

在调用移动推送注册代码 XGPushManager.registerPush 前,添加以下代码设置:
XGPushConfig.enableOtherPush(this, true);
注册 FCM 成功的日志如下:
V/TPush: [XGPushConfig] isUsedOtherPush:true
I/TPush: [OtherPush] checkDevice pushClassNamecom.tencent.android.tpush.otherpush.fcm.impl.OtherPushImpl
I/TPush: [XGPushManager] other push token is : dSJA5n4fSZ27YeDf2rFg1A:APA91bGiqSPCMZTuyup**********f1fBIahZKYkth2OoDpixDPQmEZkQ11fX06mw_1kEaW5-jFmT4YwlER4qfX66h_BIoUxOyj_tKqZSUg7oHigIKaOrDWmMQfMAqGoT8qSfg other push type: fcm

代码混淆

-keep class com.google.firebase.** {*;}
说明:
混淆规则需要放在 App 项目级别的 proguard-rules.pro 文件中。

常见问题排查

推送 FCM 推送收不到,是什么原因?

1. 在境外具备谷歌 Service 框架的手机上,鉴于其较宽松的后台进程管理方式,在应用进程未被强制停止的情况下, FCM 消息抵达较为稳定。
2. 在大陆发行的国内品牌手机,其后台进程管理普遍较为严格,谷歌 service 后台服务同样也会受到限制,这些手机上 FCM 消息抵达可能会受到影响,FCM 无法进行下发和接收,建议保持 App 在前台接收。

什么是强制停止应用进程?

在手机设置-应用管理-具体应用-点击“结束运行”/“强制停止”等按钮停止了应用。大部分国内品牌手机,在多任务页面划掉应用进程,也可认为是强制停止了应用进程(境外手机不会)。

帮助和支持

本页内容是否解决了您的问题?

填写满意度调查问卷,共创更好文档体验。

文档反馈