2012-02-10 5 views
5

タッチイベントをiOSデバイスにプログラムで追加する必要がありますシステムワイド脱獄を使用せずにどうすればいいですか?iOSのシステムワイドタッチイベントをシミュレートする

私は、このAPIをバックグラウンドで実行するためにプライベートAPIを使用したいと考えています。これを行うと、アプリストアでのアプリの可用性が妨げられることを認識しています。これはプライベートアプリですので、問題はありません。

+0

@Nateは、あなたが任意の交換を見つけました)、今はiOS9の時に、古いGSEvent APIは使えなくなった(iOS7だと思うから)。 – JBA

+0

@JBA、これまで、私はしていません。私は見たことがありません*スーパーハード*。しかし、私は同意します。彼らはもう一度持っているととても便利だろう。 ( – Nate

+0

ありがとうございました...実際にはかなり痛いです。 SpringboardServices内で多くの運がなくても検索しています... – JBA

答えて

-1

jailbreakingがなければ、システム全体のすべてのビューにジェスチャ認識機能をフックする実際の方法はありません。まず、バックグラウンドで実行されているアプリにはこのコードを実行する能力がありません。

+0

本当ですか?私は最近GSEventプライベートAPIを探しています(https:///github.com/rpetrich/iphoneheaders/blob/master/GraphicsServices/GSEvent.h)、アプリがバックグラウンドにある間にロックボタンをオン/オフすることができました。タッチをシミュレートできませんでした – user293895

1

可能です。 GSEventsを使用して、あなたが制御しようとしているアプリケーションの紫色の名前付きポートにそれらを送信/シミュレートしました。もちろん、KennyTMのGSEvent.hが必要です。 ケニーが持っていたいくつかの値(kGSHandInfoTypeTouchDownなど)を変更するだけで、iOS 4.3でこれをやったことがありますが、今はiOS 5でそれをやろうとしています。

編集:これはiOS 5.1で動作するようになりました。

+0

私はコードでサンプルを表示できますか? – user293895

+0

あなたのAppが受け取ったすべてのUIEventを分析するためにGSEventに変換することをお勧めします。あなたはタッチのためにGSEventを受け取り、それを再送信しようとすることもできます。それから、自分の構造を構築し、それに応じてフィールドを変更してください。KennyTMのAPIは良いスタートです。 kosとiOS 4.3(フィールドの値を入力するだけですが、いくつかは定数であり、PathProximityのような説明は何もないように、TouchDownイベントでは2、TouchUpでは1です。 PathIndexは常に2、pathMajorRadious、pathPressureは常に1.0など) –

+0

@JorgeAguirre iOS 7でどのように動作するか教えてください。 iOS 7用GSEvent APIは推奨されていません。 – Developer

3

あなたがしなければならないことは、まずあなたが望むイベントを作成し、それをSpringBoardに "紫色のポート"で送ることです。マッハのポート。それらをシステム全体にするには、ポート経由で各アプリケーションに転送する必要があります。つまり、実際にウィンドウマネージャが何をして、どのアプリケーションがアクティブでスクリーンロックされているかを調べる必要があります。

(IOSurface、GraphicServices、SpringBoardServicesなど)あなたに必要なものを手に入れてください。

dlopen()のようなものを使用して、これらのプライベートフレームワークを実行時にロードする必要があります。

これはiOSの6.1.4(現在ATM)のよう脱獄せずに100%可能ですが、あなたは、AppStoreはAppleによって許可されていないプライベートなフレームワークをロードします。

+0

iOS 7でどのように動作するかお知らせください。 iOS 7用GSEvent APIは推奨されていません – Developer

関連する問題