我正在开发一个 android 应用程序,用户可以在其中登录并查看收件箱中收到的消息(每条消息包含时间、日期、主题和发件人信息,这些信息已存储在我的数据库中)。有一个收件箱按钮,显示收件箱中收到的消息数量作为徽章通知,如果收件箱中有 10 条消息,则 10 显示为徽章通知中的文本。我成功地做到了这一切,但我希望每当用户在其收件箱中收到任何消息时;用户将通过推送通知收到应用程序打开或处于后台的通知。我搜索了很多,但我不知道从哪里开始。 各种帮助表示赞赏! 提前致谢。
最佳答案
您至少可以通过两种方式解决您的问题。
第一种方法是实现 AlarmManager
,它将启动服务,检查是否有新消息到达,如果是,您可以发出通知。但是这种方法的一些限制是您必须将 AlaramManager
设置为每隔一段时间触发一次服务,例如每 15 分钟一次,如果在此期间消息到达,则不会实时通知用户。实际上,您可以连续运行服务,但这是一种不好的做法,因为它会加快电池使用速度,并且如果需要可用空间,服务可能会被操作系统终止。
第二种方法是使用一些第三方客户端,如 FCM
,它是免费的,但每条消息(通知消息)限制为 4kb,这实际上足够用于通知。通常消息(通知消息)是从 Firebase 控制台
手动发送的,但第二个限制是如果你想在用户离线时发出通知,你必须包含 data payload
以触发 onMessageReceived
和上升通知。如果您想在应用程序处于后台时执行此操作,则需要自定义服务器端逻辑,因为这在 firebase 控制台中是不可能的。幸运的是,有教程如何做到这一点。本教程将帮助您设置 FCM
:
https://www.androidhive.info/2012/10/android-push-notifications-using-google-cloud-messaging-gcm-php-and-mysql/
在这里您可以找到用于发送消息的自定义 PHP 服务器: http://demo.androidhive.info/firebase/notifications/
关于android - 当应用程序处于后台时如何在android中获取推送通知?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45674017/