java - 发送触发服务器拉取请求的 Firebase 消息或通知的最佳方式

标签 java android firebase firebase-cloud-messaging

  • 目前,我负责的 Android 应用程序每分钟都会在服务器上执行一次“拉取”操作,以恢复数据并使用该数据更新 fragment 。显然,当设备切换到打瞌睡模式时,这不起作用。因此,我决定按照 Google 的建议使用 FCM。

约束:

  • 用户需要知道即使在打瞌睡模式下也有新数据可用。

  • 为了不对应用程序进行太多更改,我不想在 firebase 消息中发送数据,而是在收到 fcm 消息时向服务器发送 https 请求。

  • fcm 消息必须:

    1. 通过通知告知用户有新数据可用。

    2. 如果用户按下通知或者在打开屏幕后返回到应用程序,则必须触发 https 请求并且必须更新 Fragment。 我要补充的是,它必须最迟在用户返回应用程序时触发。

我现在的解决方案

我使用了高优先级的数据消息而不是通知消息,因为通知消息需要用户录制通知来触发操作。

在 onMessageReceived 中:

  • 我发送了重定向到我的应用程序的通知。
  • 我将请求发送到服务器并更新我的应用程序。

我的解决方案的缺点:

  • 如果我的应用在屏幕关闭时被系统终止,会发生什么情况?
  • 当手机退出打盹模式时,我的请求有完成时间限制。

问题:

  • 这个解决方案是最好的吗?
  • 还有其他方法吗?
  • 也许我可以安排一个任务,当用户在收到的 onMessage 中恢复我的应用程序时立即运行?但我不知道该怎么做。

最佳答案

使用WorkManager安排后台工作立即运行。它还会重试,直到您的代码指示成功。

关于java - 发送触发服务器拉取请求的 Firebase 消息或通知的最佳方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57154738/

相关文章:

java - java中的内部类和本地内部类有什么区别?

java - 使用 Java 代码更改 FrameLayout 的顺序

android - 使用 createMaterialBottomTabNavigator for android 在选项卡之间滑动

javascript - 使用 React 组件登录 Firebase

swift - 如何更新存储节点 firebase swift

android - 为每个构建变体配置 Firebase Analytics + Google Tag Manager (GTM)

java - 如何以线程安全且高效的方式使用 XPath?

java - 对 JButton 进行编程以在单击时创建对象

java - 为 Jar 文件编写 Unix 安装程序

android - 使用 android volley 发出 HTTPS 请求