我最近向应用程序商店提交了一个新的二进制文件并将其发送进行审核,并立即被拒绝,并显示以下消息."不支持的操作 - 不允许应用程序监听设备锁定通知." 经过一番挖掘,我发现我们不能使用"com.apple.springboard.lockstate"来找出锁定状态.
基本上,我的应用程序需要知道用户如何离开我的应用程序.无论是按下主页按钮,锁定按钮,通过点击另一个应用程序的通知等离开应用程序,有没有办法实现这一目标?我开始调查,看看我的应用程序是否在后台运行,也许我们可以检查应用程序状态来弄清楚.就我而言,我想知道是否有人对此有任何了解
我需要做点什么applicationDidEnterBackground.但我需要区分哪个用户操作导致"输入背景":屏幕锁定或按下主页按钮.
我正在使用这个代码,这是从这篇文章 - 如何区分iOS5上的屏幕锁定和主页按钮?:
UIApplicationState state = [application applicationState];
if (state == UIApplicationStateInactive) {
NSLog(@"Sent to background by locking screen");
} else if (state == UIApplicationStateBackground) {
NSLog(@"Sent to background by home button/switching to other app");
}
Run Code Online (Sandbox Code Playgroud)
它在iOS6上运行良好.但是在iOS7(设备和模拟器)上UIApplicationStateBackground,无论用户是单击主页还是锁定按钮,我总能得到.
有人知道可能导致这种情况的原因吗?iOS 7更新到多任务后台处理?或者我的应用程序的某些设置(我的应用程序的后台模式已关闭)?
还有替代解决方案吗?
我正在开发一款在后台播放音频的iPhone应用程序.如果用户锁定屏幕,我希望音频继续播放,但如果他们决定切换到另一个应用程序(通过按主页按钮),则暂停.
在iOS 4上没有问题,因为当屏幕被锁定时应用程序将进入非活动状态,并且只有在按下主页按钮时才会移动到后台.在iOS 5上,当屏幕被锁定时,应用程序现在也被移动到后台,因此似乎不再可能分辨出这两种状态之间的区别.有这个问题的解决方案吗?