谷歌 GCM - 在安卓 Lollipop 中无法接收推送通知

7
在我的Android应用程序中,我使用GCM从我的公司服务器接收消息。
我编写了适用于C2DM的代码,并按照迁移代码到GCM的说明进行操作(http://developer.android.com/google/gcm/c2dm.html)。
在Android Lollipop(Nexus 9 wifi)中,设备注册推送通知并接收到推送注册ID,但当我从我的服务器发送消息时,设备上没有接收到任何消息。
在以前的Android版本中(从4.0到4.4),我没有遇到任何问题。
你知道Lollipop推送通知方面有什么问题吗?
谢谢

我使用Google开发者网站的源代码创建了一个名为“Hello world”的项目。 https://developer.android.com/google/gcm/client.html 但是我没有收到任何通知。 我发现在Nexus 9 WIFI上,我无法从任何应用程序接收通知。 - TizioIncognito
3个回答

9
我们在办公室遇到了同样的问题,这就是我在这里看到你的帖子的原因。我测试了三个不同的Nexus 9设备(仅WiFi),每种情况下它们都成功注册推送......但从服务器发送的通知却从未收到过。
我进行的第一项测试使用了我们现有的Android应用程序和服务器。在此不成功后,我从Google Play商店下载了Push Notification Test。这在其他设备上运行得非常好(Nexus 5等),但在Nexus 9上未能接收通知。
仅出于可能存在Play Store测试应用程序过时的问题,我创建了一个测试Android应用程序和服务器脚本,以查看是否可以进一步缩小问题范围。我遇到了相同的问题。除了Nexus 9之外,我测试的每个设备都注册并接收了推送通知。我尝试改变项目中Google Play服务库的版本(从最新版本到几个版本之前),但没有效果。

在我上述的最后一次尝试中,我使用了此处找到的GCM演示应用程序:GCM客户端,以及一个基于另一个用户代码修改的php脚本(显然已删除密钥和注册ID):

<?php

$nexus5 = '';
$nexus9 = '';
$nexus9Alt = '';
$registrationIds = array($nexus5,$nexus9,$nexus9Alt);

$apiKey = '';

$msg = array
(
    'message'       => 'Do you know smell what the rock is cooking?',
    'title'         => 'Push Test',
    'subtitle'      => 'This is a subtitle',
    'tickerText'    => 'This is the ticker',
    'vibrate'       => 1,
    'sound'         => 1
);

$fields = array
(
    'registration_ids'  => $registrationIds,
    'data'              => $msg
);

$headers = array
(
    'Authorization: key=' . $apiKey,
    'Content-Type: application/json'
);

$ch = curl_init();
curl_setopt( $ch,CURLOPT_URL, 'https://android.googleapis.com/gcm/send' );
curl_setopt( $ch,CURLOPT_POST, true );
curl_setopt( $ch,CURLOPT_HTTPHEADER, $headers );
curl_setopt( $ch,CURLOPT_RETURNTRANSFER, true );
curl_setopt( $ch,CURLOPT_SSL_VERIFYPEER, false );
curl_setopt( $ch,CURLOPT_POSTFIELDS, json_encode( $fields ) );
$result = curl_exec($ch );
curl_close( $ch );

echo $result;
更新:我们已经将办公室里的三个平板电脑升级到5.0.1 OTA,但是这些平板电脑仍然无法接收推送通知。谷歌方面也没有任何消息,但希望下一次OTA能够修复这个问题。 更新:在1月13日,我们注意到Nexus 9开始接收推送通知。显然谷歌已经解决了这个问题。圆满完成。

0

0

我通过在移动网络上测试GCM拉取通知而不是办公室WIFI来解决了这个问题。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接