R. *_*pos 4 google-cloud-messaging
我按照新的教程在Android上实现GCM客户端,我无法让它工作.
我成功地获得了令我的设备的令牌,当我发送以下消息时
{
"to": "f19jCbaw-S4:APA91b....",
"notification": {
"body": "body",
"title": "title"
},
"data": {
"message": "test"
}
}
Run Code Online (Sandbox Code Playgroud)
到https://gcm-http.googleapis.com/gcm/send,我得到了结果:
{
"multicast_id": 844556567...,
"success": 1,
"failure": 0,
"canonical_ids": 0,
"results": [
{
"message_id": "0:1433092445706613%..."
}
]
}
Run Code Online (Sandbox Code Playgroud)
但我的应用程序永远不会进入MyGcmListenerService类的onMessageReceived.我唯一的线索是以下日志跟踪:
6399-6454/com.miapp.app W/GcmNotification? Failed to show notification: Missing icon
Run Code Online (Sandbox Code Playgroud)
我一步一步地重复了 Google Cloud Messaging Quickstart示例项目.很糟糕,我使用我的api密钥和我的发件人ID ...但是id不起作用,我的app永远不会停留在我的onMessageReceived方法中.
还有其他人有这个问题吗?
事实上,没有通知的有效负载应该达到"onMessageReceived"方法并且工作正常,但如果通知存在于有效负载中,则会显示相同的错误"无法显示通知:缺少图标".
我试图在AndroidManifest.xml中设置图标(在接收器上的两个intent-filter上),但没有任何效果.
如果您不需要通知,只需从有效负载中删除它们即可.
如果您需要通知,则需要在通知中添加另一个必填字段:
如果您的图标位于mipmap中,则可以添加:
"icon" : "ic_launcher"
Run Code Online (Sandbox Code Playgroud)
如果你的图标在drawable中,你应该:
"icon" : "@drawable/ic_myicon"
Run Code Online (Sandbox Code Playgroud)
所以你的新请求看起来像:
{
"to": "f19jCbaw-S4:APA91b....",
"notification": {
"body": "body",
"title": "title",
"icon" : "@drawable/ic_myicon"
},
"data": {
"message": "test"
}
}
Run Code Online (Sandbox Code Playgroud)