厂商通道原生SDK集成

本章节介绍当您自行接入厂商通道原生SDK时,如果使用移动推送需要的配置。

简介

厂商通道原生SDK集成,由您自行接入厂商提供的通道SDK和自行进行初始化。

说明

此方式不限制厂商通道SDK版本,不需要集成移动推送提供的厂商SDK。

该接入方式,不要求厂商通道SDK版本,不要求使用阿里云移动推送已经集成好的厂商SDK,需要自行接入厂商通道SDK和自行进行初始化,然后在厂商通道初始化成功后,将厂商的设备ID通过接口上传即可,主要针对以下场景:

  • 使用厂商通道用于其他业务需求。

  • 与其他已经集成好厂商通道的SDK发生依赖冲突,比如其他推送或即时通讯产品等。

通道集成

  1. 准备工作

    请阅读Android SDK版本说明,获取最新SDK配置信息。

  2. 添加依赖

    说明

    本文档接入方式,下面添加的SDK最低使用3.2.3版本。

    • 方式一:手动集成

      将辅助通道扩展包放置到app module的libs路径下,并在app module的build.gradle文件中添加如下配置:

      repositories {
          flatDir {
              dirs 'libs' //this way we can find the .aar file in libs folder
          }
      }
      ...
      dependencies {
          ......
           //根据具体的版本添加依赖
          compile(name: 'alicloud-android-third-push-x.x.x', ext: 'aar')
          compile fileTree(include: ['*.jar'], dir: 'libs')
      }
    • 方式二:Maven配置

      项目顶层build.gradle中添加Maven仓库地址:

      allprojects {
          repositories {
              maven {
                  url 'http://maven.aliyun.com/nexus/content/repositories/releases/'
              }
          }
      }

      gradle添加依赖:

      dependencies {
          compile 'com.aliyun.ams:alicloud-android-third-push:x.x.x@aar'
      }
  3. 上传厂商设备ID

    在厂商通道初始化成功后,调用ThirdPushManager.reportToken()上传厂商设备ID:

    /**
    * 以华为为例
    *
    * @param  context 上下文对象,建议传ApplicationContext
    * @param  thirdTokenKeyword 厂商设备ID的标识,下面做详细介绍
    * @param  token 厂商设备ID,厂商设备ID叫法不同,此处以token为统称
    */
    ThirdPushManager.reportToken(context, ThirdPushReportKeyword.HUAWEI.thirdTokenKeyword, token);

    ThirdPushReportKeyword类介绍:

    管理厂商关键字的枚举类,用于上报厂商设备ID以及收到消息类型的推送时选择关键字使用,目前支持并定义了华为、小米、OPPO、vivo、魅族、Google通道的关键字。

    public static enum ThirdPushReportKeyword {
        HUAWEI("HW_TOKEN", "huawei"),
        XIAOMI("MI_TOKEN", "xiaomi"),
        OPPO("OPPO_TOKEN", "oppo"),
        VIVO("VIVO_TOKEN", "vivo"),
        MEIZU("MZ_TOKEN", "meizu"),
        FCM("gcm", "gcm");
    
        public String thirdTokenKeyword;//厂商的设备ID标识
        public String thirdMsgKeyword;//厂商的消息标识
    
        private ThirdPushReportKeyword(String thirdTokenKeyword, String thirdMsgKeyword) {
            this.thirdTokenKeyword = thirdTokenKeyword;
            this.thirdMsgKeyword = thirdMsgKeyword;
        }
    }
  4. 厂商通道通知类型-辅助弹窗

    厂商通道,除Google通道外,只能通过辅助弹窗来接收推送数据,详情参考辅助弹窗接入文档,并注意:

    • 在阿里云这边进行厂商通道推送时(使用移动推送控制台或者OpenAPI进行推送时),服务端请必须参考辅助弹窗文档进行服务端配置,服务端参数不设置,不会给厂商通道进行推送。

    • 使用辅助弹窗接收数据,请务必先执行如下操作,否则会解析数据失败。初始化厂商通道解码器,必须在Application中,并且在厂商通道初始化之前调用,Google通道不需要:

      //此处以华为为例
      ThirdPushManager.registerImpl(new HuaweiMsgParseImpl());
      
      //MsgParseImpl 目前有 HuaweiMsgParseImpl、XiaoMiMsgParseImpl、OppoMsgParseImpl、VivoMsgParseImpl、MeizuMsgParseImpl
  5. 厂商通道消息类型

    接收到消息类型需要统一回调处理,可以使用ThirdPushManager.onPushMsg把消息内容传到阿里云推送SDK。

    /**
    * 以华为为例
    *
    * @param  context 上下文对象,建议传ApplicationContext
    * @param  thirdTokenKeyword 厂商消息的标识
    * @param  token 厂商的消息内容
    */
    ThirdPushManager.onPushMsg(context, ThirdPushReportKeyword.HUAWEI.thirdMsgKeyword, msgContent);