我最近向应用商店提交了一个新的二进制文件,并将其发送进行审查,但立即被以下消息拒绝。“不支持的操作- 不允许应用监听设备锁定通知。”。经过一番挖掘,我发现我们无法使用“ com.apple.springboard.lockstate”来找出锁定状态。
本质上,我的应用程序需要知道用户如何离开我的应用程序。是否按下主页按钮,锁定按钮,通过敲击另一个应用程序的通知离开应用程序等?是否有任何方法可以实现?我开始调查我的应用程序是否在后台运行,也许我们可以检查应用程序状态以弄清楚它。就我所知,我想知道是否有人对此有所了解
在搜索了苹果公司的文档并挖掘了很多线程之后,我想我可能偶然发现了该解决方案。
据我所知,这是目前检测用户是否通过主页按钮或锁定按钮离开的唯一方法(我认为这在模拟器上不起作用,您必须在实际的电话上尝试一下)。
在此委托内部(并且仅在此委托中被调用时才起作用)
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%的时间内都有效。除了真正要更改屏幕亮度的用户外,我没有发现任何其他问题。我希望其他人可以找到一些不太骇人,更具体的东西。
applicationDidEnterBackground