我们有一个自助服务终端应用,使用 @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的类似问题的报告。
答案 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
}
})
这也可以。