Skip to content
能力中心
产品中心
应用市场
WebOffice
开发者后台

离线推送

App 客户端不在线时,如果接收到新消息,在以下情况下,离线消息会触发金山协作中台服务端的推送服务。金山协作中台服务端会通过推送通道下发一条提醒到客户端 SDK。该提醒一般以通知形式展示在通知面板,提示用户有离线消息。

在以下情况下,不会触发推送服务。

  • 客户端调用了KIM.getControl().logout()方法,彻底注销在金山协作中台服务端的登录信息。

启用推送

必要条件

  • 已集成金山协作中台 SDK。并初始化push SDK. 由于应用市场对于隐私协议的限制,该初始化方法可根据应用市场规定,放置在相应的初始化位置(比如:隐私协议弹窗之后)
kotlin
public class SampleApp extends Application {
    @Override
    public void onCreate() {
        super.onCreate();
        ...
        //注意此方法必须实现,否则会丢失离线通知消息。由于应用市场对于隐私协议的限制,该初始化方法可根据应用市场规定,放置在相应的初始化位置(比如:隐私协议弹窗之后),此处仅为调用示例。
        KIM.getControl().initPushSdk(this);
    }
}

客户端权限配置

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

推送证书配置

您需要将自己的应用注册到各个厂商的推送平台,得到 AppID 和 AppKey 等参数,并配置到企业管理后台

集成第三方推送

协作中台 支持第三方推送通道。第三方推送通道指各手机厂商从系统层维护的长连接通道,你可以与 协作中台 提供的推送服务结合使用。目前 协作中台 已适配了小米、华为、荣耀、OPPO、vivo、个推等推送服务。

在主工程 AndroidManifest.xml 中添加配置,自动注册依赖的推送组件。

Xml
<meta-data
     android:name="push_spi_init_enabled"
     android:value="true" />

集成小米推送

在主工程的 AndroidManifest.xml 中增加如下配置:

Xml
<meta-data
    android:name="MIPUSH_APPID"
    android:value="从小米官方申请到的具体的APPID值" />
<meta-data
    android:name="MIPUSH_APPKEY"
    android:value="从小米官方申请到的具体的APPKEY值" />

配置混淆文件:

Plaintext
# 小米推送
-keep class com.wps.woa.sdk.push.manufactory.xiaomi.XiaomiMessageReceiver {*;}
#可以防止一个误报的 warning 导致无法成功编译,如果编译使用的 Android 版本是 23。
-dontwarn com.xiaomi.push.**

添加依赖:

Groovy
dependencies {
    api 'com.wps.woa.sdk:pushXiaomi:0.0.7'
}

集成华为推送

项目根目录下的 build.gradle 中,添加

Groovy
buildscript {
    ...
    dependencies {
        ...
        classpath 'com.huawei.agconnect:agcp:1.6.0.300'
    }
}

allprojects {
    ...
    repositories {
        //Huawei官方maven仓库
        maven { url 'https://developer.huawei.com/repo/' }
    }
}

app工程目录下的 build.gradle 中,添加

Groovy
apply plugin: 'com.huawei.agconnect'

将从华为官方后台申请到的 agconnect-services.json 放入项目根目录下

配置混淆文件:

Plaintext
# 华为推送
-ignorewarnings
-keepattributes *Annotation*
-keepattributes Exceptions
-keepattributes InnerClasses
-keepattributes Signature
-keepattributes SourceFile,LineNumberTable
-keep class com.hianalytics.android.**{*;}
-keep class com.huawei.updatesdk.**{*;}
-keep class com.huawei.hms.**{*;}

添加依赖:

Groovy
dependencies {
    api 'com.wps.woa.sdk:pushHuawei:0.0.6'
}

集成荣耀推送

项目根目录下的 build.gradle 中,添加

Groovy
//荣耀官方maven仓库,荣耀离线推送
maven { url 'https://developer.hihonor.com/repo/' }

配置混淆文件:

Plaintext
# 荣耀推送
-ignorewarnings
-keepattributes *Annotation*
-keepattributes Exceptions
-keepattributes InnerClasses
-keepattributes Signature
-keepattributes SourceFile,LineNumberTable

添加依赖:

Groovy
dependencies {
    api 'com.wps.woa.sdk:pushHonor:0.0.3'
}

集成魅族推送

在主工程的 AndroidManifest.xml 中增加如下配置:

Xml
<meta-data
     android:name="MEIZU_APPID"
     android:value="从魅族官方申请到的具体的APPKEY值" />

混淆配置文件:

Plaintext
-dontwarn com.meizu.cloud.**
-keep class com.meizu.cloud.** { *; }

添加依赖:

Groovy
dependencies {
    api 'com.wps.woa.sdk:pushMeizu:0.0.4'
}

集成 OPPO 推送

在主工程的 AndroidManifest.xml 中增加如下配置:

Xml
<meta-data
    android:name="OPPO_APP_KEY"
    android:value="从OPPO官方申请到的具体的APPKEY值" />
<meta-data
    android:name="OPPO_APP_SECRET"
    android:value="从OPPO官方申请到的具体的APPSECRET值" />

配置混淆文件:

Plaintext
# OPPO推送
-keep public class * extends android.app.Service
-keep class com.heytap.msp.** {*;}

添加依赖:

Groovy
dependencies {
    api 'com.wps.woa.sdk:pushOppo:0.0.6'
}

集成 VIVO 推送

在主工程的 AndroidManifest.xml 中增加如下配置:

Xml
<meta-data
     android:name="com.vivo.push.app_id"
     android:value="从VIVO官方申请到的具体的APPID值" />
<meta-data
     android:name="com.vivo.push.api_key"
     android:value="从VIVO官方申请到的具体的APPKEY值" />

配置混淆文件:

Plaintext
# VIVO推送
-dontwarn com.vivo.push.**
-keep class com.vivo.push.**{*;}
-keep class com.vivo.vms.**{*;}
-keep class com.wps.woa.sdk.push.manufactory.vivo.VivoMessageReceiver {*;}

添加依赖:

Groovy
dependencies {
    api 'com.wps.woa.sdk:pushVivo:0.0.6'
}

集成个推

在主工程的 AndroidManifest.xml 中增加如下配置:

Xml
<meta-data
     android:name="GETUI_APPID"
     android:value="从个推官方申请到的具体的APPID值" />

添加依赖:

Groovy
dependencies {
    api 'com.wps.woa.sdk:pushGetui:0.0.3'
}

自行集成推送SDK

如果使用业务方自己的厂商sdk,则需要将注册成功的token,通过以下方式设置到协作中台SDK:

  • 需要调用 KIM.getControl().setPushToken(pushType, token)

参数说明

参数类型说明
pushTypeStringhuawei 华为
honor 荣耀
meizu 魅族
oppo OPPO
vivo ViVO
xiaomi 小米
tokenString各厂商注册成功的token

消息通知设置

离线推送设置

获取云端配置

获取当前设备在云端的消息通知设置

接口定义
kotlin
KIM.settings().getNotificationSettings(callback: KIMOperateCallback<KIMNotificationSettings>)
参数说明
参数类型说明
callbackKIMOperateCallback<KIMNotificationSettings>回调

KIMNotificationSettings

参数类型说明
showNewMessageBoolean?是否开启消息推送
showMeetingMessageBoolean?是否开启会议消息推送
showNotificationDetailBoolean?是否开启消息详情推送
muteWhenDesktopOnlineBoolean?是否开启pc在线不推送
代码示例
kotlin
KIM.settings().getNotificationSettings(object :
            KIMOperateCallback<KIMNotificationSettings> {
            override fun onSuccess(value: KIMNotificationSettings?) {
                //获取各类开关值
            }

            override fun onError(error: ErrorCode) {
                log.e(error.msg)
            }

        })

消息推送开关

打开后,用户可在App离线时接收到消息推送(除会议和语音通话消息外)

接口定义
kotlin
KIM.settings().setNewMessageNotificationEnabled(enable: Boolean,
        callback: KIMOperateCallback<Boolean>?)
参数说明
参数类型说明
enableBoolean是否开启
callbackKIMOperateCallback<Boolean>?回调
代码示例
kotlin
KIM.settings().setNewMessageNotificationEnabled(
            true,
            object : KIMOperateCallback<Boolean> {
                override fun onSuccess(value: Boolean?) {
                    //
                }

                override fun onError(error: ErrorCode) {
                    log.e(error.msg)
                }
            })

会议消息推送开关

打开后,用户可在App离线时接收到 会议和语音通话 消息推送

接口定义
kotlin
KIM.settings().setMeetingMessageNotificationEnabled(enable: Boolean,
        callback: KIMOperateCallback<Boolean>?)
参数说明
参数类型说明
enableBoolean是否开启
callbackKIMOperateCallback<Boolean>?回调
代码示例
kotlin
KIM.settings().setMeetingMessageNotificationEnabled(
            true,
            object : KIMOperateCallback<Boolean> {
                override fun onSuccess(value: Boolean?) {
                    //
                }

                override fun onError(error: ErrorCode) {
                    log.e(error.msg)
                }
            })

PC在线时,移动端不接收推送开关

打开后,当用户pc端在线时,本设备将不接收新消息通知

接口定义
kotlin
KIM.settings().setMutePhoneWhenDesktopOnLine(enable: Boolean,
        callback: KIMOperateCallback<Boolean>?)
参数说明
参数类型说明
enableBoolean是否开启
callbackKIMOperateCallback<Boolean>?回调
代码示例
kotlin
KIM.settings().setMutePhoneWhenDesktopOnLine(
            true,
            object : KIMOperateCallback<Boolean> {
                override fun onSuccess(value: Boolean?) {
                    //
                }

                override fun onError(error: ErrorCode) {
                    log.e(error.msg)
                }
            })

消息详情推送开关

打开后,用户接收到的离线推送通知的内容将显示为“你收到了1条消息”

接口定义
kotlin
KIM.settings().setShowNotificationDetailEnabled(enable: Boolean,
        callback: KIMOperateCallback<Boolean>?)
参数说明
参数类型说明
enableBoolean是否开启
callbackKIMOperateCallback<Boolean>?回调
代码示例
kotlin
KIM.settings().setShowNotificationDetailEnabled(
            true,
            object : KIMOperateCallback<Boolean> {
                override fun onSuccess(value: Boolean?) {
                    //
                }

                override fun onError(error: ErrorCode) {
                    log.e(error.msg)
                }
            })