阿里云首页 移动开发平台 mPaaS

快速开始

本文介绍如何快速将消息推送组件接入到 Android 客户端。消息推送支持 原生 AARmPaaS Inside 组件化(Portal & Bundle) 三种接入方式。

完整的接入过程分为以下四步:

  1. 添加推送 SDK:添加推送 SDK 依赖和 AndroidManifest 配置。
  2. 初始化:初始化推送服务,建立客户端和移动推送网关之间的长连接。
  3. 创建 Service:创建 Service 以接收设备标识 token,实现设备维度的消息推送。
  4. 绑定用户 ID:上报用户 ID 和 token 进行绑定,实现用户维度的消息推送。

前提条件

  • 若采用原生 AAR 方式接入,需要先 将 mPaaS 添加到项目
  • 若采用 mPaaS Inside 方式接入,需要先完成 mPaaS Inside 接入流程
  • 若采用组件化方式接入,需要先完成 组件化接入流程
  • 已通过 mPaaS 控制台获取 .config 配置文件。关于如何生成并下载配置文件,请参考 将配置文件添加到项目
  • 本文中的 MPPushMsgServiceAdapter 方法仅适用于基线 10.1.68.32 及以上版本。若当前使用的基线版本低于 10.1.68.32,可参考 mPaaS 升级指南 升级基线版本。
  • 旧版本中的 AliPushRcvService 方法仍可继续使用,如您需要浏览旧版本文档,请 提交工单 或联系 mPaaS 支持人员。

添加推送 SDK

添加 SDK 依赖和 AndroidManifest 配置。

添加 SDK 依赖

原生 AAR 方式

参考 AAR 组件管理,通过 组件管理(AAR)在工程中安装 消息推送(PUSH)组件。

mPaaS Inside 方式

在工程中通过 组件管理 安装 消息推送(PUSH)组件。

更多信息,请参考 添加组件依赖

组件化方式

在 Portal 和 Bundle 工程中通过 组件管理 安装 消息推送(PUSH)组件。

更多信息,请参考 添加组件依赖

添加 AndroidManifest 配置

AndroidManifest.xml 中添加以下内容:

  1. <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
  2. <service
  3. android:name="com.alipay.pushsdk.push.NotificationService"
  4. android:enabled="true"
  5. android:exported="false"
  6. android:label="NotificationService"
  7. android:process=":push">
  8. <intent-filter>
  9. <action android:name="${applicationId}.push.action.START_PUSHSERVICE" />
  10. </intent-filter>
  11. </service>
  12. <receiver
  13. android:name="com.alipay.pushsdk.BroadcastActionReceiver"
  14. android:enabled="true"
  15. android:process=":push">
  16. <intent-filter android:priority="2147483647">
  17. <action android:name="android.intent.action.BOOT_COMPLETED" />
  18. <action android:name="android.net.conn.CONNECTIVITY_CHANGE" />
  19. <action android:name="android.intent.action.USER_PRESENT" />
  20. <action android:name="android.intent.action.ACTION_POWER_CONNECTED" />
  21. </intent-filter>
  22. </receiver>

注:组件化方式需在 portal 工程中添加。

如不需要监听系统启动,可删除:

  1. <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
  2. <action android:name="android.intent.action.BOOT_COMPLETED" />

初始化

初始化推送服务,建立客户端和移动推送网关之间的长连接,这个长连接由推送 SDK 维护,即自建通道。

原生 AAR / mPaaS Inside 方式

  • 如已在 Application 中调用 mPaaS 初始化方法,则在 QuinoxlessFramework.init() 方法之后调用:
    1. MPPush.init(this);
  • 如未调用 mPaaS 初始化方法,则在 Application 中调用:
    1. MPPush.setup(this);
    2. MPPush.init(this);

组件化方式

LauncherApplicationAgentLauncherActivityAgentpostInit 方法中调用:

  1. MPPush.init(context);

创建 Service

创建 Service 继承 MPPushMsgServiceAdapter,重写 onTokenReceive 方法,接收自建通道下发的设备标识(token)。

  1. public class MyPushMsgService extends MPPushMsgServiceAdapter {
  2. /**
  3. * 收到自建通道 token 的回调
  4. *
  5. * @param token 自建通道 token
  6. */
  7. @Override
  8. protected void onTokenReceive(String token) {
  9. Log.d("收到自建通道 token: " + token);
  10. }
  11. }

AndroidManifest.xml 中声明这个 Service:

  1. <service
  2. android:name="com.mpaas.demo.push.MyPushMsgService"
  3. android:exported="false">
  4. <intent-filter>
  5. <action android:name="${applicationId}.push.action.MESSAGE_RECEIVED" />
  6. <action android:name="${applicationId}.push.action.REGISTRATION_ID" />
  7. <category android:name="${applicationId}" />
  8. </intent-filter>
  9. </service>

完成此步骤后,就可以在控制台通过设备维度推送消息了,需要填写的设备标识就是收到的 token。

绑定用户 ID

此用户 ID 由开发者自定义,既可以是真实用户系统的用户标识,也可以是能和每个用户形成映射关系的其他参数,例如账号、手机号等。

在收到 token 后,可以将 token 和用户 ID 绑定:

  1. String userId = "自定义 userId";
  2. ResultPbPB bindResult = MPPush.bind(context, userId, token);
  3. Log.d("绑定 userId " + (bindResult.success ? "成功" : ("错误:" + bindResult.code)));

如已调用 MPLogger 设置过用户 ID,可以在绑定时不传入用户 ID,例如:

  1. MPLogger.setUserId("自定义 userId");
  2. ResultPbPB bindResult = MPPush.bind(context, token);

如需解绑用户 ID,例如用户退出登录,可调用:

  1. ResultPbPB unbindResult = MPPush.unbind(context, userId, token);
  2. ResultPbPB unbindResult = MPPush.unbind(context, token);

完成此步骤后,即可在控制台通过用户维度推送消息,需要填写的用户标识就是自定义的用户 ID。

相关操作

  • 为提升消息推送的到达率,推荐接入 Android 手机厂商提供的推送通道,目前支持华为、小米、OPPO、vivo,具体操作参见 接入厂商通道
  • 收到消息后会自动发送通知,用户点击通知可自动打开网页,如需根据自定义的 DeepLink 跳转应用内页面,或自定义收到消息后的行为,请参见 通知点击处理

更多其他功能,参见 高级功能 说明文档。

代码示例

点击此处 下载示例代码包。

后续操作

接入完成后,可以通过服务端调用 RESTful 接口,推送消息。具体内容请参考 服务端配置 > 推送消息