2012-03-01 8 views
1

私は現在、iPadアプリの "デバイス内"(シミュレータではない)モニタリングシステムを開発中です。システムは以下を実行できるはずです:extern [UIApplication sharedApplication]を取得しますか?

- ユーザー入力シミュレーション:タップ、ドラッグ、キーボードをシミュレートします。

-Information recollection:入力後にテキスト値と結果を取得します。

この情報は、後でイベント管理サーバーに報告されます。私はすでにKIFソフトウェアhttps://github.com/square/KIFのコードといくつかの自己開発コードを使用して、1つのアプリケーションで2つのポイントを処理しました。 UIViewオブジェクトのaccessibleNameプロパティを使用してポインタを取得し、人工イベントを[[UIApplication sharedApplication] sendEvent:]メソッドに送信します。

ここには次のようなものがあります。私はこれらのイベントを私がいるアプリケーション#1からアプリケーション#2に送る必要があります。 (監視を独立に保つために、アプリケーション#2にすべてのコードを埋め込むことはオプションではありません)私はアプリケーション#2を開くために[[UIApplication sharedApplication] openURL:]メソッドを使用します。 https://developer.apple.com/library/IOs/#documentation/iPhone/Conceptual/iPhoneOSProgrammingGuide/AdvancedAppTricks/AdvancedAppTricks.html#//apple_ref/doc/uid/TP40007072-CH7-SW18

問題がある、私はアプリの第1位コードでアプリ#2の[のUIApplication sharedApplication]オブジェクトへのポインタを取得するように見えることができないので、私はアプリ#2にアプリ#1からイベントを送信することはできません。

プロセス間の共有メモリ通信は素晴らしいですが、私が見つけた情報によれば、URLメッセージング方式はiOSのアプリケーション(またはプロセス)間の唯一の通信のようです。 NSConnectionクラスもiOSには存在しません。私はMachポートとPOSIXファイル記述子についても少し読んだことがありますが、かなり複雑に思えます。

私は、アプリケーション#2 [UIApplication sharedApplication]インスタンスのポインタの値をURLメッセージの文字列パラメータとして送信しようとしても、文字列をapp#1のポインタに戻しましたが、EXC_BAD_ACCESS 。私はポインタアドレスが両方のプロセスで同じことを意味しないと思います。たぶん、各プロセスに独自の「オフセット」がありますか? ご協力いただければ幸いです。

答えて

2

最初の例で私はあなたがしたいことが私的なAPIなしでは可能ではないことを明確にしています。 各アプリはサンドボックス化されており、他のアプリに直接アクセスすることはできません。あなたの問題は本当に大きいと思います。

iOSで動作している各アプリは、ユーザーが「ホーム」ボタンを押したときに終了する小さな、独立したエコシステムのようなものです(VOIP、ローカライズ、オーディオプレーヤーなどのバックグラウンドサービスを宣言した場合を除く)。あなたがまだ実行できる唯一の事は、アプリケーションが閉じられたら、10分を超えてはならないプロセスです。これは、バックグラウンドタスクの過度の使用を防止するためであり、ここでも、他のアプリからはアクセスできません。

唯一の方法は、他の誰かが2つのアプリケーション間で(直接)データストリーミングを作成する方法を発見したことを期待して、プライベートAPIを検索することだと思います。

+0

はい、プライベートAPIなしではこれはできません。実際、KIF自体はプライベートAPIを使用してタップイベントを偽造しています。このコードまたはアプリはアプリストアに送信されないため、これは問題ではありません。これは監視と監視の目的にすぎません。 アプリ#1がバックグラウンドで、アプリ#2がアクティブのときに[UIApplication sharedApplication]を呼び出すというバックグラウンドアプローチを試みましたが、アプリ#1のUIApplicationインスタンスが返されました。 これらのAPIの1つはすでに存在すると思いますか? MachポートまたはPOSIXファイル記述子、またはDistributedオブジェクトで行われますか? ご協力いただきありがとうございます。 –

+1

はい、別のアプリからアプリにアクセスできると確信しています。そして[この投稿](http://stackoverflow.com/questions/4312613/can-we-retrieve-the-applications-currently-running-in-iphone-and-ipad)はプライベートで遊ぶのに適しているかもしれませんAPIを使用して、他のアプリのメモリにアクセスする方法を見つけます。 – bontoJR

関連する問題