如何在应用程序处于前台模式时禁用 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 自动锁定?的主要内容,如果未能解决你的问题,请参考以下文章
SwiftUI:如何仅在设备处于横向模式时启用 ScrollView?
Android 6.0 处于打盹模式时如何让闹钟管理器工作?