iOS Swift UIApplication.shared.isIdleTimerDisabled=true从AppStore查看后不工作
努力实现 停止屏幕在某些iOS Swift UIApplication.shared.isIdleTimerDisabled=true从AppStore查看后不工作,ios,swift,uiapplication,guided-access,Ios,Swift,Uiapplication,Guided Access,努力实现 停止屏幕在某些视图控制器上休眠 我所做的 我已经在iOS 12.1.12上运行的物理iPhone 6上用以下代码测试了我的应用程序。我将手机Dislpay&brightness>Auto Lock设置为30秒。我用UIApplication.shared.isIdleTimerDisabled=true运行了应用程序,在特定的VC上,即使在30秒后屏幕仍保持打开状态。当我切换到其他VC而不使用UIApplication.shared.isIdleTimerDisabled=true时,
视图控制器上休眠
我所做的
我已经在iOS 12.1.12上运行的物理iPhone 6上用以下代码测试了我的应用程序。我将手机Dislpay&brightness>Auto Lock
设置为30秒。我用UIApplication.shared.isIdleTimerDisabled=true运行了应用程序,在特定的VC上,即使在30秒后屏幕仍保持打开状态。当我切换到其他VC而不使用UIApplication.shared.isIdleTimerDisabled=true
时,屏幕将在30秒后关闭
我向AppStore分发了文件,我确信我已上传了正确的版本,并从AppStore下载了一份新的副本,屏幕始终处于打开状态,根本不起作用,屏幕将始终在自动锁定设置后关闭
我读过一些文章和文章
我尝试了Guided Access
并打开了Guided Access
和Mirror Display Auto Lock>。但AppStore中的应用程序仍然不起作用。请帮忙
代码
override func viewDidLoad() {
super.viewDidLoad()
//==== For the screen to remains on
UIApplication.shared.isIdleTimerDisabled = true
}
override func viewDidDisappear(_ animated: Bool) {
//=== Switch off the screen always on, back to the phone settings.
UIApplication.shared.isIdleTimerDisabled = false
}
我在iOS 13上也有同样的问题。我发现这解释了为什么.isIdleTimerDiabled
似乎不起作用
简而言之,由于iOS 13引入了SceneDelegate,仅在AppDelegate中将.isIdleTimerDisabled
设置为false是不够的,您还需要在SceneDelegate中设置它
类SceneDelegate:NSObject,UIWindowsSceneDelegate{
变量窗口:UIWindow?
@可用(iOS 13.0,*)
func sceneDidBecomeActive(u场景:UIScene){
UIApplication.shared.isIdleTimerDisabled=true
}
}
上面的代码使我的应用程序不受自动锁定的影响,但这只是一个快速肮脏的解决方案,更好的方法是根据用户使用的ViewController打开和关闭IsidleTimerSabled
,下面是苹果关于此属性的文档
您应该仅在必要时设置此属性(isIdleTimerDisabled
),并且应该确保在不再需要时将其重置为false。大多数应用程序应该允许系统在空闲计时器过期时关闭屏幕。这包括音频应用程序。通过适当使用音频会话服务,当屏幕关闭时,播放和录制将不间断地进行。唯一应该禁用空闲计时器的应用程序是映射应用程序、游戏或程序,在这些应用程序中,当用户交互最少时,应用程序需要继续显示内容
你的VC什么时候加载?您在viewDidLoad中设置了IdleTimerDisabled,如果IdleTimerDisabled位于导航堆栈中,它可能只出现一次,并且在您因为viewDidLoad而推送或弹出时被禁用?你想在ViewDidDisplay中恢复它吗?VC是嵌入在导航控制器中的。即使代码处于viewDidLoad,理想情况下也应该加载一次。但问题是它甚至根本不加载。我认为这是IOS中的一个缺陷。有解决这个问题的方法吗?我有一个视频通话应用程序,我需要该设备在视频通话期间禁用屏幕自动调光。有没有办法做到这一点?有什么新闻吗?解决方案