- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我已按照说明设置 Android GCM 客户端应用程序 here ,并且对这段摘录有特别的疑问:
For existing apps that extend a WakefulBroadcastReceiver, Google recommends migrating to GCMReceiver and GcmListenerService. To migrate: In the app manifest, replace your GcmBroadcastReceiver with "com.google.android.gms.gcm.GcmReceiver", and replace the current service declaration that extends IntentService to the new GcmListenerService Remove the BroadcastReceiver implementation from your client code Refactor the current IntentService service implementation to use GcmListenerService
我见过的大多数 GCM 实现示例都使用了扩展 WakefulBroadcastReceiver
的类。如this one .当您这样做时,您将有机会使用 NotificationManager
并自定义通知图标、声音等。但是,如果您遵循 Google 的建议,我不确定如何自定义通知。大多数使用 Google 建议的 GcmListenerService
的示例,只需覆盖 onMessageReceived
方法。但是只有在收到通知时应用程序已经在前台或者用户单击通知本身时才会调用该方法。该方法不是自定义通知声音的正确位置。在调用该方法之前已经播放了声音。
因此,如果我需要自定义通知声音,我可能应该覆盖 GcmListenerService
中的不同方法,但没有文档显示是哪一个。另一种选择是使用 here 中描述的 sound
属性.但是您必须自己将声音文件 bundle 到应用程序的 res/raw
目录中。这似乎是错误的。我宁愿只使用系统提供的声音、主题等。
想法?
最佳答案
@SamStern当我将它发布在 Google Samples github wiki 上时,为我回答了这个问题。 :
So there are two kinds of GCM messages:
Notification Messages - these are intended to generate a notification with no intermediate processing by the application. They only hit onMessageReceived if the app is running.
Data Messages - these are intended to silently pass data to the app's messaging service. They hit onMessageReceived even if the app is in the background. The service may then choose to generate a notification using the normal system notification APIs, or it may choose to handle the message silently.
我的结论是,如果客户端应用想要自定义向用户显示通知的方式(即更改通知托盘中的图标、根据应用共享首选项中的声音设置播放声音等),那么我们必须让服务器发送“数据消息”而不是“通知消息”。 Here's Google 示例项目中的实现,展示了如何处理数据消息。
关于android - 如何在使用 GCMReceiver 和 GcmListenerService 时自定义通知显示和提示音,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35257410/
我已按照说明设置 Android GCM 客户端应用程序 here ,并且对这段摘录有特别的疑问: For existing apps that extend a WakefulBroadcastRe
我正在尝试在我的 Android 应用程序上实现 GCM 推送通知,我正在按照此处的指南进行操作 https://developers.google.com/cloud-messaging/andro
我在这个问题上已经两天了 我正在尝试将 GCM 集成到 eclipse 环境中的 android 应用程序中。一切都很顺利,但是一旦我必须收到推送通知消息,我就有了 03-07 12:19:43.72
我是一名优秀的程序员,十分优秀!