即使手机被锁定/睡眠也能保持应用程序工作 - Ionic4
Posted
技术标签:
【中文标题】即使手机被锁定/睡眠也能保持应用程序工作 - Ionic4【英文标题】:Keep app working even when phone is locked/sleep - Ionic4 【发布时间】:2020-02-04 12:01:50 【问题描述】:App 是一个 ionic4 电容器应用程序,它也使用了少量的 cordova 插件。我有一个与蓝牙设备相关的定时器功能,即使手机进入睡眠状态或处于锁定模式,它也必须保持运行。使用 cordova-background-mode 插件,该应用程序在后台运行,但一旦手机被锁定或处于睡眠状态,计时器就会停止工作。当屏幕恢复时,计时器从它停止的地方继续。
在我的案例中,我不能使用平台暂停和恢复事件,因为只是计算差异并加上时间会在我的用例中提供错误的值。
此应用与高度调整表配合使用,用户可以使用该应用调整高度并跟踪他站立的时间。 (当桌子达到一定高度时计时器开始运行)。高度调节台也有按钮来控制它的高度。
用例(为什么我不能使用平台恢复和暂停事件以及时间戳):
-
办公桌处于站立位置。计时器开始运行。
我锁定了我的手机(已创建时间戳)
我坐了1小时(桌子也有按钮来控制高度,所以这是指用户使用它来降低高度并且处于坐姿,但手机仍然处于锁定/睡眠状态)
我回到站立姿势 20 分钟
我解锁了我的手机。 (创建第二个时间戳)
现在它会显示 1:20 分钟的站立时间,即使我只站立了 20 分钟
即使手机被锁定,我还能如何让我的应用计时器运行?或者我应该使用 insomnia cordova 插件在计时器运行时让它保持清醒?当用户使用失眠插件手动锁定手机时会发生什么?它会保持清醒吗?
【问题讨论】:
看到这个帖子github.com/katzer/cordova-plugin-background-mode 我完全使用相同的插件在后台模式下运行。这仅在用户唤醒手机并浏览其他应用程序时才有效。手机锁定/睡眠时不起作用。 @RahulChokshi 桌子高度变化时是否会发送蓝牙通知?这就是你所需要的。使用核心蓝牙后台模式,您的应用程序可以接收该通知,并将在后台“唤醒”。然后它可以存储时间戳并返回睡眠 - 注意,如果适用于 ios。我对安卓一无所知 是的,蓝牙通知会发送有关高度变化的通知,但是当手机锁定时它不起作用。没有尝试使用通知功能唤醒手机。我会试试的。谢谢。 【参考方案1】:我使用 ble 的 startNotification 方法中的 cordova 后台模式插件中的唤醒方法让它工作。 @Paulw11 的建议有帮助!
嗨, 我有同样的问题。我不明白 MJ2410 的回答——“使用 ble 的 startNotification 方法中的 cordova 背景模式插件中的唤醒方法让它工作”。你能详细说明一下吗? 谢谢
【讨论】:
cordoba 后台模式插件提供了一种唤醒方法。每当 ble 设备发生任何状态更改时,您都可以使用它来唤醒手机。我使用了上述 cmets 的这个建议。 " 使用核心蓝牙后台模式,您的应用可以接收该通知,它会在后台“唤醒”。然后它可以存储时间戳并重新进入睡眠状态"。以上是关于即使手机被锁定/睡眠也能保持应用程序工作 - Ionic4的主要内容,如果未能解决你的问题,请参考以下文章
手机进入睡眠状态后,在前台服务中保持 wifi 处于活动状态