Email iOS 7 UIActivityViewController电子邮件附件

Email iOS 7 UIActivityViewController电子邮件附件,email,ios7,attachment,uiactivityviewcontroller,airdrop,Email,Ios7,Attachment,Uiactivityviewcontroller,Airdrop,我已经阅读了这里的一堆帖子,许多在线教程/示例代码,我被难住了。在我的应用程序中,我可以显示iOS7本机提供的UIActivityController,其中包含适合我的应用程序的共享选项(空投和邮件) 我遇到的具体问题是,当用户选择“通过邮件共享”选项时,将保存的文档附加到电子邮件中。消息正文设置为文本,但附件为MIA。有关守则如下: //为当前显示的记录生成要共享的XML文件。。。 NSURL*url=[self-createShareFile] UIActivityViewControlle

我已经阅读了这里的一堆帖子,许多在线教程/示例代码,我被难住了。在我的应用程序中,我可以显示iOS7本机提供的UIActivityController,其中包含适合我的应用程序的共享选项(空投和邮件)

我遇到的具体问题是,当用户选择“通过邮件共享”选项时,将保存的文档附加到电子邮件中。消息正文设置为文本,但附件为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];
我错过了什么?我的文件正在正确创建,内容正确,NSURL对象包含文件的正确路径

谢谢

问题已解决

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

不正确(原始方式):

正确的方法:

return [NSURL fileURLWithPath:docFile];

一旦我解决了这个问题,它就开始工作了,即使是我的自定义文件类型。

我遇到了一个类似的问题,邮件应用程序是我唯一无法添加pdf的应用程序。这是我的Swift代码以及处理iPad弹出窗口的代码

var filesToShare = [Any]()
filesToShare.append(self.myUrl)

let activityViewController = UIActivityViewController(activityItems: filesToShare as [Any], applicationActivities: nil)
present(activityViewController, animated: true)

// for iPad -> where to present on screen
if let popOver = activityViewController.popoverPresentationController {
    //action button being my top left icon
    popOver.barButtonItem = self.actionButton
}

我的问题是如何以不同的方式处理URL

你救了我一天!非常感谢你分享这个!
var filesToShare = [Any]()
filesToShare.append(self.myUrl)

let activityViewController = UIActivityViewController(activityItems: filesToShare as [Any], applicationActivities: nil)
present(activityViewController, animated: true)

// for iPad -> where to present on screen
if let popOver = activityViewController.popoverPresentationController {
    //action button being my top left icon
    popOver.barButtonItem = self.actionButton
}