将文件共享到任何可能的应用程序的 iOS 原生方式
Posted
技术标签:
【中文标题】将文件共享到任何可能的应用程序的 iOS 原生方式【英文标题】:iOS native way to share files to any possible apps 【发布时间】:2016-04-09 13:12:41 【问题描述】:我目前正在使用 Objective-C 实现一个 ios 应用程序,它具有用户可以与其他朋友或其他应用程序共享文件的功能(例如将文件上传到 Dropbox、Google Drive、将文件附加到邮件、共享文件通过蓝牙等发送到 Facebook Messenger、Whatsapp)。
有没有一种原生的方式来实现这个共享功能,可以检测所有允许共享文件的应用程序,而我不需要一个一个来做?
【问题讨论】:
你可以使用ActivityController.... 也看UIDocumentInteractionController
。
【参考方案1】:
您想使用UIActivityViewController
。以下是来自NSHipster 的示例,这可能是我所见过的关于该主题的最全面的文章。苹果有一些很好的文档here。
NSString *string = ...;
NSURL *URL = ...;
UIActivityViewController *activityViewController = [[UIActivityViewController alloc] initWithActivityItems:@[string, URL]
applicationActivities:nil];
[navigationController presentViewController:activityViewController
animated:YES
completion:^
// ...
];
【讨论】:
【参考方案2】:这为 iPhone 和 iPad 设备提供了完整的答案
ViewController *contentViewController = [[ViewController alloc] init];
// Present the view controller using the popover style.
contentViewController.modalPresentationStyle = UIModalPresentationPopover;
[self presentViewController:contentViewController
animated:YES
completion:nil];
// Get the popover presentation controller and configure it.
UIPopoverPresentationController *presentationController =[contentViewController popoverPresentationController];
presentationController.permittedArrowDirections = UIPopoverArrowDirectionUp;
presentationController.sourceView = self.view;
presentationController.sourceRect = self.view.frame;
UIPopoverPresentationController should have a non-nil sourceView or barButtonItem set before the presentation occurs on iOS 9
【讨论】:
以上是关于将文件共享到任何可能的应用程序的 iOS 原生方式的主要内容,如果未能解决你的问题,请参考以下文章
如何使用React Native接收在iOS上导出/共享的文件
是否可以将 iOS 文件共享功能限制为文档目录中的子文件夹?