我们是否可以检测用户是否在不听darwin通知的情况下通过主页按钮或锁定按钮离开了?

问题描述

在搜索了苹果公司的文档并挖掘了很多线程之后,我想我可能偶然发现了该解决方案。

据我所知,这是目前检测用户是否通过主页按钮或锁定按钮离开的唯一方法(我认为这在模拟器上不起作用,您必须在实际的电话上尝试一下)。

func applicationDidEnterBackground(_ application: UIApplication) {

}

func DidUserPressLockButton() -> Bool {
    let oldBrightness = UIScreen.main.brightness
    UIScreen.main.brightness = oldBrightness + (oldBrightness <= 0.01 ? (0.01) : (-0.01))
    return oldBrightness != UIScreen.main.brightness
}

func applicationDidEnterBackground(_ application: UIApplication) {
    if (DidUserPressLockButton()) {
        //User pressed lock button
    } else {
        //user pressed home button
    }
}

applicationDidEnterBackground用户离开锁定按钮(而不是主页按钮)时起,苹果似乎只能让您更改屏幕亮度。因此,其想法是以很小的量更改屏幕亮度,并检查是否可以更改它。这似乎有点怪异,但我 这实际上按预期工作。就测试而言,它似乎在100%的时间内都有效。除了真正要更改屏幕亮度的用户外,我没有发现任何其他问题。我希望其他人可以找到一些不太骇人,更具体的东西。

解决方法

我最近向应用商店提交了一个新的二进制文件,并将其发送进行审查,但立即被以下消息拒绝。“不支持的操作-
不允许应用监听设备锁定通知。”。经过一番挖掘,我发现我们无法使用“ com.apple.springboard.lockstate”来找出锁定状态。

本质上,我的应用程序需要知道用户如何离开我的应用程序。是否按下主页按钮,锁定按钮,通过敲击另一个应用程序的通知离开应用程序等?是否有任何方法可以实现?我开始调查我的应用程序是否在后台运行,也许我们可以检查应用程序状态以弄清楚它。就我所知,我想知道是否有人对此有所了解

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...