开发者社区> 问答> 正文

java openApi 推送通知,设置了辅助弹窗,但是android APP还是无法收到离线通知

java openApi 推送通知,设置了辅助弹窗,但是android APP还是无法收到离线通知,但是在控制台推送,离线就可以收到,这是为什么

展开
收起
tcgk7aigwwbjs 2020-10-16 13:15:40 1429 0
1 条回答
写回答
取消 提交回答
  • 下一站是幸福

    终端集成确认

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

    华为通道初始化成功,如下图所示。有时没有注册信息上报,但只要注册成功,返回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:oppo关键字查看。注册成功会打印“onRegister regid=****”相关日志,注册失败请检查参数是否正确填入,阿里云控制台上需要填写OPPO的MasterSecret,而不是appsecret,找不到可以咨询OPPO客服。

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

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

    vivo 魅族通道

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

    说明:魅族控制台必须配置回执地址,详情请参见辅助通道接入文档。
    

    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进行推送

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

    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
    
    2021-04-02 22:00:10
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
58同城Android客户端Walle框架演进与实践之路 立即下载
Android组件化实现 立即下载
蚂蚁聚宝Android秒级编译——Freeline 立即下载