gpt4 book ai didi

android - 如何在使用 GCMReceiver 和 GcmListenerService 时自定义通知显示和提示音

转载 作者:塔克拉玛干 更新时间:2023-11-02 22:36:12 25 4
gpt4 key购买 nike

我已按照说明设置 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com