画像やテキスト、URLなどを他アプリへ渡す仕組み。FacebookなどのSNSにシェアしてもらうときに使える。シェアしたいものを配列にして渡す。nil)これで、以下のようなシートが表示される。手軽なのでよく使っているのだが、罠がある。Descriptionが無いとクラッシュします。写真appにアクセスしていないアプリだと見落としがちなので注意。Descriptionが必要です。appでもそうなのかどうかは試してないので不明。どんなExtensionが使われるかはユーザ依存なので、アプリ本体側としては全部テストはできないから妥協が必要だが、ユーザー目線からみるとアプリのバグと見えるのでツライところ。渡すが、それをどう使われるかはExtension次第。Facebookの場合、ImageとTextの両方を渡すと、Imageのみになる。v143.0ではそうなるが、少し前のバージョンだとImageも認識されなかった)FacebookはそもそもアプリからデフォルトのTextを入れてはダメというポリシーがあるようなので、Textは渡せない(渡さない)と考えたほうが吉。Extensionのアプリバージョンによって挙動がかわるまぁ当たり前ではあるのですが、そういうものです。言い換えると、実装したタイミングでは動いていたのに、今みたら動いていない...ということがあるということ。iOS11のリリース直後はTwitterで画像のシェアができなくなった。Twitterのアプリをアップデートしてくれたので今はiOS11でできるようになったが、iOS10だと画像シェアできないようだ。Facebookのアカウント管理機能があった(SocialFramework)。そのため、アプリをインストールしていなくてもActivityViewControllerには表示され、シェアが可能。(これはiOS11で消滅)つまり、iOS10で動作確認する際は、アプリインストール有無で挙動が変わるということを知っておくのが大事。Extensionの仕組みはとてもいいものだと思う。これがなければ、アプリに「他アプリへの連携機能」を付けてもらうしか無い。マイナーアプリの場合は、連携機能を期待するのも難しいであろうし。その代わり、使う方(本体アプリ)も、使われる方(Extension)も、正しい理解と実装をして、新しいOSにも対応し続けていかないといけない。私が受託開発を請け負っている身だったら、あまり理解してもらえないようなお客さんの場合は、使うのはためらうかも...。