Google GCM - 在安卓棒棒糖中没有收到推送通知



在我的安卓应用程序中,我使用 GCM 从公司服务器接收消息。

我为 c2dm 编写了代码,并按照说明将代码迁移到 GCM。(http://developer.android.com/google/gcm/c2dm.html)

在android Lollipop(Nexus 9 wifi)中,设备注册推送通知并接收推送注册ID,但是当我从服务器发送消息时,在设备中我没有收到任何消息。

在以前的安卓版本(从 4.0 到 4.4)中,我没有任何问题。

你知道棒棒糖的推送通知有什么问题吗?

谢谢

我们在办公室遇到了同样的问题,这就是为什么我在这里偶然发现了你的帖子。我已经测试了三个独立的Nexus 9设备(仅限WiFi),在每种情况下,它们都成功注册了推送...但从不接收从服务器发送的任何通知。

我所做的第一个测试使用了我们现有的Android应用程序和服务器。失败后,我从谷歌Play商店下载了推送通知测试。这在其他设备(Nexus 5...等)上完美运行,但在Nexus 9上无法收到通知。

只是为了解决Play商店测试应用程序过时的问题,我创建了一个测试Android应用程序和服务器脚本,以查看是否可以进一步缩小问题范围。我遇到了同样的问题。除Nexus 9外,我测试的每台设备都注册并收到了推送通知。我尝试更改项目中Google Play服务库的版本(从最新版本到几个版本),但没有效果。

在上面提到的最后一次尝试中,我使用了此处的GCM演示应用程序:GCM客户端以及我根据其他用户的代码修改的php脚本(显然删除了密钥和reg 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开始接收推送通知。显然谷歌修复了它。圆圈就完成了。

我有一个相当简单的AndroidGCM应用程序,在Kitkat上运行良好。棒棒糖升级后,会出现"显式意图"错误(Android 5.0 (L) 服务意图在谷歌分析中必须明确)。我修复了这个问题,没有错误,也没有设备注册!

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

最新更新