iOS6で大きく変わったアプリ間データ共有

先日、「iOS6でAndroidのインテントっぽいものができたって聞いたんですけど、ほんとですか?」と聞かれました。 うーん、聞きたいことはわかるんだけど、ちょっと違うんですよね。

……というわけで、Xcodeでの設定方法もだいぶ前と変わったし、iOSの現時点でのアプリ間ファイル共有についてまとめてみました。

iOS6で大きく変化したところは……

まず、iOS6で大きく変わったのは次の二つです。 UIDocumentInteractionControllerを使った共有が、機能も見た目も大幅に進化したこと UIActivityViewControllerを使った共有ができるようになったこと

それぞれ変更内容がいろいろあるので、三つにわけて書いてみました。

どちらかというと、Androidでいう「インテントっぽいもの」に一番機能が近いのはUIDocumentInteractionControllerでしょうね。

それぞれの利点、欠点

UIActivityViewControllerは機能拡張ができていろいろと使えそうですけど、iOS6でしか使えないのがちょっと難点。 ファイルタイプ(またはUTI)をベースにするのであれば、引き続きUIDocumentInteractionControllerを使った方がよさそうです。

サンプルソース

上の3つの機能を実装したサンプルソースをGithubにおきました。 (OpenURL、UIDocumentInteractionController、UIActivityViewControllerを使ったファイル連携が実装されています。) SendDataDemo(情報を送る側) ReceiveDataDemo(情報を受け取る側)