我正在使用 Xcode。
在我的应用程序中,我在该位置保存了一些 UIdocuments
[[NSFileManager defaultManager] URLsForDirectory:NSDocumentDirectory inDomains:NSUserDomainMask];
我正在寻找一种共享文档的方法,我的第一个选择是通过电子邮件。
我可以通过电子邮件将这些文件作为附件发送吗?然后我可以使用具有相同应用程序的另一台设备打开吗?
我正在使用 Xcode。
在我的应用程序中,我在该位置保存了一些 UIdocuments
[[NSFileManager defaultManager] URLsForDirectory:NSDocumentDirectory inDomains:NSUserDomainMask];
我正在寻找一种共享文档的方法,我的第一个选择是通过电子邮件。
我可以通过电子邮件将这些文件作为附件发送吗?然后我可以使用具有相同应用程序的另一台设备打开吗?
您可以执行以下操作。
创建一个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
.
来自苹果文档。
addAttachmentData:mimeType:fileName:
此方法在消息正文之后但在用户签名之前附加指定的数据。您可以附加多个文件(使用不同的文件名),但必须在显示邮件撰写界面之前这样做。将界面呈现给用户后不要调用此方法。
关于你问题的第二部分。你能解释一下你需要展示什么类型的文件吗?
同时,请查看在iOS 应用程序中添加“打开方式...”选项。
要发送任何附件,您需要将内容放入NSData
对象中。如果文档在磁盘上,那么这很简单。您只需要文档的路径或文件 URL。然后,您可以NSData
使用路径或 URL 创建对象。
如果电子邮件的接收者具有相同的应用程序并且该应用程序设置为出现在此类文档的“打开方式”菜单中,则用户可以从附件中打开该应用程序。然后,您的应用程序只需要知道当它被要求打开这种类型的文件时要做什么。这里有很多关于 SO 的现有文档和问题,描述了如何注册应用程序以打开某些文件类型。