web-dev-qa-db-ja.com

iOS7でシステム全体のタッチイベントを挿入する

IOS7より前は、GSSendSystemEventおよびGSSendEventプライベートAPI呼び出しでタッチイベントを挿入することが可能でした。例:

IOS7では、これらの呼び出しはサイレントに失敗するようです。 iOS 7でシステム全体のタッチをシミュレートする で代替案が提案されていますが、ジェイルブレイクされたデバイスでのみ機能します。 https://github.com/kif-framework/KIF 別のオプションのように見えますが、システム全体ではなく、現在のアプリのイベントの挿入のみをサポートしているようです(したがって、挿入できませんでしたたとえば、アプリがバックグラウンドにあるときにイベントをタッチします)。

では、脱獄せずに、iOS7でシステム全体のタッチイベントをどのように注入できますか?

49
Ben Dowling

テストシナリオでは、これをシステム全体で行う必要があると思いますか?その場合、デバイス上のテストに役立つJavaScriptベースのツールであるAppleのUI Automationフレームワークが適切に機能する可能性があります。

ホームボタンの押下をシミュレートするようなことはできませんが、次のように、指定した期間、アプリをバックグラウンドに送信できます。

UIATarget.localTarget().deactivateAppForDuration(seconds);

ドキュメントは次のとおりです。

https://developer.Apple.com/library/ios/documentation/DeveloperTools/Reference/UIAutomationRef

2
cleverbit