关于确保用户收到他在 android 上安排的通知的问题?

Posted

技术标签:

【中文标题】关于确保用户收到他在 android 上安排的通知的问题?【英文标题】:question on making sure user gets notification that he schedules on android? 【发布时间】:2020-08-11 03:57:07 【问题描述】:

我一直在探索启动一个没有服务器的应用程序(只是 android 手机上的一个应用程序),但是当用户重新启动他的手机时,他会丢失之前在我的应用程序中设置的提醒通知,该应用程序不会像它那样经常打开更像是一个提醒应用程序。我有这个之前的帖子,我也刚刚添加了一个赏金

https://***.com/questions/63293900/code-in-trying-to-reschedule-previous-alarm-notifications-in-android-after-a-reb

但我开始怀疑并且还有第二个问题。我应该改为更改我的架构,以便我必须拥有一个服务器部分并通过 Google FCM api 触发通知,而不是每天向我的应用程序发送通知,以可能重新安排自手机重启后已失效的警报。有没有办法查看我的通知是否仍在安排中并会在正确的时间发出?

谢谢, 院长

【问题讨论】:

【参考方案1】:

我对你提到的问题做了一个非常详细的回答,但我也会在这里插话。

我是否应该改为更改我的架构,以便我必须拥有一个服务器部分并通过 Google FCM api 触发通知,而不是每天向我的应用发送通知,以重新安排自手机重启后已失效的警报。

简短的回答,不。

长答案,如果您使用 FCM 触发每日检查以确保安排所有通知,那么为什么不使用它来触发提醒通知本身呢? FCM 具有高优先级的消息,可以唤醒手机并允许您的应用程序执行一些代码。但是,如果您计划向公众发布此应用程序,则最终会产生一个隐私问题,如果应用程序将所有信息保留在本地,则该问题不存在。如果您是唯一的用户,那么使用服务器来处理任何事情就更没有意义了。如果是给几个朋友,那么服务器可能是一种选择,但我仍然建议不要这样做,即使他们没有隐私政策等也很好,因为这对应用程序来说是不必要的额外费用。

有没有办法查看我的通知是否仍按计划进行并在正确的时间发出?

如果我上面的回答还没有解决这个问题,虽然在技术上可能会发现您的应用程序是否使用 AlarmManager 设置了任何挂起的警报,但这样做是不可行的。 AlarmManager 不提供任何设置警报的任何可见性(请参阅this answer)。您必须想办法自己跟踪这一点,但就像我在第一部分中提到的那样,如果您要使用 FCM 来触发作业来安排通知,您不妨使用 FCM 来触发通知。

【讨论】:

以上是关于关于确保用户收到他在 android 上安排的通知的问题?的主要内容,如果未能解决你的问题,请参考以下文章

Laravel 安排推送通知并在必要时取消它

无法在 Android 上使用 AlarmManager 安排通知(使用 Qt)

解析远程通知和时区

如何在本地安排 React 中的重复网络通知?

有时一些 android 用户没有通过 GCM 收到推送通知

检索应用在后台时收到的通知列表