Android端辅助通道和弹窗问题的排查步骤

概述

本文主要介绍Android端辅助通道和弹窗问题的排查步骤。

详细信息

参数检查

登录移动研发平台EMAS,选择移动推送后选择对应的应用,单击应用配置,确认各个平台上的相关参数一一对应,填写参数时请不要添加多余的空格。

终端集成确认

各通道初始化成功,可先在各厂商的控制台推送测试,然后再使用阿里云控制台或OpenAPI进行推送。

下面日志示例如果实际调试时不打印,在推送SDK初始化注册之前,将调试日志打开:

CloudPushService pushService = PushServiceFactory.getCloudPushService();
pushService.setLogLevel(CloudPushService.LOG_DEBUG);//ogLevel 支持设置:CloudPushService.ERROR | CloudPushService.INFO | CloudPushService.DEBUG | CloudPushService.OFF(关闭Log)
pushService.register(applicationContext, new CommonCallback() {...};

华为通道

华为通道初始化成功,如下图所示。若没有注册信息上报,确认注册成功,返回结果中包含token说明初始化成功。

huawei

小米通道

小米通道初始化成功,如下图所示。

xiaomi

GCM/FCM通道

GCM/FCM通道初始化成功,可以看到以下日志信息:

05-19 19:18:44.530 19153-19177/com.xxx D/MPS:GcmRegister: token from register: eWIXLYCNP0Q:APA91bFUAgxj6XYf5okyoCBnRPw1UwITndzXrvPDgbdI2N44PYm17hFEBiNXNQJrJ8bOG_xjw3c3UPDAhzNMTLNjlAKcjUanKyLA6E3k4wEmgZuhgUT02UMmMvH2LVA1L2Z4-l-cT_Ug

OPPO通道

OPPO通道是否注册成功,可以通过过滤MPS:OPush关键字查看。注册成功会打印“onRegister regid=****”相关日志,注册失败请检查参数是否正确填入,阿里云控制台上需要填写OPPO的MasterSecret,而不是appsecret,若找不到OPPO的MasterSecret,请咨询OPPO客服。

如果targetSdkVersion设置成26及以上,那么使用OPPO通道时需要设置NotificationChannel,NotificationChannel的相关介绍请参见Android 8.0以上设备接收不到推送通知,OPPO需要在推送控制台创建一个通知渠道,NotificationChannel的ID需要填写正确,各处都需要统一。

vivo通道

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

魅族通道

魅族通道初始化成功,可以看到以下日志信息:

说明:魅族控制台必须配置回执地址,详情请参见魅族辅助通道集成

meizu

检查辅助弹窗配置

接入推送辅助通道,确保您使用最新的辅助通道扩展包。查看当前设备是否支持辅助弹窗:

  • 小米辅助弹窗:支持V2.3.0及以上版本
  • 华为辅助弹窗:支持V3.0.8及以上版本
  • 华为弹窗当前只支持EmotionUI 4.1及以上版本

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

import com.alibaba.sdk.android.push.AndroidPopupActivity;
public class PopupPushActivity extends AndroidPopupActivity {
    static final String TAG = "PopupPushActivity";
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
    }
    /**
    * 实现通知打开回调方法,获取通知相关信息。
     * @param title     标题
     * @param summary   内容
     * @param extMap    额外参数
     */
    @Override
    protected void onSysNoticeOpened(String title, String summary, Map<String, String> extMap) {
        Log.d("OnMiPushSysNoticeOpened, title: " + title + ", content: " + summary + ", extMap: " + extMap);
    }
}

服务器端配置

注意:推送测试阶段建议不要使用全量推送,全量推送可能有统计新注册设备的延迟,容易误导用户。接入阶段建议按deviceID进行推送。

使用OpenAPI进行推送

  • OpenAPI 2.0的推送高级接口提供了AndroidPopupActivityAndroidPopupTitleAndroidPopupBody三个参数,分别用于设置辅助弹窗通知打开时跳转的Activity、通知标题以及通知内容(注意:StoreOffline参数也需要设置为true);

  • 辅助弹窗仅在当前厂商通道设备的应用后台进程被清理时生效,对非接入厂商通道设备和在线的设备不生效。

  • 当辅助弹窗生效时,推送接口的Title、Body、AndroidActivity以及额外参数设置中的功能性设置(如声音、震动等)都不起作用;

PushRequest pushRequest = new PushRequest();
// 其余设置省略
// 推送类别-通知
pushRequest.setPushType("NOTICE");
// 标题
pushRequest.setTitle(dateFormat.format(new Date()));
// 内容
pushRequest.setBody("PushRequest body");
// 额外参数
pushRequest.setAndroidExtParameters("{\"k1\":\"android\",\"k2\":\"v2\"}");
// 设置辅助弹窗打开Activity
pushRequest.setAndroidPopupActivity("*****");
// 设置辅助弹窗通知标题
pushRequest.setAndroidPopupTitle("*****");
// 设置辅助弹窗通知内容
pushRequest.setAndroidPopupBody("*****");
// 设置离线存储
pushRequest.setStoreOffline(true);

使用阿里云控制台进行推送

登录移动研发平台EMAS,选择移动推送后选择对应的应用,在左侧导航栏选择创建消息>推送通知,在高级设置(选填)中,设置厂商通道必要参数,如下图所示。

问题仍未解决

若上述步骤仍未能定位并解决问题,即在最后使用OpenAPI高级接口时还是无法推送到厂商设备,您可以通过以下方式咨询问题,咨询时请务必提供AppKey、messageID以及deviceID。

  • 您可以提交工单,提交工单时请选择移动推送类目。
  • 或者加入钉钉群咨询问题:

适用于

  • 移动推送