質問: 会社で、iphone用アプリを作成することになった初心者です。 やりたいことは、遠方にある装置の設定値などのデータを、ブルートゥースを利用してiphoneに吸い上げ、メンテナンスに利用したいと考えています。自作アプリ(Objective-c)で、機械とiphone間のデータのやり取りはできるようになりました。 次にやりたいのは、この自作アプリで 1.遠方の機械の動作を変更したい場合や動作がおかしい場合、現場にいる人間にiphoneにデータを吸い上げて、メールに添付して送ってもらう。 2.そのデータを、こちらで正しく変更する。 3.変更したデータをメールに添付し、現場の人間のiphoneに送る。 4.現場の人間は、送られてきたデータを開き、機械側に送り込む。 ということを行いたいのです。そこで教えていただきたいのです。 1.「1」のデータのメール添付は、自作アプリにアクティビティ(UIActivity)機能を使えば可能と思いますが、この認識で正しいでしょうか。 2.「4」のメールに添付されたデータファイルを自作アプリで開くことは可能でしょか(iOSの場合、データは自分のフォルダ内しかアクセスできな い?)。可能な場合、どのような機能(UI)を使用すればよいのでしょうか。 初心者の質問で申し訳ありませんがよろしくお願いします。
回答: > > 1.「1」のデータのメール添付は、自作アプリにアクティビティ(UIActivity)機能を使えば可能と思いますが、この認識で正しいでしょうか。 > > > メールに添付して送信する部分はUIActivityでも可能ですが、 余計な選択肢が出て手間が一つ増えますので、メール固定の場合は MessageUIフレームワークを使うほうが細かい制御もできますし良いかなと思います。 アプリ内メーラーを起動する「MFComposeViewController」の使用方法 > > 2.「4」のメールに添付されたデータファイルを自作アプリで開くことは可能でしょか(iOSの場合、データは自分のフォルダ内しかアクセスできな > > い?)。可能な場合、どのような機能(UI)を使用すればよいのでしょうか。 > > > 例えば「自分のアプリは拡張子.hogehogeに対応しています!」という宣言をしておくと、 ユーザーがメールに添付されているaaa.hogehogeファイルを「送る」(共有する)等を行った際に、 iOSがそのファイルに対応しているアプリを一覧をユーザーに表示し、 どのアプリで開くかを聞いてくれます(この辺はメーラーによるかもしれません)。 自分のアプリがタップされた場合、自分のアプリのDocuments/Inboxフォルダ内にファイルがコピーされ、 (アプリが起動していない場合は起動し、)そのファイルを開け、といった指示がAppDelegateに届きます。 実際の実装方法は以下のサイトが参考になると思います。 [iOS] Info.plistにカスタムUTIを追加し、iOSがデフォルトで認識できないタイプのファイルを受け取れるようにする