我正在构建一个医疗诊断应用程序。患者(或医生)在使用过程中的中断会破坏应用程序的用途并浪费大量时间。
我想知道如何在应用程序中检测“请勿打扰”模式是否已打开/关闭。(知道飞行模式是否打开/关闭也很好。)这样我可以提醒用户进入设置打开它。
更好(更文明):有什么方法可以让用户从应用程序中打开 DND模式?(就像用户可以使用MPVolumeView在应用程序中标准化设备音量一样。)
我正在构建一个医疗诊断应用程序。患者(或医生)在使用过程中的中断会破坏应用程序的用途并浪费大量时间。
我想知道如何在应用程序中检测“请勿打扰”模式是否已打开/关闭。(知道飞行模式是否打开/关闭也很好。)这样我可以提醒用户进入设置打开它。
更好(更文明):有什么方法可以让用户从应用程序中打开 DND模式?(就像用户可以使用MPVolumeView在应用程序中标准化设备音量一样。)
没有关于请勿打扰甚至飞行模式的公共 API。连状态都不知道。
关于飞行模式,您可以检查网络状态(使用可达性),但它不会 100% 准确。
Reachability 是来自 Apple 的代码示例,但在 GitHub 上有几个基于它的库。
我找到了一种知道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] == CXErrorCodeIncomingCallErrorFilteredByDoNotDisturb) {
NSLog(@"Disturb mode is on");
}
}
}];