11/08/2024 16:35:55
推送模块开发
一、插件开发说明
推送功能可以在游戏未运行的情况下给玩家手机推送游戏相关的信息,如各种节假日活动、周年庆活动等。
推送方式分为本地推送与远程推送
- 本地推送,游戏通过调用本地接口生成推送信息
- 远程推送,通过推送渠道的管理端的发送推送信息
推送信息分为应用内消息和通知栏信息
- 应用内消息,应用内的信息,不会展示在通知栏(iOS 没有该类型)
- 通知栏信息,信息会被展示在通知栏中
[info] 推送模块回调说明
1.每个方法都建议使用统一的回调处理方法回调,且回调有且仅有一次(增加本地推送通知、清空本地推送通知方法可以不给予回调)
2.除基本的方法调用回调之外,推送模块需要给予推送相关的回调
- 通用消息回调
- 推送展示回调,推送消息被展示的回调,包括本地推送和远程推送
- 推送点击回调,推送消息被用户点击时的回调,包括本地推送和远程推送
二、客户端插件开发
2.1 Android 平台
2.1.1 类实现规则说明
- 包名规则:固定为
com.tencent.gcloud.msdk.push
- 类名规则:
渠道 + Push
,如:XGFriend
- 必须实现
PushInterface
接口registerPush
函数,注册渠道推送功能,注册成功后将可以接受到消息推送unregisterPush
函数,注销渠道推送功能,注销成功后此台设备将不接收消息推送setTag
函数,设置标签,可以针对不同用户设置不同标签,用于针对不同的用户标签推送不同的消息deleteTag
函数,删除标签,删除设置过的用户标签addLocalNotification
函数,增加本地推送消息clearLocalNotifications
函数,清空全部本地推送消息setAccount
函数,设置用户的账号,以便支持按账号推送deleteAccount
函数,删除用户设置的账号
- 必须实现一个
public CLASSNAME()
构造函数。通常用于插件初始化
2.1.2 回调字段说明
回调函数说明,可参考客户端插件开发规则
observerID
回调函数 IDMSDKObserverID.MSDK_PUSH_OBSERVER_DELIVER_MESSAGE
用于推送方法调用结果返回MSDKObserverID.MSDK_PUSH_OBSERVER_NOTIFICATION
用于推送消息相关的消息结果返回
ret
返回结构,必须是MSDKRet
的子类MSDKRet
,基础调用结果类,推送模块中方法调用结果返回结构MSDKPushRet
,推送消息结果类,推送模块中推送消息相关的结果返回结构,除了基本的结果参数,InnerPushRet
还包括:type
- 0 - 应用在前台时收到的远程通知
- 1 - 应用在后台收收到的远程通知
- 2 - 应用在前台时收到的本地通知
- 3 - 应用在后台收收到的本地通知
- 如果无法确定,请填 -1
notification
,通知的内容
methodNameID
MSDK 定义的函数 ID,用于回调方法定义- 基本调用方法
MSDKMethodNameID.MSDK_PUSH_REGISTER_PUSH
为注册渠道推送方法 IDMSDKMethodNameID.MSDK_PUSH_UNREGISTER_PUSH
为注销设备方法 IDMSDKMethodNameID.MSDK_PUSH_SET_ACCOUNT
为设置账号方法 IDMSDKMethodNameID.MSDK_PUSH_DELETE_ACCOUNT
为删除账号方法 IDMSDKMethodNameID.MSDK_PUSH_SET_TAG
为设置标签方法 IDMSDKMethodNameID.MSDK_PUSH_DELETE_TAG
为删除标签方法 IDMSDKMethodNameID.MSDK_PUSH_ADD_LOCAL_NOTIFICATION
为新增本地推送方法 IDMSDKMethodNameID.MSDK_PUSH_CLEAR_LOCAL_NOTIFICATION
为清空全部本地推送方法 ID
- 推送回调方法
MSDKMethodNameID.MSDK_PUSH_TEXT_MESSAGE
为通用消息回调 IDMSDKMethodNameID.MSDK_PUSH_NOTIFICATION_SHOW
为推送展示回调 IDMSDKMethodNameID.MSDK_PUSH_NOTIFICATION_CLICK
为推送点击回调 ID
- 基本调用方法
[info] 注意
针对 Android 平台,可以区分应用内消息回调、推送展示、推送点击,因此需要区分回调的 MethodID,通用消息回调可以用于应用内部的消息接收回调,包括本地应用消息和远程应用消息
2.1.3 PushInterface 接口
registerPush 函数
注册渠道推送功能。注册成功后将可以接受到消息推送,包括注销设备后,重新注册设备的情况
@Override public void registerPush(String account,String seqID) { // 渠道的注册推送逻辑 ... // 返回注册推送成功 MSDKRet result = new MSDKRet(MSDK_PUSH_REGISTER_PUSH, MSDKErrorCode.SUCCESS); IT.onPluginRetCallback(MSDKObserverID.MSDK_PUSH_OBSERVER_DELIVER_MESSAGE, result, seqID); }
unregisterPush 函数
注销设备功能。注销成功后此台设备将不接收消息推送。
@Override public void unregisterPush(String seqID) { // 渠道的注销设备逻辑 ... // 返回注销设备成功 MSDKRet result = new MSDKRet(MSDK_PUSH_UNREGISTER_PUSH, MSDKErrorCode.SUCCESS); IT.onPluginRetCallback(MSDKObserverID.MSDK_PUSH_OBSERVER_DELIVER_MESSAGE, result, seqID); }
setAccount 函数
设置账号功能。设置用户的账号,以便支持按账号推送
@Override public void setAccount(String account, String seqID ) { // 渠道的设置账户逻辑 ... // 返回设置账户成功 MSDKRet result = new MSDKRet(MSDK_PUSH_SET_ACCOUNT, MSDKErrorCode.SUCCESS); IT.onPluginRetCallback(MSDKObserverID.MSDK_PUSH_OBSERVER_DELIVER_MESSAGE, result, seqID); }
deleteAccount 函数
删除账号功能。删除已经设置的用户账号。
@Override public void deleteAccount(String account, String seqID) { // 渠道的删除账号逻辑 ... // 返回删除账号成功 MSDKRet result = new MSDKRet(MSDK_PUSH_DELETE_ACCOUNT, MSDKErrorCode.SUCCESS); IT.onPluginRetCallback(MSDKObserverID.MSDK_PUSH_OBSERVER_DELIVER_MESSAGE, result, seqID); }
setTag 函数
设置标签功能。可以针对不同用户设置不同标签,用于针对不同的用户标签推送不同的消息。
@Override public void setTag(String tag, String seqID) { // 渠道的设置标签逻辑 ... // 返回设置标签成功 MSDKRet result = new MSDKRet(MSDK_PUSH_SET_TAG, MSDKErrorCode.SUCCESS); IT.onPluginRetCallback(MSDKObserverID.MSDK_PUSH_OBSERVER_DELIVER_MESSAGE, result, seqID); }
deleteTag 函数
删除标签功能。删除设置过的用户标签
@Override public void deleteTag(String tag, String seqID) { // 渠道的删除标签逻辑 ... // 返回删除标签成功 MSDKRet result = new MSDKRet(MSDK_PUSH_DELETE_TAG, MSDKErrorCode.SUCCESS); IT.onPluginRetCallback(MSDKObserverID.MSDK_PUSH_OBSERVER_DELIVER_MESSAGE, result, seqID); }
addLocalNotification 函数
新增本地推送消息功能。
@Override public void addLocalNotification(MSDKLocalNotification localNotification, String seqID) { // 渠道的新增本地推送消息逻辑 ... // 【可选】返回新增本地推送消息成功 // MSDKRet result = new MSDKRet(MSDK_PUSH_ADD_LOCAL_NOTIFICATION, MSDKErrorCode.SUCCESS); // IT.onPluginRetCallback(MSDKObserverID.MSDK_PUSH_OBSERVER_DELIVER_MESSAGE, result, seqID); }
clearLocalNotifications 函数
清空全部本地推送。
@Override public void clearLocalNotifications(String seqID) { // 渠道的清空全部本地推送逻辑 ... // 【可选】返回清空全部本地推送成功 // MSDKRet result = new MSDKRet(MSDK_PUSH_CLEAR_LOCAL_NOTIFICATION, MSDKErrorCode.SUCCESS); // IT.onPluginRetCallback(MSDKObserverID.MSDK_PUSH_OBSERVER_DELIVER_MESSAGE, result, seqID); }
[info] 详情请参考示例代码
2.2 iOS 平台
2.2.1 类规则说明
- 命名规则:固定为
MSDKPush + 渠道
,如:MSDKPushXG
- 必须实现
MSDKPushDelegate
协议registerPush
函数,注册渠道推送功能,注册成功后将可以接受到消息推送unregisterPush
函数,注销渠道推送功能,注销成功后此台设备将不接收消息推送setTag
函数,设置标签,可以针对不同用户设置不同标签,用于针对不同的用户标签推送不同的消息deleteTag
函数,删除标签,删除设置过的用户标签setAccount
函数,设置用户的账号,以便支持按账号推送deleteAccount
函数,删除用户设置的账号- 注意:增加本地推送和情况本地推送的方法在 iOS 平台已经由 MSDK 提供,不需要渠道插件自己实现,但是插件渠道提供需要本地推送的监控方法,并在收到本地推送时给予回调
2.2.2 回调字段说明
回调函数说明,可参考客户端插件开发规则
observerID
:回调函数 IDkObserverIDPushBaseRet
用于推送方法调用结果返回kObserverIDPushNotifyCallback
用于推送消息相关的消息结果返回
ret
:回调结果- 推送模块的
ret
类型包括:InnerBaseRet
,用于推送方法调用结果返回InnerPushRet
,用于推送消息相关的消息结果返回,除了基本的结果参数,InnerPushRet
还包括:type
- 0 - 应用在前台时收到的远程通知
- 1 - 应用在后台收收到的远程通知
- 2 - 应用在前台时收到的本地通知
- 3 - 应用在后台收收到的本地通知
- 如果无法确定,请填 -1
notification
,通知的内容
- 推送模块的
methodNameID
MSDK 定义的函数 ID,用于回调方法定义- 基本调用方法
kMethodNameRegisterPush
为注册渠道推送方法 IDkMethodNameUnregisterPush
为注销设备方法 IDkMethodNameSetAccountPush
为设置账号方法 IDkMethodNameDeleteAccountPush
为删除账号方法 IDkMethodNameSetTagForPush
为设置标签方法 IDkMethodNameDeleteTagForPush
为删除标签方法 IDkMethodNameAddLocalNotify
为新增本地推送方法 IDkMethodNameClearLocalNotify
为清空全部本地推送方法 ID
- 推送回调方法
kMethodNameNotifyCallback
为通用消息回调 IDkMethodNameNotifyShow
为推送展示回调 IDkMethodNameNotifyClick
为推送点击回调 ID
- 基本调用方法
[info] 注意
针对 iOS 平台,由于无法区分展示和点击回调,可以统一采用通用回调进行回调
2.2.3 MSDKPushDelegate 协议
registerPush 函数
注册渠道推送功能。注册成功后将可以接受到消息推送,包括注销设备后,重新注册设备的情况
- (void)registerPush:(const MSDKBaseParams &)baseParams withAccount:(const std::string &)account { // 渠道的注册推送逻辑 ... // 返回注册推送成功 InnerBaseRet ret(MSDKError::SUCCESS); ret.methodNameID = kMethodNameRegisterPush; MSDKInnerObserverHolder<InnerBaseRet>::CommitToTaskQueue(ret, kObserverIDPushBaseRet, baseParams.seqID); }
unregisterPush 函数
注销设备功能。注销成功后此台设备将不接收消息推送。
- (void)unregisterPush:(const MSDKBaseParams &)baseParams { // 渠道的注销设备逻辑 ... // 返回注销设备成功 InnerBaseRet ret(MSDKError::SUCCESS); ret.methodNameID = kMethodNameUnregisterPush; MSDKInnerObserverHolder<InnerBaseRet>::CommitToTaskQueue(ret, kObserverIDPushBaseRet, baseParams.seqID); }
setAccount 函数
设置账号功能。设置用户的账号,以便支持按账号推送
- (void)setAccount:(const MSDKBaseParams &)baseParams withAccount:(const std::string &)account { // 渠道的设置账户逻辑 ... // 返回设置账户成功 InnerBaseRet ret(MSDKError::SUCCESS); ret.methodNameID = kMethodNameSetAccountPush; MSDKInnerObserverHolder<InnerBaseRet>::CommitToTaskQueue(ret, kObserverIDPushBaseRet, baseParams.seqID); }
deleteAccount 函数
删除账号功能。删除已经设置的用户账号。
- (void)deleteAccount:(const MSDKBaseParams &)baseParams withAccount:(const std::string &)account { // 渠道的删除账号逻辑 ... // 返回删除账号成功 InnerBaseRet ret(MSDKError::SUCCESS); ret.methodNameID = kMethodNameDeleteAccountPush; MSDKInnerObserverHolder<InnerBaseRet>::CommitToTaskQueue(ret, kObserverIDPushBaseRet, baseParams.seqID); }
setTag 函数
设置标签功能。可以针对不同用户设置不同标签,用于针对不同的用户标签推送不同的消息。
- (void)setTag:(const MSDKBaseParams &)baseParams withTag:(const std::string &)tag { // 渠道的设置标签逻辑 ... // 返回设置标签成功 InnerBaseRet ret(MSDKError::SUCCESS); ret.methodNameID = kMethodNameSetTagForPush; MSDKInnerObserverHolder<InnerBaseRet>::CommitToTaskQueue(ret, kObserverIDPushBaseRet, baseParams.seqID); }
deleteTag 函数
删除标签功能。删除设置过的用户标签
- (void)deleteTag:(const MSDKBaseParams &)baseParams withTag:(const std::string &)tag { // 渠道的删除标签逻辑 ... // 返回删除标签成功 InnerBaseRet ret(MSDKError::SUCCESS); ret.methodNameID = kMethodNameDeleteTagForPush; MSDKInnerObserverHolder<InnerBaseRet>::CommitToTaskQueue(ret, kObserverIDPushBaseRet, baseParams.seqID); }
[info] 详情请参考示例代码
All rights reserved.