先日、「iOS6でAndroidのインテントっぽいものができたって聞いたんですけど、ほんとですか?」と聞かれました。 うーん、聞きたいことはわかるんだけど、ちょっと違うんですよね。
……というわけで、Xcodeでの設定方法もだいぶ前と変わったし、iOSの現時点でのアプリ間ファイル共有についてまとめてみました。
iOS6で大きく変化したところは……
まず、iOS6で大きく変わったのは次の二つです。 UIDocumentInteractionControllerを使った共有が、機能も見た目も大幅に進化したこと UIActivityViewControllerを使った共有ができるようになったこと
それぞれ変更内容がいろいろあるので、三つにわけて書いてみました。
- その1:OpenURLを使ったデータ共有
- その2:UIDocumentInteractionControllerを使ったデータ共有
- その3:UIActivityViewControllerを使ったデータ共有
どちらかというと、Androidでいう「インテントっぽいもの」に一番機能が近いのはUIDocumentInteractionControllerでしょうね。
それぞれの利点、欠点
UIActivityViewControllerは機能拡張ができていろいろと使えそうですけど、iOS6でしか使えないのがちょっと難点。 ファイルタイプ(またはUTI)をベースにするのであれば、引き続きUIDocumentInteractionControllerを使った方がよさそうです。
サンプルソース
上の3つの機能を実装したサンプルソースをGithubにおきました。 (OpenURL、UIDocumentInteractionController、UIActivityViewControllerを使ったファイル連携が実装されています。) SendDataDemo(情報を送る側) ReceiveDataDemo(情報を受け取る側)