概述
本文主要介绍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
说明初始化成功。
小米通道
小米通道初始化成功,如下图所示。
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:**相关日志,否则检查参数是否正确填入。
魅族通道
魅族通道初始化成功,可以看到以下日志信息:
说明:魅族控制台必须配置回执地址,详情请参见魅族辅助通道集成。
检查辅助弹窗配置
接入推送辅助通道,确保您使用最新的辅助通道扩展包。查看当前设备是否支持辅助弹窗:
- 小米辅助弹窗:支持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的推送高级接口提供了
AndroidPopupActivity
、AndroidPopupTitle
和AndroidPopupBody
三个参数,分别用于设置辅助弹窗通知打开时跳转的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。
- 您可以提交工单,提交工单时请选择移动推送类目。
- 或者加入钉钉群咨询问题:
- 钉钉下载地址:单击下载
- 钉钉群号:30959784
适用于
- 移动推送