Apple Engine

Apple, iPhone, iOS, その周辺のことについて

iOS と App Extension、そこにつながるデバイス

iOS のアプリは、
基本的には異なるアプリとの同士では会話ができない隔離されたシステムで運用されている。

macOS では LION ぐらいの頃 XPC Service というものが出て、アプリ間での通信ができたわけだが、
iOS の XPC はプライベートフレームワークとなっており、
ストアに申請する事はできず使用できなかった。

 

そこで、歳月が経ち出現したのは App Extension。
文字どうりアプリの拡張機能である。

拡張機能は、アプリ本体とは別のプログラムファイルで、
開発したアプリと他のアプリをつなげるものだったり、
カスタムキーボードなどシステムに紐付いているものがある。

(ステッカーパック、いわゆるスタンプは Message アプリに紐付いており、本体アプリは必要ない。ずるい)

 

別のプログラムファイルという事でわかるかもしれないが、 本体のアプリとは別の環境で動き、実は互いには直接アクセスはできなく、OS が間に入る。

そして、OS はアプリと拡張機能のアプリが同じグループ内いる場合、他のアプリが入れない部屋をつくり、そこを通じてデータを操作できるようにする。

このことによって、アプリは拡張機能を通じて安全なデータの受け渡しができたりしている。

 

一応、2017年4月の時点で作ることのできる拡張機能
(時間があったら下の詳細を書くかも?)

f:id:x67x6fx74x6f:20170409032211p:plain

 

ここにはないが、WatchKit App(watchOS)と watchOS の Game 用の 拡張機能がある。

要するに、App ストアに並んでいる Apple Watch のアプリは拡張機能で実装されている。
同じアプリでデバイス間でデータアクセスするとなると、拡張機能で作成するのが現状もっとも適しているからだろう。

 

今後、もし新しいデバイスが増えるなら、噂されている AR 的のものやデバイスが実装されるのなら、
そこには App Extension が使用されるだろう。

 

あ、ちなみに、 Unity など Xcode のプロジェクトファイルを直接いじれない、
ほとんどのマルチプラットフォーム開発では
App Extension が簡単に開発ができなかったりする。