首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何检查是否支持Haptic Engine (UIFeedbackGenerator)

如何检查是否支持Haptic Engine (UIFeedbackGenerator)
EN

Stack Overflow用户
提问于 2017-01-03 13:08:39
回答 5查看 13.6K关注 0票数 27

我想知道如何检查新的iOS 10 API UIFeebackGenerator在当前设备上是否可用。还有一些事情我们需要检查:

  1. 设备需要运行iOS 10.0或更高版本
  2. 设备需要是iPhone 7或更高版本。
  3. 需要在设置中打开Haptic引擎

前两个检查可以使用#available(iOS 10, *)语句和(hacky)设备检测来实现,但后者似乎是不可检查的。

有人知道解决这个问题的办法吗?或者我们需要为这个申请一个苹果雷达。谢谢!

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2017-01-03 15:01:36

基于文档,听起来好像是iOS为您做的。

请注意,调用这些方法并不直接使用触觉。相反,它会将事件通知系统。然后,系统根据设备、应用程序的状态、电池剩余电量以及其他因素确定是否播放触觉。 例如,目前只播放触觉反馈: 在支持Taptic引擎的设备上(iPhone 7和iPhone 7 Plus)。 当应用程序在前台运行时。 启用系统Haptics设置时。

即使您不需要担心设备是否可以进行触觉反馈,您仍然需要确保只在iOS 10或更高版本中调用它,因此您可以这样做:

代码语言:javascript
复制
    if #available(iOS 10,*) {
        // your haptic feedback method
    }

这是各种触觉反馈选项的快速总结在iOS 10中提供的。

票数 15
EN

Stack Overflow用户

发布于 2020-03-05 18:35:23

iOS 13开始,您可以非常简单地检查它。根据文档页面,您所要做的就是:

代码语言:javascript
复制
import CoreHaptics

var supportsHaptics: Bool = false
...
// Check if the device supports haptics.
let hapticCapability = CHHapticEngine.capabilitiesForHardware()
supportsHaptics = hapticCapability.supportsHaptics

文档:准备你的应用程序玩滑稽游戏

票数 17
EN

Stack Overflow用户

发布于 2019-02-20 10:45:33

我在没有使用私有API的情况下对UIDevice进行了扩展。

代码语言:javascript
复制
extension UIDevice {
    
        static var isHapticsSupported : Bool {
            let feedback = UIImpactFeedbackGenerator(style: .heavy)
            feedback.prepare()
            return feedback.description.hasSuffix("Heavy>")
        }
    }

你就这样用它:

代码语言:javascript
复制
UIDevice.isHapticsSupported 

返回truefalse

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41444274

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档