Han*_*hel 16 ios haptic-feedback ios10 uifeedbackgenerator
我想知道我们如何检查UIFeebackGenerator
当前设备上是否有新的iOS 10 API .还有一些我们需要检查的事情:
前两个检查可以使用#available(iOS 10, *)
语句和(hacky)设备检测来实现,但后者似乎不可检查.
有人知道这方面的解决方案吗?或许我们需要为此提交Apple Radar.谢谢!
小智 15
有一些无证的"私事":
UIDevice.currentDevice().valueForKey("_feedbackSupportLevel");
Run Code Online (Sandbox Code Playgroud)
对于具有触觉反馈的设备,它会返回2 - iPhone 7/7 +,因此您可以轻松地使用它来生成触觉反馈:
let generator = UIImpactFeedbackGenerator(style: .heavy)
generator.prepare()
generator.impactOccurred()
Run Code Online (Sandbox Code Playgroud)
为iPhone 6S 返回1,这是生成taptic的后备:
import AudioToolbox
AudioServicesPlaySystemSound(1519) // Actuate `Peek` feedback (weak boom)
AudioServicesPlaySystemSound(1520) // Actuate `Pop` feedback (strong boom)
AudioServicesPlaySystemSound(1521) // Actuate `Nope` feedback (series of three weak booms)
Run Code Online (Sandbox Code Playgroud)
并为iPhone 6或更早版本的设备返回0.由于它是一种无证件的东西,它可能在审查阶段阻止你,虽然我能够通过审查并提交带有这种检查的应用程序.
更多细节:http: //www.mikitamanko.com/blog/2017/01/29/haptic-feedback-with-uifeedbackgenerator/
Wit*_*ski 12
从 iOS 13 开始,您可以以非常简单的方式检查它。根据文档页面,您所要做的就是:
import CoreHaptics
var supportsHaptics: Bool = false
...
// Check if the device supports haptics.
let hapticCapability = CHHapticEngine.capabilitiesForHardware()
supportsHaptics = hapticCapability.supportsHaptics
Run Code Online (Sandbox Code Playgroud)
Adr*_*ian 10
根据Apple的UIFeedbackGenerator
文档,iOS之类的声音可以帮助您.
请注意,调用这些方法不会直接播放触觉.相反,它会通知系统事件.然后,系统基于设备,应用程序的状态,剩余的电池电量以及其他因素来确定是否播放触觉.
例如,目前仅播放触觉反馈:
在支持Taptic Engine(iPhone 7和iPhone 7 Plus)的设备上.
当应用程序在前台运行时.
启用"系统触觉"设置时.
即使您不需要担心检查设备是否可以进行触觉反馈,您仍然需要确保它仅在iOS 10或更高版本中调用,因此您可以通过以下方式实现:
if #available(iOS 10,*) {
// your haptic feedback method
}
Run Code Online (Sandbox Code Playgroud)
以下是iOS 10中各种触觉反馈选项的快速摘要.
我在UIDevice
不使用私有API的情况下进行了扩展
extension UIDevice {
static var isHapticsSupported : Bool {
let feedback = UIImpactFeedbackGenerator(style: .heavy)
feedback.prepare()
return feedback.description.hasSuffix("Heavy>")
}
Run Code Online (Sandbox Code Playgroud)
},您可以像这样使用它:
UIDevice.isHapticsSupported
Run Code Online (Sandbox Code Playgroud)
返回true
或false
归档时间: |
|
查看次数: |
7883 次 |
最近记录: |