search
LoginSignup
5

More than 5 years have passed since last update.

posted at

updated at

Inter Process Communication for iOS

この記事は iOS Jailbreaking Advent Calendar 2015 の12日目の記事です。

Inter Process Communicationについて

Inter Process Communicationつまり、プロセス間通信とは、通常プロセス同士が会話をするためのものです。プロセスは、メモリが独立した空間が割り当てられていて、プログラムの全体的なセキュリティと安定性に加え、悪意に他プロセスの変数や状態変更をさせないためのものであり、プログラム間の直接な通信を遮断してくれます。
IPCは、別のプロセスがこのような通信フラグやデータを塊として情報を送受信を可能とします。

参考 iPhone Dev Wiki

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の送信ができます。

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
What you can do with signing up
5