idleTimerDisabled不适用于(自主)单应用程序模式

时间:2019-04-23 14:18:27

标签: ios ios12

我们有一个自助服务终端应用,使用 @Bean @ConfigurationProperties(prefix = "spring.datasource") public DataSource dataSource() { return DataSourceBuilder.create().build(); } 可以防止在工作时间内关闭屏幕,并让它在晚上关闭。

我使用在idleTimerDisabled方法中创建的计时器来做到这一点:

applicationDidBecomeActive

-

self.screenLockTimer = [NSTimer scheduledTimerWithTimeInterval:300 target:self selector:@selector(setupScreenLock) userInfo:nil repeats:YES];

在我们开始使用自主单应用程序模式之前,此方法一直可以正常工作。现在,屏幕不再在晚上关闭。是否有对此的解释(和解决方法)?我知道iOS 12中存在一个错误,其中- (void)setupScreenLock { NSDate *currentDate = [NSDate date]; NSDate *closingDate = [[NSCalendar currentCalendar] dateBySettingHour:17 minute:0 second:0 ofDate:currentDate options:0]; BOOL isOpeningHours = [currentDate compare:closingDate] == NSOrderedAscending; [UIApplication sharedApplication].idleTimerDisabled = isOpeningHours; } 不再适用于Guided Access,但我还没有看到有关Single App Mode的类似问题的报告。

2 个答案:

答案 0 :(得分:0)

触发本机操作可能会“解决”该问题。我可以使用下面的代码解决问题。

尝试使用以下代码:

    [UIApplication sharedApplication].idleTimerDisabled = isOpeningHours;

    // Guided access idle timer fix
    UITextField *textField = [[UITextField alloc] init];
    [self.view addSubview:textField]; // self.view or whatever relevant view is accessible.
    [textField becomeFirstResponder];
    [textField resignFirstResponder];
    [textField removeFromSuperView];

答案 1 :(得分:0)

我们的方法是重置空闲计时器,通过重置idleTimerDisabled不会禁用它:

Timer.scheduledTimer(withTimeInterval: 840, repeats: true, block: { timer in
       DispatchQueue.main.async {
             UIApplication.shared.isIdleTimerDisabled = false
             UIApplication.shared.isIdleTimerDisabled = true
       }
 })

这也可以。