04/29/2024 11:54:53

推送模块开发

一、插件开发说明

推送功能可以在游戏未运行的情况下给玩家手机推送游戏相关的信息,如各种节假日活动、周年庆活动等。

  1. 推送方式分为本地推送与远程推送

    • 本地推送,游戏通过调用本地接口生成推送信息
    • 远程推送,通过推送渠道的管理端的发送推送信息
  2. 推送信息分为应用内消息和通知栏信息

    • 应用内消息,应用内的信息,不会展示在通知栏(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 回调函数 ID
    • MSDKObserverID.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 为注册渠道推送方法 ID
      • MSDKMethodNameID.MSDK_PUSH_UNREGISTER_PUSH 为注销设备方法 ID
      • MSDKMethodNameID.MSDK_PUSH_SET_ACCOUNT 为设置账号方法 ID
      • MSDKMethodNameID.MSDK_PUSH_DELETE_ACCOUNT 为删除账号方法 ID
      • MSDKMethodNameID.MSDK_PUSH_SET_TAG 为设置标签方法 ID
      • MSDKMethodNameID.MSDK_PUSH_DELETE_TAG 为删除标签方法 ID
      • MSDKMethodNameID.MSDK_PUSH_ADD_LOCAL_NOTIFICATION 为新增本地推送方法 ID
      • MSDKMethodNameID.MSDK_PUSH_CLEAR_LOCAL_NOTIFICATION 为清空全部本地推送方法 ID
    • 推送回调方法
      • MSDKMethodNameID.MSDK_PUSH_TEXT_MESSAGE 为通用消息回调 ID
      • MSDKMethodNameID.MSDK_PUSH_NOTIFICATION_SHOW 为推送展示回调 ID
      • MSDKMethodNameID.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:回调函数 ID
    • kObserverIDPushBaseRet 用于推送方法调用结果返回
    • kObserverIDPushNotifyCallback 用于推送消息相关的消息结果返回
  • ret:回调结果
    • 推送模块的 ret 类型包括:
      • InnerBaseRet,用于推送方法调用结果返回
      • InnerPushRet,用于推送消息相关的消息结果返回,除了基本的结果参数,InnerPushRet 还包括:
        • type
          • 0 - 应用在前台时收到的远程通知
          • 1 - 应用在后台收收到的远程通知
          • 2 - 应用在前台时收到的本地通知
          • 3 - 应用在后台收收到的本地通知
          • 如果无法确定,请填 -1
        • notification,通知的内容
  • methodNameID MSDK 定义的函数 ID,用于回调方法定义
    • 基本调用方法
      • kMethodNameRegisterPush 为注册渠道推送方法 ID
      • kMethodNameUnregisterPush 为注销设备方法 ID
      • kMethodNameSetAccountPush 为设置账号方法 ID
      • kMethodNameDeleteAccountPush 为删除账号方法 ID
      • kMethodNameSetTagForPush 为设置标签方法 ID
      • kMethodNameDeleteTagForPush 为删除标签方法 ID
      • kMethodNameAddLocalNotify 为新增本地推送方法 ID
      • kMethodNameClearLocalNotify 为清空全部本地推送方法 ID
    • 推送回调方法
      • kMethodNameNotifyCallback 为通用消息回调 ID
      • kMethodNameNotifyShow 为推送展示回调 ID
      • kMethodNameNotifyClick 为推送点击回调 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] 详情请参考示例代码



Copyright © 2024 MSDK.
All rights reserved.

results matching ""

    No results matching ""