8

iOS6で共有用にUIActivityViewControllerを使うように移行しているのですが、メールで共有する際に添付するメール添付オブジェクトの作り方がわかりません。

iOS5 の対応するコードは次のとおりです。

MFMailComposeViewController *picker = [[MFMailComposeViewController alloc] init];
[picker addAttachmentData:data mimeType:@"application/XXX" fileName:fileName];
4

3 に答える 3

26

UIActivityViewControllerの制御は非常に制限されていますが、よく知られているmimeタイプをアタッチしている場合は、ファイルURLに関連するファイル拡張子を指定することで、正しく機能させることができます。たとえば、添付ファイルがvCardの場合は、ファイルURLで「.vcf」拡張子を使用します。

NSString *docsPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0];
// The file extension is important so that some mime magic happens!
NSString *filePath = [docsPath stringByAppendingPathComponent:@"vcard.vcf"];
NSURL *fileUrl     = [NSURL fileURLWithPath:filePath];

[data writeToURL:fileUrl atomically:YES]; // save the file

// Now pass the file URL in the activity items array
UIActivityViewController *avc = [[UIActivityViewController alloc] initWithActivityItems:
    @[@"Here's an attached vCard", fileUrl] applicationActivities:nil];
[vc presentModalViewController:avc animated:YES];
于 2012-10-23T10:22:43.653 に答える
2

UIActivityViewController を使用して DropBox などのアプリやその他の一般的なファイル処理アプリケーションにファイルが共有されていない理由を知りたい人にとって、本当に必要なのは UIDocumentInteractionController です。

次のように使用します。

class ViewController {
    var openInController:UIDocumentInteractionController!

    init() {
        openInController = UIDocumentInteractionController(URL: docURL)
    }

    func shareDoc {
        openInController.presentOptionsMenuFromRect(CGRectZero, inView: self.view, animated: true)
    }
}
于 2014-10-06T04:41:38.500 に答える
0

私が言えることから、UIActivityViewController ではこれを行うことはできません。メッセージ本文の HTML コンテンツを表示することさえできません。

于 2012-09-30T02:49:05.377 に答える