将文件共享到任何可能的应用程序的 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上导出/共享的文件

React 原生 IOS 邮件回调

是否可以将 iOS 文件共享功能限制为文档目录中的子文件夹?

云原生时代 容器持久化存储的最佳方式是什么?

如何将文件从 iOS 反应原生应用程序保存到 Files 文件夹

将文件从程序共享到 PC