我想知道如何检查新的iOS 10 API UIFeebackGenerator在当前设备上是否可用。还有一些事情我们需要检查:
前两个检查可以使用#available(iOS 10, *)语句和(hacky)设备检测来实现,但后者似乎是不可检查的。
有人知道解决这个问题的办法吗?或者我们需要为这个申请一个苹果雷达。谢谢!
发布于 2017-01-03 15:01:36
基于文档,听起来好像是iOS为您做的。
请注意,调用这些方法并不直接使用触觉。相反,它会将事件通知系统。然后,系统根据设备、应用程序的状态、电池剩余电量以及其他因素确定是否播放触觉。 例如,目前只播放触觉反馈: 在支持Taptic引擎的设备上(iPhone 7和iPhone 7 Plus)。 当应用程序在前台运行时。 启用系统Haptics设置时。
即使您不需要担心设备是否可以进行触觉反馈,您仍然需要确保只在iOS 10或更高版本中调用它,因此您可以这样做:
if #available(iOS 10,*) {
// your haptic feedback method
}这是各种触觉反馈选项的快速总结在iOS 10中提供的。
发布于 2020-03-05 18:35:23
从iOS 13开始,您可以非常简单地检查它。根据文档页面,您所要做的就是:
import CoreHaptics
var supportsHaptics: Bool = false
...
// Check if the device supports haptics.
let hapticCapability = CHHapticEngine.capabilitiesForHardware()
supportsHaptics = hapticCapability.supportsHaptics发布于 2019-02-20 10:45:33
我在没有使用私有API的情况下对UIDevice进行了扩展。
extension UIDevice {
static var isHapticsSupported : Bool {
let feedback = UIImpactFeedbackGenerator(style: .heavy)
feedback.prepare()
return feedback.description.hasSuffix("Heavy>")
}
}你就这样用它:
UIDevice.isHapticsSupported 返回true或false
https://stackoverflow.com/questions/41444274
复制相似问题