Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/93.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/visual-studio-code/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如果同时使用iOS,Google Play Services 8.4.0将破坏Android的Google云消息功能_Android_Ios_Notifications_Google Cloud Messaging_Google Play Services - Fatal编程技术网

如果同时使用iOS,Google Play Services 8.4.0将破坏Android的Google云消息功能

如果同时使用iOS,Google Play Services 8.4.0将破坏Android的Google云消息功能,android,ios,notifications,google-cloud-messaging,google-play-services,Android,Ios,Notifications,Google Cloud Messaging,Google Play Services,有几篇文章描述了这个问题的各个方面,但还没有一个令人满意的答案,所以我试图在这里对它们进行整理,希望得到一个能够解决所有这些问题的权威答案 问题的要点是,如果您仅使用数据创建GCM消息(即不使用通知字段,因此不打算让它生成通知),并且您包含content_available=True(这是从iOS客户端获得所需行为所必需的),那么从8.4.0开始,这会在Android中生成不需要的空白通知。在8.4.0之前,一切正常 问题的具体情况似乎是,如果Android客户端接收到一个它不理解的GCM

有几篇文章描述了这个问题的各个方面,但还没有一个令人满意的答案,所以我试图在这里对它们进行整理,希望得到一个能够解决所有这些问题的权威答案

问题的要点是,如果您仅使用数据创建GCM消息(即不使用通知字段,因此不打算让它生成通知),并且您包含content_available=True(这是从iOS客户端获得所需行为所必需的),那么从8.4.0开始,这会在Android中生成不需要的空白通知。在8.4.0之前,一切正常

问题的具体情况似乎是,如果Android客户端接收到一个它不理解的GCM字段,而不是忽略它,它会添加一个“e=1”字段(可能“e”表示错误?)作为通知,即使之前消息中没有通知,也会触发出现通知的代码,而不是指向要处理的应用程序的代码

可能的解决方法:我设想可以跟踪服务器上哪些客户端是iOS,哪些客户端是Android,并且只包括iOS客户端的content_available标记,这个问题就会得到解决。然而,在过去没有必要这样做,我的系统是基于这样一种想法构建的,即我可以像预期的那样对客户端类型不可知

content_available标志突然导致Android上出现这些空白通知,这似乎是一个新引入的错误,但如果知道它是否是一个可能在8.5.0中修复的错误,这将非常有用(在这种情况下,我现在可以使用8.3.0构建,直到8.5.0发布),或者,如果这是一个永久性的解决方案。如果这一点不会改变,那么正确的解决方案是跟踪哪些GCM注册ID属于iOS设备,哪些属于Android设备,然后每次发送两个单独的GCM请求吗


提前感谢谷歌团队对这个问题的任何官方回复。

Se我的答案。我找到的解决方案是在我的服务器上发送这个值为零的
e
字段。对于安卓来说,它是有效的,但还没有在iOS上测试过

今天,我终于得到了谷歌的确认,这实际上是一个bug,而且修复程序已于本周推出。我还可以确认,我在8.3.0中看到的行为现在与在8.4.0中看到的行为相同,因此显然修复完全是在服务器端完成的


我还被告知,将服务器端的GCM消息在iOS设备和Android设备之间进行分区实际上是最佳做法,因为在未来的某些时候,不同的平台可能需要不同的有效载荷。

升级9.2.1版后,应用程序处于后台(@dblank解决方案不适用于我)

解决方法:删除Android的
通知
节点

{
    "to": "APA91bHun4MxP5egoKMwt2KZFBaFUH-1RYqx...",
    "notification": {},  //Remove this node when PUSH to Android devices
    "data": {
        "key": "value"
    }
}

我认为浏览并在上发布是最好的方式。好建议,谢谢。我在那里没有看到任何与此相关的内容,所以我将其发布为Hm,这立即被认为是一个错误的论坛:“对不起,这个跟踪器只针对Android操作系统的问题。请使用它来获取对谷歌产品或服务的支持。”但是,除非我遗漏了什么,否则它看起来确实是一个用户支持的地方,不是开发人员支持。好了,我终于找到了我认为最适合这样归档bug的地方:我要在那里归档这一个,然后再报告。对不起。这应该是正确的。