如何在应用程序处于前台模式时禁用 iPhone/iPad 自动锁定?

Posted

技术标签:

【中文标题】如何在应用程序处于前台模式时禁用 iPhone/iPad 自动锁定?【英文标题】:How to disable iPhone/iPad auto-lock while app is in foreground mode? 【发布时间】:2012-03-13 20:21:21 【问题描述】:

我正在开发一个音乐/视频播放器应用程序,只需要知道如何在我的应用程序处于前台时禁用自动锁定。

我知道在某些时候我必须使用[[UIApplication sharedApplication] setIdleTimerDisabled:YES];[[UIApplication sharedApplication] setIdleTimerDisabled:NO];,但是放在哪里最好?

【问题讨论】:

【参考方案1】:

我的 2 美分:对于 xcode 9:

 application.idleTimerDisabled = true

.....AppDelegate.swift:28:15: 'idleTimerDisabled' 已重命名为 'isIdleTimerDisabled'

所以:

application.isIdleTimerDisabled = true

【讨论】:

【参考方案2】:

斯威夫特 3.0:

AppDelegate.swift 内部: application.idleTimerDisabled = true

AppDelegate.swift 外部: UIApplication.shared().isIdleTimerDisabled = true

【讨论】:

【参考方案3】:

在 Swift 3.0 中:

UIApplication.shared().isIdleTimerDisabled = true

【讨论】:

【参考方案4】:

禁用它的最佳位置是在 didFinishLaunchingWithOptions 中。当应用在后台时,系统会自动使设置无效。

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 
    application.idleTimerDisabled = YES; 
    return YES;

我发布此替代方案是因为接受的答案不会阻止在出现警报(电子邮件、消息、日历事件等)或通知中心或控制中心启动时自动锁定。

【讨论】:

如果后台有应用怎么办?在这种情况下是否禁用了自动锁定? 后台没有禁用自动锁定,苹果不允许。【参考方案5】:

中启用空闲计时器
- (void)applicationWillResignActive:(UIApplication *)application

并在

中禁用它
- (void)applicationDidBecomeActive:(UIApplication *)application

【讨论】:

它在这里工作得很好,但我想知道它会在扩展坞和苹果电视上工作吗?这里没有要测试的。 我听说另一种选择是播放无声的“声音”。 @HotLicks 这可能会导致您的应用被拒绝,但没有人可以肯定地说。 其实这是相当不错的 hack。非常感谢:) 这不是正确的位置,因为当出现任何警报,或者通知中心或控制中心启动时,应用程序将退出活动状态,您可能会面临设备自动锁定的风险。

以上是关于如何在应用程序处于前台模式时禁用 iPhone/iPad 自动锁定?的主要内容,如果未能解决你的问题,请参考以下文章

应用程序处于后台模式时如何在 iOS5 上获取用户位置?

SwiftUI:如何仅在设备处于横向模式时启用 ScrollView?

Android 6.0 处于打盹模式时如何让闹钟管理器工作?

当应用程序使用 ios 8 在前台时,调度程序 UILocalNotification 不起作用

当应用程序处于前台时如何显示本地通知

当应用程序处于后台模式时,电池电量通知不起作用