この記事は iOS Jailbreaking Advent Calendar 2015 の12日目の記事です。
Inter Process Communicationについて
Inter Process Communicationつまり、プロセス間通信とは、通常プロセス同士が会話をするためのものです。プロセスは、メモリが独立した空間が割り当てられていて、プログラムの全体的なセキュリティと安定性に加え、悪意に他プロセスの変数や状態変更をさせないためのものであり、プログラム間の直接な通信を遮断してくれます。
IPCは、別のプロセスがこのような通信フラグやデータを塊として情報を送受信を可能とします。
libobjcipc
Alan Yipさんが作成した簡単に IPC を実現出来るフレームワーク(libobjcipc)があります。
GitHubのdescriptionにも書いてあるとおり、jailbreak iOSにて、SpringBoard
とアプリのIPCを実現するものです。
ProWidgetsでも使用され、ProWidgetsのExtensionを作るときにも有効に利用されました。
私もProWidgets経由でIRKitのシグナルを送信するExtension(IRKit for ProWidgets)を作った際にも利用しました。
ブロックで情報の受け渡しができ、実に簡単に実装することが出来ます。
RocketBootstrap
ActivatorなどiOS Jailbreakをしたあと必須アプリとなるものを作り続けるRyan Petrichさんが作成した、アプリサイドからSpringBoardへのコミュニケーションを実現するフレームワーク(RocketBootstrap)です。
CPDistributedMessagingCenter
を利用し、
rocketbootstrap_distributedmessagingcenter_apply(c);
を追加するだけで、アプリにNotificaitonを送信することが実現できます。
WebSocket
WebSocket経由でコミュニケーションを取る方法もあります。Qusicさんが作成した、CouriaのExtensionでも見受けれるように、(Whats App For Couria) WebSocket経由でもObjectの送信ができます。