全部产品
云市场

移动推送 Android SDK:辅助通道和弹窗排查步骤

更新时间:2020-02-26 19:02:34

1 参数检查 :

检查控制台 App 详情中,在各个平台上获取的相关参数是否一一对应 ,注意:参数填写时注意不要多了空格 。image

2 终端集成确认 :

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

2.1 华为通道 :

华为通道初始化成功,如下图 :

huawei

有时没有注册信息上报,只要注册成功,返回token就是初始化成功的

2.2 小米通道 :

小米通道初始化成功,如下图 :

xiaomi

2.3 GCM/FCM通道 :

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

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

2.4 oppo 通道 :

OPPO 通道是否注册成功, 可以通过过滤 MPS:oppo 关键字查看 , 注册成功会打印 onRegister regid=**** 相关日志, 否则检查参数是否正确填入 , 阿里云控制台填写 oppo 的 MasterSecret,注意就是 MasterSecret,不是 appsecret,找不到可以咨询 oppo 客服 。

如果 targetSdkVersion 给 26 或以上,那么使用 oppo 通道时需要设置 NotificationChannel,NotificationChannel 在阿里云的说明详见 移动推送 Android : Android 8.0 以上设备通知接收不到?,oppo 的需要在 oppo 推送控制台创建一个通知渠道,注意 NotificationChannel 的 id,各处需要对应。

2.5 vivo 通道 :

vivo 通道初始化成功,可以看到以下日志 :vivo

2.6 魅族通道 :

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

魅族控制台必须配置回执地址,辅助通道接入文档有说明 。

2.7 检查辅助弹窗配置 :

接入推送辅助通道,确保使用最新的辅助通道扩展包,查看当前设备是否支持辅助弹窗(小米辅助弹窗:v2.3.0及以上支持;华为辅助弹窗:v3.0.8及以上支持,华为弹窗当前只支持EmotionUI 4.1及以上设备

指定打开的托管弹窗Activity,需要继承AndroidPopupActivity,并在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. }

3 服务器端配置

3.1 使用openAPI进行推送

检查服务器端的是否设置了AndroidPopupActivity、AndroidPopupTitle和AndroidPopupBody三个参数以及storeOffline参数也需要设置为true,推送的如为消息类型,需要AndroidRemind设为true:

  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
  12. pushRequest.setAndroidPopupActivity("*****");
  13. // 设置辅助弹窗通知标题
  14. pushRequest.setAndroidPopupTitle("*****");
  15. // 设置辅助弹窗通知内容
  16. pushRequest.setAndroidPopupBody("*****");
  17. // 设置离线存储
  18. pushRequest.setStoreOffline(true);

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

控制台推送时,点开高级设置,设置辅助通道必要参数,如截图 :concel

3.3 注意

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

4 问题仍未解决 :

若上述步骤仍未能定位问题,即 在最后使用 openAPI 高级接口时还是无法推送到厂商设备,您还可以:提工单 或者 在钉钉技术支持群咨询,咨询时 请务必 提供 appkey、messageId 以及 deviceId。

  • 提工单 ( 工单地址链接 ) 提 工单时,请选择类目 “ 移动推送 ” ;
  • 或 下载 钉钉客户端 , 加入钉钉群(群号:21735961 , 11795523 (已满) ) 联系技术支持;