UIResponder
SpringBoard やその他のアプリを含め、すべてのアプリをフックする必要があります。フッキングでは、指定したファイルに何かを書き込みます。パスを/var/mobile/Library/MyApp
Cydia 推奨の に設定すると、SpringBoard と MyApp のみが正常に書き込みできることがわかりました。
では、すべてのアプリが読み書きできる場所はあるのでしょうか?
UIResponder
SpringBoard やその他のアプリを含め、すべてのアプリをフックする必要があります。フッキングでは、指定したファイルに何かを書き込みます。パスを/var/mobile/Library/MyApp
Cydia 推奨の に設定すると、SpringBoard と MyApp のみが正常に書き込みできることがわかりました。
では、すべてのアプリが読み書きできる場所はあるのでしょうか?
これについては 100% 確信が持てないことを認めますが、私の推測ではノーです。すべてのアプリがジェイルブレイクされた iPhone にファイルを書き込むことができるパスはありません。
確かに、ジェイルブレイクされた電話のジェイルブレイクアプリ (にインストールされている/Applications/
) は、それらのジェイルブレイク アプリ間で共有できる場所に書き込むことができます。しかし、あなたの質問を理解しているように、通常の App Store アプリにコードを挿入して、それらのアプリが共有場所に対して読み書きできるようにしたいと考えています。ジェイルブレイクは、通常インストールされているサードパーティ製アプリのサンドボックスを完全に無効にしないため、その部分は可能ではないと思います/var/mobile/Applications/
。
さて、回避策があるかもしれません。特定の目的のためにすべてのアプリからアクセスできる共有フォルダーがいくつかあります。たとえば、どのアプリでも、保存された写真アルバムに画像を書き込むことができます。試してみることができるのは、書き込みたいファイルのコンテンツを取得し、それを偽の画像データとしてエンコードすることですUIImage
(例: を使用[UIImage imageWithData:]
)。おそらく、有効な画像ヘッダーをデータに追加する必要があります。次に、次のようなものを使用して、ファイルを写真アルバムに保存します
writeImageToSavedPhotosAlbum:orientation:completionBlock:
.
別のアプリは、保存された写真アルバムを列挙し、アセットを画像表現に変換して実際のデータを引き出すことで、偽の写真を見つけることができます。
ただし、これは非常に複雑なようで、うまくいかない可能性があります (試したことはありません)。この共有ファイルが必要な理由を教えてください。グローバルにアクセス可能なファイルを使用せずに、データを共有するためのより良い方法があるでしょうか?
通知はこれに役立ちます。すべてのアプリは、イベントに関するプロセス間通知を送信します。この通知をリッスンしてファイルに保存するデーモンを起動できます。または、たとえば /var/mobile/Media に書き込むことができるように、SpringBoard でそれらをリッスンすることもできます。このファイルで何をしたいかによって異なります。ここで私の答えをチェックしてください。ジェイルブレイクされたiPhoneでSpringBoardまたは他のアプリケーションがアクセスできるグローバル環境変数を作成する方法は?