App Extension
概要
色々あるやで
App Extension 経由でデータを共有する
App Extension は、メインとなるアプリ (Host App) は別プロセスで動作するし、基本的に App Extension から Host App のデータにはアクセスできないような制限がかけられているため、データ共有ではいくつか気をつける必要がある。
外部の API を利用する
Shared Container を利用する
Realm 等の DB ファイルを Shared Container におくことで DB の共有なんかは行える (複数プロセスからの読み書きを気にする必要はある) などなど...
Host App と App Extension のやりとり
App Extension は、ユーザが Host App 内で Extension を起動した時、Host App からリクエストされて起動する Extension はそのリクエストとしてユーザのタスクを手助けし、最終的にリクエストがキャンセルもしくは完了する
context には、ユーザが extension 内で作業に用いたい複数の item 群が含まれる
この Context は child view controller にも伝播する
Context 情報を利用して仕事を完了したら、以下のいずれかを実行する
共有可能なコンテンツを制限する
App Extension に対する Host App からの起動リクエストに含まれる Context 情報。Context 情報には、Extension 内でのユーザの作業に利用させたい item 群も保持されていて、inputItems プロパティに含まれている。これは NSExtensionItem の配列になっている。各 NSExtensionItem は、item のタイトルやユーザ情報等の様々な情報を含んでおり、特に attachments プロパティにはメディアデータが格納される。 userInfo に、下記のキーに応じた値が入っている。
デバッグ
プロセスをアタッチすればOK。