Cordova 使用带有FCM通知的phonegap插件推送:如何正确设置可用内容:1

Cordova 使用带有FCM通知的phonegap插件推送:如何正确设置可用内容:1,cordova,notifications,firebase-cloud-messaging,phonegap-pushplugin,Cordova,Notifications,Firebase Cloud Messaging,Phonegap Pushplugin,对于phonegap插件推送触发的通知事件处理程序,content available是否必须是推送数据对象的第一级子对象 若有的话,有并没有办法将可用内容:1设置为firebase控制台通知中推送数据对象的第一级子对象 我已经用cordova CLI创建了一个android应用程序,它使用phonegap插件推送,我正在使用Google Firebase控制台发送推送通知 当应用程序位于前台时,推送通知按预期工作。如果推送通知到达时应用程序不在前台(例如,当通过单击锁屏上的通知打开应用程序时

对于phonegap插件推送触发的通知事件处理程序,
content available
是否必须是推送数据对象的第一级子对象

若有的话,有并没有办法将
可用内容:1
设置为firebase控制台通知中推送数据对象的第一级子对象


我已经用cordova CLI创建了一个android应用程序,它使用phonegap插件推送,我正在使用Google Firebase控制台发送推送通知

当应用程序位于前台时,推送通知按预期工作。如果推送通知到达时应用程序不在前台(例如,当通过单击锁屏上的通知打开应用程序时),则永远不会调用通知事件处理程序

我认为问题的原因是可用的
内容:1
不可用 在
附加数据
对象内

我在firebase控制台中看到的唯一输入可用内容的地方是“自定义数据”字段

这是当应用程序位于前台并且在Firebase console>通知>高级选项>自定义数据中将
可用内容设置为
1
时收到的推送数据对象

data {
  title: "message title", 
  message: "test message 12", 
  additionalData: {
    content-available: "1", 
    coldstart: false, 
    collapse_key: "com.domain.appname", 
    foreground: true
    }
  }

这是我发送给GoogleAPI的有效载荷。当应用程序位于前台、后台或应用程序关闭时,此功能有效。这适用于Android和IOS:

{ 
"registration_ids":["device token"],
"content_available": true,
"notification" : {
    "force-start": "1",
    "content-available": "1",
    "no-cache": "1",
    "body":"Test" ,
    "title" : "Test",
    "sound" : "default" ,
    "icon":"default",
    "badge": 56
},
"data": {
    "force-start": "1",
    "content-available": "1",
    "no-cache": "1",
    "body":"Test" ,
    "title" : "Test",
    "sound" : "default" ,
    "icon":"default",
    "badge": 56
},
"priority":10

}

我不确定您对生成的对象结构的描述是否正确。你从哪里得到问题的结构,特别是additionalData对象是phonegap插件正在添加的东西?@Arthur Thompson这是phonegap插件通过JavaScript通知事件传递的对象的结构。我不知道FCM发送的对象在插件处理之前是什么样子。我在FCM自定义数据部分输入了键值对
可用内容:“1”
,但我不知道additionalData对象的来源。您无法从Firebase控制台设置可用内容。您必须从RESTAPI发送它。至于您看到的行为,当应用程序处于后台时,没有回调,这是预期的行为。从Firebase控制台发送的消息是通知消息,请参见此处的更多信息:感谢您的澄清
可用内容
在Firebase控制台不可用。关于回调:我不打算在后台运行任何回调,我希望在下次应用获得焦点/打开时能够从应用内访问推送通知数据。对于通知消息,只有用户通过点击通知返回到应用时,您才能获取数据负载。如果用户解除通知,则与通知消息一起发送的任何数据有效负载都将丢失。