仅在 Android(Ionic 框架)上重新启动手机时,所有预定通知会立即显示

Posted

技术标签:

【中文标题】仅在 Android(Ionic 框架)上重新启动手机时,所有预定通知会立即显示【英文标题】:All scheduled notifications appear at once when restarting phone only on Android (Ionic framework) 【发布时间】:2016-04-17 21:42:47 【问题描述】:

这是我的问题:例如,假设我有一个每周安排通知的功能。因此,在安装我的应用程序五周后,我会显示 5 条通知(每周一条)。然后,我重新启动手机(无论出于何种原因),在那五周内显示的所有通知都同时出现。我不明白为什么我重启手机时之前的计划通知会全部显示一次? (顺便说一句,我会在显示这些通知后取消它们)。这个问题只出现在android上,同样的应用在ios上运行完美。那么,这些通知是怎么出现的呢?好像它们永远不会完全取消?我尝试了几种变体来避免这个问题,但它不想消失。有什么想法吗?

非常感谢!

PS:我正在使用此插件进行本地通知:katzer/cordova-plugin-local-notifications

【问题讨论】:

只有在预定时间过去后,所有 5 个都同时出现吗?或者说例如你安排了5,之后立即重启设备,然后它们都出现了? @NicRaboy 你好,Nic,它们只有在预定时间过去后才会出现。换句话说,如果预定的时间没有过去,我重新启动手机,什么都不会出现。事实上,如果我安排了 5 条通知,那么当设备重新启动时,只会显示已超过预定时间的通知。因此,如果对于 5 个预定通知,则仅通过其中 3 个的预定时间。然后,当我重新启动手机时,一次只会出现 3 条通知。 我可能错了,但这听起来应该是预期的行为。当我的 Android 手机死机并在充电 12 小时后启动时,我最终会收到大量通知。一直觉得很正常。也许 iOS 只是做不同的事情。 但是如果通知在设备关闭之前被取消,当你启动它时,通知不应该出现。我错了吗? 好吧,我可以用另一种方式来表述问题:我希望我的通知在几秒钟后被取消,即使应用程序已关闭。我怎么能那样做?显然问题是通知从未取消,所以我如何以编程方式安排通知并说“30 秒后取消自己”? 【参考方案1】:

我找到了答案。

iOS 会在触发后取消通知。安卓没有。因此,如果用户打开应用程序,假设您已安排通知在两天后出现,然后将其关闭而不重新打开,两天后他将按计划收到通知。但是,如果他从不重新打开该应用程序,则该通知将永远不会在 Android 上取消,并且每次您重新启动手机时该通知都会重新出现。要被取消,用户必须重新打开应用程序,以便您编写的用于取消通知的代码可以运行。这很烦人,因为通知的目的(至少在我的情况下)是允许用户在不打开应用程序的情况下获取信息。幸运的是,在 iO 上,通知会自行取消,因此可以完美运行。

感谢 Nic Raboy 的时间和帮助。

【讨论】:

是的,Android 的通知可能有点奇怪。很高兴你得到它:-)

以上是关于仅在 Android(Ionic 框架)上重新启动手机时,所有预定通知会立即显示的主要内容,如果未能解决你的问题,请参考以下文章

为啥我无法通过 ionic 框架在 Android 上接收推送通知

为啥 Google Maps Cordova ionic angular 仅在 Android 中工作而在 IOS 中为空白?

在开机或重启设备时启动Android服务[重复]

Ionic 2 构建的应用程序(IOS、Android)在启动时很慢

离子请求仅在 android 上返回 404,在 Chrome 中它工作正常

ionic框架中的Android Webview等价物是啥?