パッケージタイプの文書をメール添付ファイルとして送信する方法
-
11-12-2019 - |
質問
パッケージタイプの文書を持っています - それは本当にフォルダですが、NSFileWrapper
を使用し、com.apple.package
に準拠してファイルとして表示されます。私はMFMailComposeViewController
を作りました、そして、addAttachmentData:mimeType:fileName:
の最初のパラメータに与えるものをうまく解決しようとしています。
パッケージにはイメージファイルとPlistが含まれていますが、将来的には変更できます。
パッケージをデータに変換する方法それはこれをやる正しい方法ですか?
解決
あなたが言ったように、パッケージは現実のフォルダーです。これはOSXオペレーティングシステムのみのパッケージとして解釈されます。
そのように、メールプロトコルはパッケージとして解釈することができません/単一のファイルとしては、標準フォルダのみが見られます。
これを電子メールで送信する唯一の方法は、ファイルを単一のファイルに圧縮することです。これを行うには、パッケージのZIPアーカイブ、またはたとえばtar.gzファイルを作成することで行うことができます。
CocoaのコードからZIPアーカイブを作成するための複数のソリューションがあります。libzライブラリとCコードを直接使用するか、またはいくつかのサードパーティのライブラリを使用することも、 ziparchive または他のもの。
他のヒント
マイファイルは大きくないので、ZIPはオーバーキルであり、私はまたサードパーティコードを使用しないようにしています。だから私は単一の電子メールの添付ファイルに複数のファイルを添付するための別のアプローチを思い付きました。
まず、添付ファイルに必要なすべてのファイルを含むNSFileWrapperオブジェクトをすでに持っています。このキーは、NSFileWrapperのSerializedRepresentationメソッドを使用して、電子メールの添付ファイルに使用するNSDataオブジェクトを取得することです。MimeTypeには 'application / octet-stream'を使用しています。添付ファイルを開くに戻ると、NSFileWrapperのInitWithSerializedRepresentation:元のNSFileWrapperを取り戻す方法を使用します。
これは私のために添付ファイルが私のアプリによってのみ使用され、開かれるためです。明らかに、あなたがあなたのアプリの外の添付ファイルで何かをする必要があるならば、これはうまくいきません。その場合、ZIPは論理的な選択になるようです。