离线推送
App 客户端不在线时,如果接收到新消息,在以下情况下,离线消息会触发金山协作中台服务端的推送服务。金山协作中台服务端会通过推送通道下发一条提醒到客户端 SDK。该提醒一般以通知形式展示在通知面板,提示用户有离线消息。
在以下情况下,不会触发推送服务。
- 客户端调用了
KIM.getControl().logout()
方法,彻底注销在金山协作中台服务端的登录信息。
启用推送
必要条件
- 已集成金山协作中台 SDK。并初始化push SDK. 由于应用市场对于隐私协议的限制,该初始化方法可根据应用市场规定,放置在相应的初始化位置(比如:隐私协议弹窗之后)
public class SampleApp extends Application {
@Override
public void onCreate() {
super.onCreate();
...
//注意此方法必须实现,否则会丢失离线通知消息。由于应用市场对于隐私协议的限制,该初始化方法可根据应用市场规定,放置在相应的初始化位置(比如:隐私协议弹窗之后),此处仅为调用示例。
KIM.getControl().initPushSdk(this);
}
}
客户端权限配置
由于 协作中台 SDK 默认推送通道属于应用级别的推送,会受系统各种权限限制,建议提示用户打开对应权限,以提高推送到达率。
推送证书配置
您需要将自己的应用注册到各个厂商的推送平台,得到 AppID 和 AppKey 等参数,并配置到企业管理后台。
集成第三方推送
协作中台 支持第三方推送通道。第三方推送通道指各手机厂商从系统层维护的长连接通道,你可以与 协作中台 提供的推送服务结合使用。目前 协作中台 已适配了小米、华为、荣耀、OPPO、vivo、个推等推送服务。
在主工程 AndroidManifest.xml
中添加配置,自动注册依赖的推送组件。
<meta-data
android:name="push_spi_init_enabled"
android:value="true" />
集成小米推送
在主工程的 AndroidManifest.xml
中增加如下配置:
<meta-data
android:name="MIPUSH_APPID"
android:value="从小米官方申请到的具体的APPID值" />
<meta-data
android:name="MIPUSH_APPKEY"
android:value="从小米官方申请到的具体的APPKEY值" />
配置混淆文件:
# 小米推送
-keep class com.wps.woa.sdk.push.manufactory.xiaomi.XiaomiMessageReceiver {*;}
#可以防止一个误报的 warning 导致无法成功编译,如果编译使用的 Android 版本是 23。
-dontwarn com.xiaomi.push.**
添加依赖:
dependencies {
api 'com.wps.woa.sdk:pushXiaomi:0.0.7'
}
集成华为推送
项目根目录下的 build.gradle
中,添加
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
中,添加
apply plugin: 'com.huawei.agconnect'
将从华为官方后台申请到的 agconnect-services.json
放入项目根目录下
配置混淆文件:
# 华为推送
-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.**{*;}
添加依赖:
dependencies {
api 'com.wps.woa.sdk:pushHuawei:0.0.6'
}
集成荣耀推送
项目根目录下的 build.gradle
中,添加
//荣耀官方maven仓库,荣耀离线推送
maven { url 'https://developer.hihonor.com/repo/' }
配置混淆文件:
# 荣耀推送
-ignorewarnings
-keepattributes *Annotation*
-keepattributes Exceptions
-keepattributes InnerClasses
-keepattributes Signature
-keepattributes SourceFile,LineNumberTable
添加依赖:
dependencies {
api 'com.wps.woa.sdk:pushHonor:0.0.3'
}
集成魅族推送
在主工程的 AndroidManifest.xml
中增加如下配置:
<meta-data
android:name="MEIZU_APPID"
android:value="从魅族官方申请到的具体的APPKEY值" />
混淆配置文件:
-dontwarn com.meizu.cloud.**
-keep class com.meizu.cloud.** { *; }
添加依赖:
dependencies {
api 'com.wps.woa.sdk:pushMeizu:0.0.4'
}
集成 OPPO 推送
在主工程的 AndroidManifest.xml
中增加如下配置:
<meta-data
android:name="OPPO_APP_KEY"
android:value="从OPPO官方申请到的具体的APPKEY值" />
<meta-data
android:name="OPPO_APP_SECRET"
android:value="从OPPO官方申请到的具体的APPSECRET值" />
配置混淆文件:
# OPPO推送
-keep public class * extends android.app.Service
-keep class com.heytap.msp.** {*;}
添加依赖:
dependencies {
api 'com.wps.woa.sdk:pushOppo:0.0.6'
}
集成 VIVO 推送
在主工程的 AndroidManifest.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值" />
配置混淆文件:
# 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 {*;}
添加依赖:
dependencies {
api 'com.wps.woa.sdk:pushVivo:0.0.6'
}
集成个推
在主工程的 AndroidManifest.xml
中增加如下配置:
<meta-data
android:name="GETUI_APPID"
android:value="从个推官方申请到的具体的APPID值" />
添加依赖:
dependencies {
api 'com.wps.woa.sdk:pushGetui:0.0.3'
}
自行集成推送SDK
如果使用业务方自己的厂商sdk,则需要将注册成功的token,通过以下方式设置到协作中台SDK:
- 需要调用
KIM.getControl().setPushToken(pushType, token)
参数说明
参数 | 类型 | 说明 |
---|---|---|
pushType | String | huawei 华为 honor 荣耀 meizu 魅族 oppo OPPO vivo ViVO xiaomi 小米 |
token | String | 各厂商注册成功的token |
消息通知设置
离线推送设置
获取云端配置
获取当前设备在云端的消息通知设置
接口定义
KIM.settings().getNotificationSettings(callback: KIMOperateCallback<KIMNotificationSettings>)
参数说明
参数 | 类型 | 说明 |
---|---|---|
callback | KIMOperateCallback<KIMNotificationSettings> | 回调 |
KIMNotificationSettings
参数 | 类型 | 说明 |
---|---|---|
showNewMessage | Boolean? | 是否开启消息推送 |
showMeetingMessage | Boolean? | 是否开启会议消息推送 |
showNotificationDetail | Boolean? | 是否开启消息详情推送 |
muteWhenDesktopOnline | Boolean? | 是否开启pc在线不推送 |
代码示例
KIM.settings().getNotificationSettings(object :
KIMOperateCallback<KIMNotificationSettings> {
override fun onSuccess(value: KIMNotificationSettings?) {
//获取各类开关值
}
override fun onError(error: ErrorCode) {
log.e(error.msg)
}
})
消息推送开关
打开后,用户可在App离线时接收到消息推送(除会议和语音通话消息外)
接口定义
KIM.settings().setNewMessageNotificationEnabled(enable: Boolean,
callback: KIMOperateCallback<Boolean>?)
参数说明
参数 | 类型 | 说明 |
---|---|---|
enable | Boolean | 是否开启 |
callback | KIMOperateCallback<Boolean>? | 回调 |
代码示例
KIM.settings().setNewMessageNotificationEnabled(
true,
object : KIMOperateCallback<Boolean> {
override fun onSuccess(value: Boolean?) {
//
}
override fun onError(error: ErrorCode) {
log.e(error.msg)
}
})
会议消息推送开关
打开后,用户可在App离线时接收到 会议和语音通话 消息推送
接口定义
KIM.settings().setMeetingMessageNotificationEnabled(enable: Boolean,
callback: KIMOperateCallback<Boolean>?)
参数说明
参数 | 类型 | 说明 |
---|---|---|
enable | Boolean | 是否开启 |
callback | KIMOperateCallback<Boolean>? | 回调 |
代码示例
KIM.settings().setMeetingMessageNotificationEnabled(
true,
object : KIMOperateCallback<Boolean> {
override fun onSuccess(value: Boolean?) {
//
}
override fun onError(error: ErrorCode) {
log.e(error.msg)
}
})
PC在线时,移动端不接收推送开关
打开后,当用户pc端在线时,本设备将不接收新消息通知
接口定义
KIM.settings().setMutePhoneWhenDesktopOnLine(enable: Boolean,
callback: KIMOperateCallback<Boolean>?)
参数说明
参数 | 类型 | 说明 |
---|---|---|
enable | Boolean | 是否开启 |
callback | KIMOperateCallback<Boolean>? | 回调 |
代码示例
KIM.settings().setMutePhoneWhenDesktopOnLine(
true,
object : KIMOperateCallback<Boolean> {
override fun onSuccess(value: Boolean?) {
//
}
override fun onError(error: ErrorCode) {
log.e(error.msg)
}
})
消息详情推送开关
打开后,用户接收到的离线推送通知的内容将显示为“你收到了1条消息”
接口定义
KIM.settings().setShowNotificationDetailEnabled(enable: Boolean,
callback: KIMOperateCallback<Boolean>?)
参数说明
参数 | 类型 | 说明 |
---|---|---|
enable | Boolean | 是否开启 |
callback | KIMOperateCallback<Boolean>? | 回调 |
代码示例
KIM.settings().setShowNotificationDetailEnabled(
true,
object : KIMOperateCallback<Boolean> {
override fun onSuccess(value: Boolean?) {
//
}
override fun onError(error: ErrorCode) {
log.e(error.msg)
}
})