微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Google GCM – 未在Android Lollipop中接收推送通知

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

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

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

在以前的Android版本(从4.0到4.4)我没有任何问题.

你知道Lollipop推送通知有什么问题吗?

谢谢

解决方法:

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

我做的第一个测试使用了我们现有的Android应用程序和服务器.在此失败后,我从Google Play商店下载了Push Notification Test.这在其他设备(Nexus 5等)上完美运行,但未能在Nexus 9上收到通知.

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

对于我上面提到的上一次尝试,我使用了这里找到的GCM演示应用程序:GCM Client以及我根据另一个用户代码修改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开始接收推送通知.显然谷歌修复了它.圆圈完成.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐