阿里云首页

Android端阿里云移动推送与其他注册厂商如何同时获取regId

概述

本文主要介绍您同时使用Android端阿里云移动推送辅助通道与其他注册厂商通道时,同时获取regId的方法。

详细信息

说明

阿里云提醒您:

  • 如果您对实例或数据有修改、变更等风险操作,务必注意实例的容灾、容错能力,确保数据安全。

  • 如果您对实例(包括但不限于ECS、RDS)等进行配置与数据修改,建议提前创建快照或开启RDS日志备份等功能。

  • 如果您在阿里云平台授权或者提交过登录账号、密码等安全信息,建议您及时修改。

本文以小米通道为例,其他厂商通道与小米通道的操作步骤类似。具体信息您可以查看各个类具体内容,这部分注册代码没有混淆。

注意

若您使用厂商的SDK出现依赖冲突,请参见辅助通道SDK与小米华为推送SDK冲突进行处理。

  • 华为通道在阿里云推送SDK中是HuaweiPushReceiver。

  • 魅族通道在阿里云推送SDK中是MeizuPushReceiver。

  • OPPO和VIVO通道没有Receiver,因此阿里云推送SDK内部会实现一个回调,即重写OppoRegister、VivoRegister。

首先介绍下阿里云推送辅助通道注册逻辑:阿里云推送SDK只会获取小米注册成功后的regId和阿里云推送SDK的设备标识绑定。而注册逻辑就是调用小米的官方注册,然后继承小米官方类PushMessageReceiver,最终阿里云推送MiPushBroadcastReceiver类会接收regId。您可以通过该类获取小米regId后,进行阿里云推送的绑定逻辑。

  1. 若您需要腾讯IM或其他SDK也能和阿里云推送SDK一起获取regId,可以参见以下两种方法:

    • 再注册一个Receiver,这个Receiver继承MiPushBroadcastReceiver类,实现父类各个方法,调用(super)一下上层方法,然后在对应方法中拿到您想要的参数,给腾讯IM来绑定。

    • 再注册一个Receiver,这个Receiver继承PushMessageReceiver类,在各个方法中重新写一遍绑定步骤,也就是MiPushBroadcastReceiver里面的所有内容。

      注意

      这种方式需要自行打印regId来观察注册情况。

      在主AndroidManifest.xml文件中注册的Receiver,会覆盖掉所有第三方的注册,最终以主AndroidManifest.xml注册为准,注册Receiver过程中,一些属性必不可少,如下所示:

      <receiver
              android:name="com.alibaba.sdk.android.push.MiPushBroadcastReceiver"
              android:exported="true" >
              <intent-filter>
                  <action android:name="com.xiaomi.mipush.RECEIVE_MESSAGE" />
              </intent-filter>
              <intent-filter>
                  <action android:name="com.xiaomi.mipush.MESSAGE_ARRIVED" />
              </intent-filter>
              <intent-filter>
                  <action android:name="com.xiaomi.mipush.ERROR" />
              </intent-filter>
          </receiver>
  2. 若上述步骤仍未能定位问题,您可以通过以下方法解决问题:

    • 您可以加入钉钉群咨询问题:

    • 或者提交工单,提交工单时请选择移动推送类目。

适用于

  • 移动推送

首页 Android端阿里云移动推送与其他注册厂商如何同时获取regId