如何检测iOs设备上的触觉反馈是否已禁用?

时间:2017-03-17 11:18:56

标签: ios objective-c xcode vibrate

我想在手机设置中禁用触觉反馈时在我的应用程序中显示消息。如何检测设备设置中的触觉反馈?

2 个答案:

答案 0 :(得分:0)

无法检查启用/禁用触觉反馈但是UIKit中有私有int _feedbackSupportLevel用于检查设备是否支持它:

func logFeedbackSupported() {
    let supportLevel = UIDevice.current.value(forKey: "_feedbackSupportLevel")
    print(supportLevel ?? "")
}

0 :不可用, 1 :第一代可用(< iPhone 7), 2 :第二代可用。

我建议您不要使用Apples私有API,因为:

  1. 在您不知情的情况下,可以在任何版本中更改 API
  2. Apple正在解析您的应用代码,以确定您是否正在使用私有API,因此请注意。您的应用可能被拒绝

答案 1 :(得分:0)

这很糊涂,但这行得通吗?

- (BOOL)isHapticFeedbackDisabled {
  BOOL result = NO;
  UISelectionFeedbackGenerator *feedbackGenerator = [[UISelectionFeedbackGenerator alloc] init];
  [feedbackGenerator prepare];
  if ([feedbackGenerator.description containsString:@"prepared=0"]) result = YES;
  feedbackGenerator = nil;
  return result;
}