文档导航
Android
SDK 版本:  5.X
公告:融云新文档中心已上线,欢迎到新文档中心阅读 Android IMLibAndroid IMKit 的文档。

推送 2.0 集成概述

更新时间:2024-02-23 PDF

融云 Push 2.0 推送集成方案(要求 SDK ≧ 5.6.0)将第三方厂商推送通道的 SDK 封装成插件,方便开发者快速集成与配置,适用于 IMLib、IMKit 或其他依赖 IMLib 的融云 Android 客户端 SDK。

提示

如果您的应用需要自行集成第三方厂商推送客户端,或需要使用推送集成商的 SDK(例如个推、极光等),则本集成方案不适用。详见解决推送客户端冲突

推送服务能力

推送支持「离线消息推送」和「不落地通知」两种场景。

离线消息推送通知

假设用户仅在一台设备上登录,如果主动断开连接(disconnect())或者应用程序已被用户或系统杀死,融云会认为用户在该客户端离线。用户离线状态下,支持将收到的单聊消息、群聊消息、系统消息、超级群消息通过第三方推送厂商或融云自建的推送服务通知客户端。

  • 如果由第三方厂商推送服务发送提醒,该提醒一般由系统直接弹出,以通知形式展示在通知面板,提示用户收到消息。
  • 如果由融云自建推送通道(RongPush)发送提醒,该提醒一般由 SDK 调用系统 API 构建通知后弹出。注意,RongPush 在国内大部分机型上无法存活。建议应用程序集成第三方厂商的推送服务。

用户点击推送通知后再次与融云服务端建立 IM 连接后,SDK 会有如下行为:

  • 自动收到离线期间的单聊、群聊离线消息?。服务端默认缓存 7 天未收取的离线消息。
  • 自动收到离线期间超级群会话中最后一条消息,应用程序需要自行拉取离线期间的历史消息。
提示

应用程序处于后台且活跃时,用户仍处于在线状态,SDK 仍可实时收到会话消息,消息送达过程中不会使用任何推送服务,因此用户设备不会收到来自任何推送服务的通知。如果使用 IMLib,应用程序需要自行调用系统 API 创建并弹出本地通知。如果使用 IMKit,SDK 默认会调用系统 API 创建并弹出本地通知。

不落地通知

融云支持直接通过服务端 API 向客户端发送远程推送通知,称为不落地通知?。不落地通知中不包含任何会话消息,无论客户端 App 是否在前台,所有通知内容始终仅会以通知形式展示在系统通知栏中,用户无法在任何聊天会话中看到不落地通知的内容。

不落地通知始终通过推送通道下发数据,因此依赖应用程序集成第三方厂商推送服务,或者在客户端启用 RongPush。

  • 如果由第三方厂商推送服务发送提醒,该提醒一般由系统直接弹出,以通知形式展示在通知面板,提示用户收到消息。
  • 如果由融云自建推送通道(RongPush)发送提醒,该提醒一般由 SDK 调用系统 API 构建通知后弹出。注意,RongPush 在国内大部分机型上无法存活。建议应用程序集成第三方厂商的推送服务。

不落地通知仅支持通过服务端 API 发送,例如:

目前不支持通过控制台发送不落地通知(仅部分旧账号仍保留该能力)。

无法推送以及推送受限的情况

  • 因聊天室业务设计特点,仅当聊天室中的用户在线时才会收到聊天室会话中的消息,因此聊天室消息不支持离线消息推送
  • 客户端调用了 logout 方法,或在 disconnect 时设置了不允许推送,或通过设置 SDK 的初始化配置中的 enablePush 参数为 false,向融云服务申请禁用推送服务(当前设备),导致彻底注销用户在融云服务端的登录信息。这种情况下,用户无法通过任何推送通道收到通知。
  • 即使用户的所有移动端设备均已离线,只要用户仍在 Web/PC 端在线,此时融云认为用户在线,默认不会给移动端发送推送通知。如有需要,您可以在控制台免费基础功能页面调整 Web/PC 在线手机端接收 Push 开关设置。
  • 即使用户的移动端应收到推送通知,融云服务端不会向所有已登录过移动端设备均发送推送,仅会向最后一个登录的设备发送推送通知。
  • 已触发第三方厂商推送服务的频率、数量限制。为改善终端用户推送体验,部分第三方推送服务(例如华为、vivo)已对推送消息的分类进行数量和频率管控。建议您充分了解第三方的管理细则。
  • 因超级群业务中普通消息的数量较大,为控制离线推送频率,默认每分钟针对单个用户的单个超级群,每个频道最多产生 1 条推送。默认普通消息累计 2 条时才会触发推送。@ 消息不受此限制。如需调整,详见开通超级群服务
提示

用户必须至少在设备上连接成功过一次,该设备才能接收推送。

集成第三方推送

目前融云 Push 2.0 集成方案(要求 SDK ≧ 5.6.0)已适配了小米、华为、荣耀、魅族、OPPO、vivo、FCM 推送服务。由于国内手机厂商的限制,融云自建推送通道(RongPush)在国内大部分机型上无法存活。您可以优先选择集成第三方推送。

在控制台配置 ApplicationId

融云服务端在向第三方推送通道发送推送数据时,需要使用 App 的应用标识?(Android 应用 ID)。您需要在控制台进行配置。

  1. 访问控制台应用标识页面(也可从服务管理页面左侧 IM 服务下访问)。

    1. 如您有多个融云应用,请确保在页面顶部应用一栏切换到正确的应用。
    2. 新建的应用默认拥有一个应用标识,您可以创建更多应用表示,最多 5 个。每个应用标识均可设置推送,应用标识之间不共享推送配置。
  2. 在应用标识旁,点击设置推送,并在 Android > ApplicationId 一栏填写您的 Android 应用 ID。

    每个 Android 应用均有一个唯一的应用 ID(applicationId),像 Java 软件包名称一样,例如 com.example.myapp。此 ID 可以作为您的应用在设备上和 Google Play 商店中的唯一标识。

    应用 ID 由模块的 build.gradle 文件中的 applicationId 属性定义,如下所示:

    android {
        defaultConfig {
            applicationId "com.example.myapp"
            minSdkVersion 21
            targetSdkVersion 24
            versionCode 1
            versionName "1.0"
        }
        ...
    }
                  
    已复制
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10

    如果您没有在 build.gradle 中配置 applicationId, 则 applicationId 默认为应用的包名。如果您有更多关于应用 ID 与包名的疑问,可参见 Android 官方文档

解决第三方推送客户端冲突

如果您的应用或应用依赖的其他 SDK 已集成第三方推送客户端,此时无法再按上述步骤集成融云 Push 2.0 SDK,否则会发生冲突。

在参照集成第三方推送完成控制台的的配置后,您需要自行将第三方厂商推送服务的 Token 上报给融云服务端。详细步骤参见解决推送客户端冲突

集成融云自建推送通道

融云自建推送通道(RongPush)是融云客户端 SDK 与融云推送服务之间维护的一条稳定可靠的长连接通道。属于 SDK 默认推送,不需要额外集成其它三方库即可拥有的基础推送能力。

SDK 初始化启用推送功能后,则自动启用融云自建推送通道(RongPush),App 即具备了基本推送能力,由于国内手机厂商的限制,RongPush 在国内大部分机型上无法存活。建议同时集成第三方推送通道。

配置 build.gradle

android {
 defaultConfig {
    //...
    manifestPlaceholders = [
        //启用 rongpush,如不需要 RongPush 也可以禁用
        RONG_PUSH_ENABLE : "true"
    ]
 }
}
dependencies {
    // x.y.z 为当前 IM SDK 版本号
    implementation 'cn.rongcloud.sdk.push:rong:x.y.z'
}
              
已复制
1
2
3
4
5
6
7
8
9
10
11
12
13

在 SDK init 之前,调用下面代码,初始化 RongPushPlugin 模块。

RongPushPlugin.init(getContext());
              
已复制
1

提示

由于融云默认推送通道属于应用级别的推送,会受系统各种权限限制,建议提示用户打开对应权限,以提高推送到达率。

推送通道选择策略

在应用配置了多通道的情况下,为了提高用户体验,提高推送到达率,融云客户端 SDK 会根据应用配置,智能选择最优推送通道。

详细启用策略如下:

推送通道 配置要求 ROM 要求
华为 应用配置了华为推送 当前设备为华为 ROM
荣耀 应用配置了荣耀推送 当前设备为荣耀 ROM,且为 2023 年 11 月 30 日后发售的设备。
OPPO 应用配置了 OPPO 推送 当前设备为以下 ROM 中的一种: OPPO、realme、OnePlus
vivo 应用配置了 vivo 推送 当前设备为 vivo ROM
魅族 应用配置了魅族推送 当前设备为魅族 ROM
FCM 应用配置了 FCM 推送 客户端出访 IP 在国外
RongPush 默认推送通道 不满足其它通道启用策略,且 RongPush 可用时,默认使用 RongPush 推送通道
提示

关于 FCM 的补充说明

系统原生推送和 FCM 同时配置时,具体使用哪种推送通道,取决于应用层的配置顺序。比如在小米手机上,同时配置了小米推送和 FCM 推送,该用户在国外时:

  • 如果应用层配置时的顺序是小米推送在 FCM 之前,则会启用小米推送。
  • 如果应用层配置时的顺序是 FCM 在小米推送之前,则会启用 FCM 推送。

禁用当前设备的推送功能

IM SDK 默认启用推送功能。如需在当前设备上彻底禁用推送,可以在断开连接时调用 logout 方法,或通过设置 SDK 的初始化配置中的 enablePush 参数为 false,向融云服务申请禁用推送服务(当前设备),彻底注销用户在融云服务端的登录信息。这种情况下,当前设备将无法通过任何推送通道收到通知。

文档反馈
意见反馈

您的改进建议

意见反馈

问题类型

联系我们

提交工单

技术支持|集成使用|产品方案


商务咨询

7 x 24 小时

为您解答方案与报价问题

131 6185 6839

文档反馈