在iOS 9中使用Taptic

你可以在iPhone 6s中使用iOS 9中的触发引擎吗? WatchOS2和OS X有能力使用触觉引擎,所以我认为它也将在iOS 9中,但我没有find任何API。

是的,我有反向工程的内部UIKit东西,我发现另一个(更简单)的方式来通过TapticEngine启动反馈! 我们可以使用AudioToolbox框架和几个魔术常量。

 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) 

希望这可以帮助!

目前在iOS 9和iOS 9.1中没有公开的API。

免责声明:有一种方法直接与Taptic Engine进行交互,但是有一个私有方法。 你不应该在App Store应用程序中使用它。

但是,如果您更多地进行实验,则可以发现iOS 9中有一个新的私有类: _UITapticEngine 。 你可以在这里find它的标题。 为了解决这个问题,在UIDevice类上有一个新属性,叫做_tapticEngine 。 在这里查看UIDevice的完整标题。 您可以继续并导入这些头文件,或者只使用NSSelectorFromString函数和performSelector:方法来获取引导引擎:

 id tapticEngine = [[UIDevice currentDevice] performSelector:NSSelectorFromString(@"_tapticEngine") withObject:nil]; [tapticEngine performSelector:NSSelectorFromString(@"actuateFeedback:") withObject:@(1001)]; // Peek [tapticEngine performSelector:NSSelectorFromString(@"endUsingFeedback:") withObject:@(1002)]; // Pop 

虽然Peek和Pop都觉得和我相似,但是这会激活特定手势的触发引擎。 如果您指定任何其他常数,它将默认为振动。

我在GitHub上汇总了一个快速testing回购,其中包括一个Swift兼容的API来使用触发引擎:

 UIDevice.currentDevice().tapticEngine().actuateFeedback(UITapticEngineFeedbackPeek) 

使用风险自负!

我还写了一个更长的博客文章 ,解释这一点。

在iOS 10中,有一个名为UIFeedbackGenerator的新API。 看到这个职位了解更多详情。 它现在只适用于iPhone 7。

目前似乎还没有iOS 9发布的API。

在OSX上,你需要使用NSHapticFeedbackManager

NSHapticFeedbackManager类参考

这里是WatchOS2的API:

WKInterfaceDevice类参考

通过在这里简单search,你可以看到我在说什么:

触觉search(iOS预发布) – 什么都不显示

触觉search(OSX预发布) – 显示NSHapticFeedbackManager