Shi*_*ack 5 android google-cloud-messaging
我已按照说明在此处设置Android GCM客户端应用程序,并且特别针对此摘录存在问题:
对于扩展WakefulBroadcastReceiver的现有应用程序,Google建议迁移到GCMReceiver和GcmListenerService.要迁移:在应用清单中,将GcmBroadcastReceiver替换为"com.google.android.gms.gcm.GcmReceiver",并将当前扩展IntentService的服务声明替换为新的GcmListenerService从客户端代码中删除BroadcastReceiver实现重构当前IntentService服务实现使用GcmListenerService
我在GCM实现中看到的大多数示例都使用了一个扩展的类WakefulBroadcastReceiver.比如这个.当您这样做时,您有机会使用NotificationManager和自定义通知图标,声音等.但是,如果您遵循Google的建议,我不确定如何自定义通知.大多数使用GcmListenerServiceGoogle建议的示例都会覆盖该onMessageReceived方法.但是,只有在收到通知时应用程序已经位于前台,或者用户单击通知本身时,才会调用该方法.该方法不是自定义通知声音的正确位置.在调用该方法之前已经播放了声音.
所以,如果我需要自定义通知声音,我应该覆盖一个不同的方法GcmListenerService,但是没有文档显示哪一个.另一种选择是使用此处sound描述的属性.但是你必须自己将声音文件捆绑在应用程序的目录中.这似乎是错的.我宁愿只使用系统提供的声音,主题等.res/raw
思考?
当我将它发布在Google Samples github wiki上时,@ SamStern回答了这个问题:
因此有两种GCM消息:
通知消息 - 这些消息旨在生成通知,而不会由应用程序进行中间处理.如果应用程序正在运行,它们只会触发onMessageReceived.
数据消息 - 这些消息旨在以静默方式将数据传递到应用程序的消息服务.即使应用程序在后台,它们也会点击onMessageReceived.然后,服务可以选择使用正常系统通知API生成通知,或者可以选择以静默方式处理消息.
我的想法是,如果客户端应用程序想要自定义通知如何呈现给用户(即更改通知托盘中的图标,根据应用程序的共享首选项中的声音设置播放声音等),那么我们必须制作服务器发送"数据消息"而不是"通知消息". 以下是Google Samples项目中的实现,展示了如何处理数据消息.
| 归档时间: |
|
| 查看次数: |
1562 次 |
| 最近记录: |