作者:史婧羽,开发技术推广工程师,Partner DevRel
本文为 Android 电量管理系列连载的第二篇,希望您能在阅读过程中收获设备续航方面的战略洞见和实践指导。
通知是让应用用户保持联系和获取更新的重要渠道。Android 提供通知 API 用于在设备上创建和发布通知,但这些通知经常由外部事件触发,并从应用服务器发送至应用。
通知 API:
https://developer.android.google.cn/guide/topics/ui/notifiers/notifications
本文将解释何时以及如何生成这些远程通知,以便为用户提供及时更新并尽量省电。
用 FCM 实现远程通知
我们推荐使用 Firebase 云消息 (FCM) 发送远程通知到 Android 设备。FCM 是一种免费的跨平台消息传递解决方案,每日可靠传递千亿条消息。尤其是用于发送远程通知,以通知客户端应用数据可同步。如果您仍使用已被弃用的 Google 云消息 (GCM) 或 C2DM 库,是时候升级到 FCM 了!
有两种类型的 FCM 消息可选:
通知消息,简化了通知处理且默认高优先级。
数据消息,适用于在客户端应用内处理 FCM 消息。
您可以把数据信息的优先级设为高或普通。如需进一步了解 FCM 消息和消息处理,可参阅 Firebase 博客上的这篇文章。
FCM 针对 Android 电源管理特性进行了优化。运用合适的消息优先级和类型,能帮您及时通知用户,还能帮用户省电。如需进一步了解电源管理,可参阅这篇文章:"Android 9 Pie 中的 Moar 电源及未来"。
Firebase 云消息:
https://firebase.google.cn/docs/cloud-messaging/
Google 云消息:
https://developer.android.google.cn/cloud-messaging/gcm
C2DM:
https://developer.android.google.cn/android/c2dm/
通知消息:
https://firebase.google.cn/docs/cloud-messaging/concept-options#notifications
数据消息:
https://firebase.google.cn/docs/cloud-messaging/concept-options#data_messages
优先级设为高或普通:
https://firebase.google.cn/docs/cloud-messaging/concept-options#setting-the-priority-of-a-message
Firebase 博客上的这篇文章:
https://firebase.google.cn/2018/09/handle-fcm-messages-on-android.html
是否需要发送通知?
您发送的所有通知都应该设计良好且可执行,并且能为用户提供及时相关的信息。我们推荐您遵循这些通知指导原则,并避免向用户发送垃圾信息。没人想被无关或杂乱无章的通知打扰。如果您的应用这样做,用户可能屏蔽通知甚至卸载您的应用。
Material Design 通知文档中的 ‘何时不使用’ 通知一节列出了不应该向用户发送通知的一些情况。例如,普通优先级 FCM 数据消息的常见用例是告诉应用有新内容准备同步,但这一操作无需用户交互。所以同步不需要通知用户,应在后台静默进行,而您可以用 WorkManager