web-dev-qa-db-ja.com

iOS 9のTaptic

IOS 9のiPhone 6sでタプティックエンジンを使用できますか? WatchOS2とOS Xにはハプティックエンジンを使用する機能があるため、iOS 9でも使用できると想定していましたが、そのAPIは見つかりませんでした。

23
user185813

ええ、私は内部のUIKitのものをリバースエンジニアリングし、TapticEngineAudioToolboxフレームワークといくつかの魔法の定数を使用できます。

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)

お役に立てれば!

47

現在、iOS 9およびiOS 9.1で利用可能なAPIは公開されていません。

免責事項:Taptic Engineを直接操作する方法はありますが、プライベートメソッドがあります。 App Storeアプリケーションでは使用しないでください。

ただし、実験に慣れてきたら、iOS 9で利用可能な新しいprivateクラス_UITapticEngineがあることがわかります。あなたはそれをヘッダー here で見つけることができます。それを実現するために、UIDeviceクラスに_tapticEngineという新しいプロパティがあります。 UIDevicehere の完全なヘッダーを参照してください。これらのヘッダーをインポートしてインポートするか、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)

ご自身の責任で使用してください!

私はもう少し長い ブログ投稿 を書いて、これを説明しました。

17
Legoless

IOS 10には、UIFeedbackGeneratorと呼ばれる新しいAPIがあります。詳細はこちら post を参照してください。現時点では、iPhone 7でのみ機能します。

9
Tuslareb

現在iOS 9用に公開されたAPIはないようです

OSXではNSHapticFeedbackManagerを使用する必要があります:

NSHapticFeedbackManagerクラスリファレンス

そしてここにWatchOS2のAPIがあります:

WKInterfaceDeviceクラスリファレンス

ここを検索するだけで、私が言っていることがわかります。

触覚検索(iOSプレリリース)-何も表示されません

触覚検索(OSXプレリリース)-NSHapticFeedbackManagerを表示

2
Woodstock