jpush / jpush-phonegap-plugin

JPush's officially supported PhoneGap/Cordova plugin (Android & iOS). 极光推送官方支持的 PhoneGap/Cordova 插件(Android & iOS)。
https://docs.jiguang.cn
MIT License
926 stars 350 forks source link

ios Jpush前台收不到自定义消息,后台能收到 #318

Closed xumingyi closed 6 years ago

xumingyi commented 6 years ago

WARNING: 如果不按照这个表格,我们将无法帮助你,并将忽略你的问题。

你的运行环境

期望效果

期望ios程序在前台和后台都能收到jpush的自定义消息。

实际效果

jpush推送自定义消息 , 程序启动了后台模式android前后台都好用,ios程序在后台能收到推送消息,在前台就走不到回调的listener里, ios JPush的时候ios和android需要有什么不同的处理?用的这个插件, document.addEventListener("jpush.receiveMessage", this.jpushDefineEventListener, false);//接收自定义消息

重现步骤

  1. this.jpush.init();
  2. document.addEventListener("jpush.receiveMessage", this.jpushDefineEventListener, false);//接收自定义消息
  3. 程序在后台,推送自定义消息,能收到。
  4. 程序在前台,用户能看的情况下,推送自定义消息,能不到。

背景

尝试关闭和打开后台模式。没有解决 this.backgroundMode.enable(); this.backgroundMode.disable();

Debug logs

包括 Android 或 iOS 的日志:

huangminlinux commented 6 years ago

应用需要在打开状态才接受到自定义消息,不明白你为什么在后台能收到这个事件。

注意自定义消息和推送是完全不同的东西,可以参考 https://docs.jiguang.cn/jpush/client/iOS/ios_sdk/ 这个链接 (自定义消息就是文档中的应用内消息)。

xumingyi commented 6 years ago

document.addEventListener("jpush.receiveMessage", function (event) { var message if(device.platform == "Android") { message = event.message; } else { message = event.content; } }, false) 我用的就是这个接口? ios和android不是通用的? 我是启动的backgroundmode所以才能在后台也收到回调的触发。然后在provider中添加了一个本地通知。android这个流能够走通, 但是ios的异常就很反常,后台收不到我也认了,呜呜,可能是backgroundmode不好用,前台收不到是为啥呢? 或者说你们是不建议使用自定义消息? 因为我们是自定义的消息体,根据消息内容自己去弹的通知。所以就使用了这个接口。

huangminlinux commented 6 years ago

通过 registrationID 给 iOS 端发送自定义消息,如果前台还是收不到,可以到极光社区 将你发送失败的 msgId 和 appkey 给官方查查发送状态。

xumingyi commented 6 years ago

这个问题是我们服务器端推送的android是 receivedMessage, ios端给推得就是notification 所以ios用receivedMessage的监听收不到回调。