即时通信 IM 的终端用户需要随时都能够得知最新的消息,而由于移动端设备的性能与电量有限,当 App 处于后台时,为了避免维持长连接而导致的过多资源消耗,即时通信 IM 推荐您使用各厂商提供的系统级推送通道来进行消息通知,系统级的推送通道相比第三方推送拥有更稳定的系统级长连接,可以做到随时接受推送消息,且资源消耗大幅降低。
注意:
- 在没有主动退出登录的情况下,应用退后台、手机锁屏、或者应用进程被用户主动杀掉三种场景下,如果想继续接收到 IM 消息提醒,可以接入即时通信 IM 离线推送。
- 如果应用主动调用 logout 退出登录,或者多端登录被踢下线,即使接入了 IM 离线推送,也收不到离线推送消息。
集成 TUIOfflinePush 组件之前,请您先 注册应用到厂商推送平台,登录腾讯云账号进行 IM 控制台配置 和 配置离线推送跳转界面。之后按照如下步骤操作即可快速接入 IM 离线推送。
注意:
- 如果您想尽可能简单地接入 TUIOfflinePush 组件,您需要使用 TUICore 组件中的 TUILogin 提供的 login/logout 接口登录/登出,此时 TUIOfflinePush 组件会自动感知登录/登出事件。如果您不想使用 TUILogin 提供的接口,您需要在完成登录/登出操作后,手动调用 TUIOfflinePushManager 的接口 registerPush/unRegisterPush。
- 组件支持的厂商有:小米、华为、荣耀、OPPO、vivo、魅族和 Google FCM。
api project(':tuiofflinepush')
vivo 和荣耀适配
根据 vivo 和荣耀厂商接入指引,需要将 APPID 和 APPKEY 添加到清单文件中,否则会出现编译问题:
华为和 Google FCM 适配
华为和 Google FCM 需要按照厂商方法,集成对应的 plugin 和 json 配置文件。
下载配置文件添加到工程根目录。
在项目级 build.gradle 文件中 buildscript -> dependencies 下添加以下配置:
repositories {
...
// 配置HMS Core SDK的Maven仓地址。
maven {url 'https://developer.huawei.com/repo/'}
}
dependencies {
...
classpath 'com.google.gms:google-services:4.2.0'
classpath 'com.huawei.agconnect:agcp:1.4.1.300'
}
apply plugin: 'com.google.gms.google-services'
apply plugin: 'com.huawei.agconnect'
推送证书添加成功之后,IM 控制台会为您分配一个证书 ID,请您填充到 PrivateConstants 的配置参数里,该证书 ID 会在注册推送服务和上报 token 时使用, 以小米为例:
填充的参数如下:
public class PrivateConstants {
/****** 小米离线推送参数start ******/
// 在腾讯云控制台上传第三方推送证书后分配的证书 ID
public static final long XM_PUSH_BUZID = 您应用分配的证书 ID;
// 小米开放平台分配的应用APPID及APPKEY
public static final String XM_PUSH_APPID = "您应用分配的 APPID";
public static final String XM_PUSH_APPKEY = "您应用分配的 APPKEY";
/****** 小米离线推送参数end ******/
}
以上步骤完成后,就可以收到离线推送通知了。
发送消息时,请您设置离线推送参数,具体请参见 发消息时设置离线推送参数 。
收到离线推送的通知栏消息,点击会自动跳转到您配置的跳转界面,该界面可以获取透传的离线消息,请您参见 解析离线推送消息 。
从 SDK 6.1.2155 版本开始,支持设置自定义铃音,支持机型有华为、小米、FCM 和 APNS。方法参见:V2TIMOfflinePushInfo 接口 setAndroidSound() 和 setIOSSound()。
OPPO 手机收不到推送一般有以下几种情况:
收不到推送需要确认下 IM 控制台是否正确上传证书。排查路径参照文档 “IM 控制台配置 - Google FCM”,对照示意图看下是否添加正确。
自定义消息的离线推送和普通消息不太一样,自定义消息的内容我们无法解析,不能确定推送的内容,所以默认不推送,如果您有推送需求,需要您在 sendMessage 的时候设置 offlinePushInfo 的 desc 字段,推送的时候会默认展示 desc 信息。
离线推送的直观表现就是通知栏提示,所以同其他通知一样受设备通知相关设置的影响,以华为为例:
单击离线推送消息的通知栏,跳转到指定界面,原理是后台根据您在控制台配置的各个厂商的跳转方式和界面参数,根据厂商接口规则,传递给厂商服务器,单击时候进行对应界面启动跳转。对应界面启动还依赖清单文件的配置,必须和控制台配置的相对应,才能正确启动和跳转。
本页内容是否解决了您的问题?