IOS 9のiPhone 6sでタプティックエンジンを使用できますか? WatchOS2とOS Xにはハプティックエンジンを使用する機能があるため、iOS 9でも使用できると想定していましたが、その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で利用可能な新しいprivateクラス_UITapticEngine
があることがわかります。あなたはそれをヘッダー here で見つけることができます。それを実現するために、UIDevice
クラスに_tapticEngine
という新しいプロパティがあります。 UIDevice
here の完全なヘッダーを参照してください。これらのヘッダーをインポートしてインポートするか、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
これにより、特定のジェスチャーに対してタプティックエンジンがアクティブになりますが、ピークとポップはどちらも私と同じように感じます。他の定数を指定すると、デフォルトで振動になります。
私は GitHub にクイックテストリポジトリをまとめました。これには、タップエンジンを使用するためのSwift互換APIが含まれています。
UIDevice.currentDevice().tapticEngine().actuateFeedback(UITapticEngineFeedbackPeek)
ご自身の責任で使用してください!
私はもう少し長い ブログ投稿 を書いて、これを説明しました。
IOS 10には、UIFeedbackGeneratorと呼ばれる新しいAPIがあります。詳細はこちら post を参照してください。現時点では、iPhone 7でのみ機能します。
現在iOS 9用に公開されたAPIはないようです
OSXではNSHapticFeedbackManager
を使用する必要があります:
NSHapticFeedbackManagerクラスリファレンス
そしてここにWatchOS2
のAPIがあります:
ここを検索するだけで、私が言っていることがわかります。