【问题标题】:How to detect that haptic feedback is disabled on iOs device?如何检测到 iOs 设备上禁用了触觉反馈?
【发布时间】:2017-03-17 11:18:55
【问题描述】:

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

【问题讨论】:

    标签: ios objective-c xcode vibration


    【解决方案1】:

    这很笨拙,但这可行吗?

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

    【讨论】:

      【解决方案2】:

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

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

      0:不可用, 1:第一代可用(2:第二代可用。

      我建议你不要使用 Apple 的私有 API,因为:

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

      【讨论】:

      • 当我在设置中禁用它时,此方法在 iPhone 7 上总是返回 2
      • @Yogan 感谢您的测试!所以我猜没有办法检查它。更新了答案。
      猜你喜欢
      • 2020-05-09
      • 1970-01-01
      • 1970-01-01
      • 2012-01-24
      • 2012-03-05
      • 1970-01-01
      • 2017-07-10
      • 1970-01-01
      • 2019-03-11
      相关资源
      最近更新 更多