我可以通过电子邮件发送UIDocuments作为附件吗?

时间:2013-06-25 20:27:22

标签: ios objective-c email attachment uidocument

我正在使用Xcode。

在我的应用中,我在该位置保存了一些UI文档

[[NSFileManager defaultManager] URLsForDirectory:NSDocumentDirectory inDomains:NSUserDomainMask];

我正在寻找一种分享文件的方式,我的第一个选择是通过电子邮件。

我可以通过电子邮件将这些文件作为附件发送吗?我可以使用同一个应用程序打开其他设备吗?

2 个答案:

答案 0 :(得分:2)

你可以这样做。

创建MFMailComposeViewController并使用- (void)addAttachmentData:(NSData*)attachment mimeType:(NSString*)mimeType fileName:(NSString*)filename方法添加附件。

例如。

MFMailComposeViewController *mailVC = [[MFMailComposeViewController alloc] init];
[mailVC setSubject:@"Shared documents"];
[mailVC setToRecipients:@[@"sample@example.com"]];
[mailVC setMessageBody:@"Here the docs I want to share" isHTML:NO];
[mailComposer addAttachmentData:pdfData mimeType:@"application/pdf" fileName:@"file.pdf"];

[mailVC setMailComposeDelegate:self];

[self presentViewController:mailVC animated:YES completion:nil];

其中pdfData的类型为NSData。因此,您需要将文档转换为NSData

来自Apple doc。

addAttachmentData:mimeType:fileName:
  

此方法在消息体之后附加指定的数据   在用户签名之前。您可以附加多个文件(使用   不同的文件名)但必须在显示邮件之前这样做   作文界面。在演示之后不要调用此方法   用户界面。

关于问题的第二部分。你能解释一下你需要展示什么类型的文件吗?

与此同时,请查看Adding "Open In..." option to iOS app

答案 1 :(得分:0)

要发送您需要的任何附件,以将内容导入NSData对象。如果文档在磁盘上,那么这很简单。您只需要文档的路径或文件URL。然后,您可以使用路径或URL创建NSData对象。

如果电子邮件的接收者具有相同的应用程序且应用程序设置为出现在此类文档的“打开方式”菜单中,则用户可以从附件中打开该应用程序。然后,当您被要求打开此类型的文件时,您的应用只需要知道该怎么做。这里有很多关于SO的现有文档和问题,描述了如何注册应用程序以打开某些文件类型。