android - 当应用程序处于后台时如何在android中获取推送通知?

标签 android android-studio push-notification

我正在开发一个 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/

相关文章:

android - 如何更改 AlertDialog.Builder AppCompat 中项目的颜色?

Android studio 如何从github源构建项目

ios - 在一个目标 (GCM) 中有两个 GoogleService-Info.plist (或更多)

iphone - 如何告诉用户最近收到的推送通知

android - [Android][XML]错误 :(19, 31) 找不到与给定名称匹配的资源。(layout_above)

android - 如何在 Android Studio 中将应用上传到设备上

android - 如何在 Android Studio 4.1 中解析 "cannot resolve symbol ' R'"与 com.google.android.material 资源 ID 相关的问题?

ios - Azure 通知中心不适用于 ios

Java : Subclassing AsyncTask

java - 如何防止将用户输入添加到 MPandroidchart 时出现 java.lang.nullpointerException