2013-10-06 16 views
7

脱獄されたiOSデバイスでは、あるアプリが別のアプリ(静的なものではなくインスタンスメソッド)からメソッドを呼び出すことはできますか?これを表現するもう1つの方法:アプリケーションのインスタンスを取得して(そのアプリケーションが実行されていると仮定して)、そのメソッドの1つを呼び出す方法はありますか?別のアプリからのメソッド呼び出し(本日の脱獄)

背景:iPodUIプライベートフレームワーク(詳しくはthis postを参照)のフックされたメソッドから、ミュージックプレーヤーのアプリケーションで関数を呼び出そうとしています。

この質問にはAndroidが必要ですが、脱獄のために何も見つかりませんでした。それは私が間違った質問をしていて、取るべき別のアプローチがあるからです。私はそれを公開しています。

+1

シュートそれを必要としないだろうと最終的には

は、ファイル/tmp/something.cyを削除することを忘れないでください/ question/18224150/tweak-and-app間の通信 – newenglander

+1

あなたの質問を誤解していない限り、私は他の答え( 'CPDistributedMessagingCenter'について)はあなたを助けるものではないと思います。これは、他のアプリ(音楽プレーヤーなど)が既に特定の通知/メッセージを聞くようにコーディングされていることを知っている場合に便利です。別のアプリケーションで任意のメソッドを呼び出すだけなら、それは他のプロセスから呼び出されるようには設計されていないので、MobileSubstrateのフックが必要です。 – Nate

+0

ありがとうございました。しかし、私は音楽プレーヤーのアプリにフックして自分自身のリスナーを追加することはできませんか?それとも、私はこれをもっと複雑にしていますか? – newenglander

答えて

2

これを達成するための簡単で代替可能な方法は、cycriptとsystem()呼び出しですが、system()を使用する前に危険があることを注意してください(潜在的には安全ではありませんすべてはかなり安全でないジェイルブレイクのiOS)

上重要な多くは、あなたが、あなたが/tmp/something.cy

でテキストファイルにそのコールを保存することができますが、いくつかの他のプロセスから

を呼び出したい[[SomeClass sharedInstance] methodToBeCalledExternally]ようなメソッドを持っているとしましょう

あなたはそのコードを外部からrunnin G:

cycript -p Music /tmp/something.cy 

いますが、プログラム的にそれを行う必要がある場合、および環境は(私はそれがないと仮定)サンドボックス化されていない場合はもちろん、あなたが行うことができます:

system("cycript -p Music /tmp/something.cy") 

このあなたのコードから任意のプロセス(この場合はミュージックアプリ)で任意のObjCコードを実行することができます。 http://stackoverflow.com:私は可能な答えを保持するように見えるこの質問を見つけたこのすべてを入力した後、あなたは、もはや、

+0

ありがとう、良い解決策のように聞こえる、いつかこれを試してみる必要があります。 – newenglander

関連する問題