iOS 7 UIActivityViewController电子邮件附件

dru*_*umz 5 email attachment uiactivityviewcontroller ios7 airdrop

我在这里回顾了一堆帖子,大量的在线教程/示例代码,我很难过.在我的应用程序中,我显示iOS7本身提供的UIActivityController没有问题,其中包含适合我的应用程序的共享选项(AirDrop和邮件).

我遇到的具体问题是当用户选择通过邮件共享选项时,将保存的文档附加到电子邮件中.消息正文正在设置为文本,但附件是MIA.相关代码是:

//生成要为当前显示的记录共享的XML文件... NSURL*url = [self createShareFile];

UIActivityViewController *controller = [[UIActivityViewController alloc] initWithActivityItems:@[@"Data shared from my app.", url] applicationActivities:nil];

// Filter out the sharing methods we're not interested in....
controller.excludedActivityTypes = @[UIActivityTypePostToTwitter, UIActivityTypePostToFacebook,
                                UIActivityTypePostToWeibo,
                                UIActivityTypeMessage,
                                UIActivityTypePrint, UIActivityTypeCopyToPasteboard,
                                UIActivityTypeAssignToContact, UIActivityTypeSaveToCameraRoll,
                                UIActivityTypeAddToReadingList, UIActivityTypePostToFlickr,
                                UIActivityTypePostToVimeo, UIActivityTypePostToTencentWeibo];

// Now display the sharing view controller.
[self presentViewController:controller animated:YES completion:nil];
Run Code Online (Sandbox Code Playgroud)

我错过了什么?我的文件正确创建,内容正确,NSURL对象包含文件的正确路径.

谢谢!

dru*_*umz 6

问题解决了.....

我原始帖子中发布的代码是100%准确的.问题最终出现在我构建在createShareFile方法中返回的NSURL的方式中:

不正确(原始方式):

return [NSURL URLWithString:[docFile stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]];
Run Code Online (Sandbox Code Playgroud)

正确的方式:

return [NSURL fileURLWithPath:docFile];
Run Code Online (Sandbox Code Playgroud)

一旦我修复了它,它就开始工作,即使使用我的自定义文件类型.