所以我用React Native和Expo创建了一个提醒应用。
我遵循Expo文档,该文档要求您使用Firebase Cloud Messaging设置应用程序,即使您只发送本地计划通知。我还使用app.json在android清单中添加了确切的警报权限。此外,应用程序的通知通道的android重要性被设置为MAX。最后,通知本身的Android优先级也设置为MAX。
应用程序中的一切都很好,除了一件事:
当Android设备处于非活动状态一段时间后,预定的通知不会在预定的时间出现。
我认为这是因为设备进入了休眠模式,这是Android电池优化功能的一部分。瞌睡模式可以延迟通知。
我只是很惊讶——如果它甚至不能通过休眠模式,那么本地的、预定的通知功能有什么意义呢?
我可能忽略了一个解决方案。有人有什么想法吗?如果不是,我可能不得不重写大量代码,使通知不是本地的。
谢谢!
我首先尝试将通知的优先级设置为高,但在不活动期间通知仍然不会出现。所以我把通知的优先级切换到MAX,这似乎也不起作用。
在npm上有一个包可以禁用react native应用中的电池优化,但显然这会让你被谷歌封杀,我宁愿不被封杀。
编辑:另一个相关细节是,当我在开发早期测试Expo Go应用程序时,预定的本地通知完全不受打盹模式的影响。我会把它安排在晚上,然后忘记它,第二天早上它就会来。我想知道这是否是一个需要改变的指标??
有两个地方你可以设置优先级为notifications。androidnotificationpriority。max "——
发送通知时一次,处理通知时一次。我只是在发送通知时设置的。
查看文档Ctrl + F并搜索"AndroidNotificationPriority">