Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
iOS Swift UIApplication.shared.isIdleTimerDisabled=true从AppStore查看后不工作_Ios_Swift_Uiapplication_Guided Access - Fatal编程技术网

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中的一个缺陷。有解决这个问题的方法吗?我有一个视频通话应用程序,我需要该设备在视频通话期间禁用屏幕自动调光。有没有办法做到这一点?有什么新闻吗?解决方案