我正在建立一个医疗诊断应用程序。当患者(或医生)正在使用它时中断会破坏应用程序的目的并浪费大量时间。
我想知道如何在应用程序中检测是否打开/关闭“请勿打扰”模式。 (了解飞机模式是否开启也很好。)这样我就可以提醒用户进入设置以打开它。
更好(更文明):有什么方法可以让用户从应用程序中的开启免打扰模式吗? (而非用户可以使用MPVolumeView在应用内规范化设备音量。)
使用特殊网址开启Air Plane模式时,最接近的answer I've yet found会指向this page。'但它在iOS 5中是only works。
答案 0 :(得分:15)
没有关于“请勿打扰”甚至“飞机”模式的公共API。甚至不知道状态。
关于Air Plane模式,您可以检查网络状态(使用可达性),但不会100%准确。
可达性是code sample from Apple,但在GitHub上有几个基于它的库。
答案 1 :(得分:5)
我找到了一种方法来知道DND是否打开,但是它只能在某些情况下使用... 启用DND时,CallKit将返回特定的错误代码,例如:
CXCallUpdate *update = [[CXCallUpdate alloc] init];
update.remoteHandle = [[CXHandle alloc] initWithType:CXHandleTypeGeneric value:handle];
[(CXProvider *)self.provider reportNewIncomingCallWithUUID:uuid
update:update
completion:^(NSError *error) {
if (error) {
NSLog(@"error when reporting imconing: %@", [error localizedDescription]);
//The operation couldn’t be completed. (com.apple.CallKit.error.incomingcall error 3.)
if ([error code] == 3) {
NSLog(@"Disturb mode is on");
}
}
}];