全部产品

vivo辅助通道集成

更新时间:2020-10-16 15:29:22

获取vivo推送密钥

登录vivo开放平台,注册您的应用,在应用信息中获取AppID、AppKey、AppSecret。

控制台配置密钥

登录移动推送控制台,设置您的vivo推送密钥(AppID和AppSecret),设置方法参见配置厂商通道密钥

通道集成

准备工作

请阅读Android SDK版本说明,下载对应版本SDK或获取最新SDK配置信息。

添加依赖

注意

  • 如果您未集成华为辅助通道,会报错找不到一些文件和值,比如@string/error_over_original_size @string/error_over_original_count @style/upsdkDlDialog,如不使用华为通道,您自行填写这些值即可。
  • 如果使用辅助通道扩展包V3.2.0及以上版本,需要将推送SDK升级到V3.2.0及以上版本。


说明

  • 建议使用Maven集成。
  • 3.2.0及以上版辅助通道扩展包以aar形式透出,省却manifest文件配置,减少出错概率。

方式一:手动集成

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

  1. repositories {
  2. flatDir {
  3. dirs 'libs' //this way we can find the .aar file in libs folder
  4. }
  5. }
  6. ...
  7. dependencies {
  8. ......
  9. //根据具体的版本添加依赖
  10. compile(name: 'alicloud-android-third-push-3.x.x', ext: 'aar')
  11. compile(name: 'third_vivopush-2.x.x.x', ext: 'aar')
  12. }

方式二:Maven集成

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

  1. allprojects {
  2. repositories {
  3. maven {
  4. url 'http://maven.aliyun.com/nexus/content/repositories/releases/'
  5. }
  6. }
  7. }

gradle添加依赖:

  1. dependencies {
  2. compile 'com.aliyun.ams:alicloud-android-third-push:3.x.x@aar'
  3. compile 'com.aliyun.ams:third_vivopush:2.x.x.x'
  4. }

混淆配置

如果集成推送SDK的工程开启代码混淆,在Android SDK集成-混淆配置的基础上,需要添加以下辅助通道的Proguard配置。

  1. # VIVO通道
  2. -keep class com.vivo.** {*;}
  3. -dontwarn com.vivo.**

初始化

1、需要在AndroidManifest.xml中声明AppID和AppKey,示例如下:

  1. <meta-data
  2. android:name="com.vivo.push.api_key"
  3. android:value="请填写vivo平台上注册应用的appKey" />
  4. <meta-data
  5. android:name="com.vivo.push.app_id"
  6. android:value="请填写vivo平台上注册应用的appID" />

2、将以下代码加入您application.onCreate()方法中初始化通道。

注意:辅助通道注册务必在Application中执行且放在推送SDK初始化代码之后,否则可能导致辅助通道注册失败。

  1. // vivo通道注册
  2. VivoRegister.register(applicationContext);

本方法会自动判断是否支持vivo系统推送,如不支持会跳过注册。

Android 8+是适配

自Android 8.0(API Level 26)起,Android推出了NotificationChannel机制,旨在对通知进行分类管理。如果用户App的targetSdkVersion大于等于26,且并未设置NotificaitonChannel,那么创建的通知是不会弹出显示。

请参见Android 8.0以上设备接收不到推送通知进行适配。

初始化成功验证

vivo通道是否注册成功,可以通过过滤MPS:vivo关键字查看,注册成功会打印getRegId regId:**相关日志,否则检查参数是否正确填入。

使用辅助弹窗

限制说明:辅助弹窗功能的使用依赖于厂商通道,请确保已集成最近的辅助通道扩展包。

接入推送功能的App进程在后台被清理后会收不到推送通知;使用辅助弹窗后,可以借助设备的系统通道,保证在App后台被清理的情况下,仍能收到推送通知。辅助弹窗的通知展示效果和普通通知相同。使用辅助弹窗后,通知将由设备系统托管弹出,点击通知栏将转跳到指定的Activity。

客户端配置

  • 服务端指定辅助弹窗通道推送时,一定要指定通知点击后要打开的Activity,该Activity需继承自抽象类AndroidPopupActivity,否则无法获取到通知的相关信息,并且会影响通知到达率的统计;

说明MiPushSystemNotificationActivity已废弃,小米、华为、OPPO等厂商通道弹窗统一继承AndroidPopupActivity

  • AndroidPopupActivity中提供抽象方法onSysNoticeOpened(),实现该方法后可获取到辅助弹窗通知的标题内容额外参数,在通知点击时触发,原本的通知回调onNotification()onNotificationOpened()不适用于辅助弹窗;

  • 指定打开的托管弹窗Activity在AndroidManifest.xml中注册时需要声明属性:android:exported=true

接入如下所示:

  1. import com.alibaba.sdk.android.push.AndroidPopupActivity;
  2. public class PopupPushActivity extends AndroidPopupActivity {
  3. static final String TAG = "PopupPushActivity";
  4. @Override
  5. protected void onCreate(Bundle savedInstanceState) {
  6. super.onCreate(savedInstanceState);
  7. }
  8. /**
  9. * 实现通知打开回调方法,获取通知相关信息
  10. * @param title 标题
  11. * @param summary 内容
  12. * @param extMap 额外参数
  13. */
  14. @Override
  15. protected void onSysNoticeOpened(String title, String summary, Map<String, String> extMap) {
  16. Log.d("OnMiPushSysNoticeOpened, title: " + title + ", content: " + summary + ", extMap: " + extMap);
  17. }
  18. }

服务端配置

服务端可以使用openAPI,也可以使用阿里云控制台。

1. OpenAPI推送配置

  • OpenAPI 2.0的推送高级接口提供了AndroidPopupActivity、AndroidPopupTitle和AndroidPopupBody三个参数,分别用于设置辅助弹窗通知打开时跳转的Activity、通知标题以及通知内容(注意:StoreOffline参数也需要设置为true)。
  • 辅助弹窗仅在当前厂商通道设备的应用后台进程被清理时生效,对非接入厂商通道设备和在线的设备不生效。
  • 当辅助弹窗生效时,推送接口的Title、Body、AndroidActivity以及额外参数设置中的功能性设置(如声音、震动等)都不起作用。

配置示例:

  1. PushRequest pushRequest = new PushRequest();
  2. // 其余设置省略
  3. // 通知
  4. pushRequest.setPushType("NOTICE");
  5. // 标题
  6. pushRequest.setTitle(dateFormat.format(new Date()));
  7. // 内容
  8. pushRequest.setBody("PushRequest body");
  9. // 额外参数
  10. pushRequest.setAndroidExtParameters("{\"k1\":\"android\",\"k2\":\"v2\"}");
  11. // 设置辅助弹窗打开Activity,填写Activity类名,需包名+类名
  12. pushRequest.setAndroidPopupActivity("*****");
  13. // 设置辅助弹窗通知标题
  14. pushRequest.setAndroidPopupTitle("*****");
  15. // 设置辅助弹窗通知内容
  16. pushRequest.setAndroidPopupBody("*****");
  17. // 72小时后消息失效, 不会再发送
  18. String expireTime = ParameterHelper.getISO8601Time(new Date(System.currentTimeMillis() + 72 * 3600 * 1000));
  19. pushRequest.setExpireTime(expireTime);
  20. // 离线消息是否保存,若保存, 在推送时候,用户即使不在线,下一次上线则会收到
  21. pushRequest.setStoreOffline(true);
  22. //推送消息类型时,设置true,设备离线时会自动把消息转成辅助通道的通知
  23. pushRequest.setAndroidRemind(true);

2. 移动推送控制台配置

在移动推送控制台左侧导航选择创建消息>推送通知,在高级设置(选填)中,设置辅助通道必要参数。通过移动推送控制台发送通知请参见推送通知

常见问题