Iphone 如何在应用程序中检测DND模式?
我正在构建一个医疗诊断应用程序。当患者(或医生)正在使用该应用程序时,可能会中断应用程序的使用,并浪费大量时间 我想知道如何在应用程序中检测请勿打扰模式是否打开/关闭。(知道飞机模式是否打开/关闭也很好。)这样我可以提醒用户进入设置以打开它 更好(更文明):我有没有办法允许用户在应用程序中打开DND模式?(就像用户可以使用规范化应用程序中的设备卷一样。)Iphone 如何在应用程序中检测DND模式?,iphone,ios,cocoa-touch,Iphone,Ios,Cocoa Touch,我正在构建一个医疗诊断应用程序。当患者(或医生)正在使用该应用程序时,可能会中断应用程序的使用,并浪费大量时间 我想知道如何在应用程序中检测请勿打扰模式是否打开/关闭。(知道飞机模式是否打开/关闭也很好。)这样我可以提醒用户进入设置以打开它 更好(更文明):我有没有办法允许用户在应用程序中打开DND模式?(就像用户可以使用规范化应用程序中的设备卷一样。) 最接近的是用一个特殊的“URL”打开飞机模式。但它在iOS 5中是可用的。没有关于请勿打扰甚至飞机模式的公共API。甚至不知道状态 关于飞机
最接近的是用一个特殊的“URL”打开飞机模式。但它在iOS 5中是可用的。没有关于请勿打扰甚至飞机模式的公共API。甚至不知道状态 关于飞机模式,您可以检查网络状态(使用可达性),但它不是100%准确
可达性是一个很重要的概念,但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");
}
}
}];
谢谢你,马塞洛。如何检查可达性状态?我非常感谢你的帮助,Marcelo,并投票支持你。尽管这可能是任何人都能做到的最好的答案,但这并不是一个令人满意的答案。这就是为什么我没有接受。好问题。iOS设置不允许用户进入DND或飞行模式的时间段,这对我来说非常特别。诺基亚最老的手机拥有这一功能,它对于输入DND非常有用,但不会忘记重新打开它。我一直在做的事情。我想要一个仅用于该功能的应用程序。将代码中的
3
替换为cxErrorCodeIncomingCallerErrorFilteredByDonotSturb
please@VyachaslavGerchicov完成,谢谢:)