iOS文件:预览 和 分享到微信或钉钉等

一、概述

Apple对于用户的隐私高度重视,因此对于相册、文件、视频等媒体文件的分享严格控制。只能通过系统的相关framework提供的接口实现。

二、通过 UIDocumentInteractionController 分享到微信或钉钉等

系统默认的分享页面如下:


image

代码如下:

// 需要持有 UIDocumentInteractionController 实例
@property(nonatomic,strong) UIDocumentInteractionController *documentController;

// 调用方法
NSURL *url = [NSURL fileURLWithPath:sourceUrl];
self.documentController = [UIDocumentInteractionController interactionControllerWithURL:url];
[self.documentController setDelegate:self];
[self.documentController presentOpenInMenuFromRect:CGRectZero inView:self.view animated:YES];

必须持有UIDocumentInteractionController的实例,否则crash。错误信息 ***has gone away prematurely。原因在于在ARC环境下,方法走完之后,UIDocumentInteractionController的实例被释放了。

三、PDF文件的预览

3.1、方式一:WKWebview 直接打开

self.webView = [[WKWebView alloc] initWithFrame:CGRectZero configuration:wkWebConfig];
self.webView.contentMode = UIViewContentModeScaleAspectFit;
[self.view addSubview:self.webView];

// 沙盒资源
NSURL *url = [NSURL fileURLWithPath: sourceUrl];
[self.webView loadFileURL:destURL allowingReadAccessToURL: url];

// http://
NSURL *url = [NSURL URLWithString: sourceUrl];
[self.webView loadRequest:[NSURLRequest requestWithURL: url]];

// 本地html文件
[self.webView loadHTMLString:htmlString baseURL:nil];

3.2、方式二:使用 UIDocumentInteractionController 的预览接口

实现代理UIDocumentInteractionControllerDelegate方法如下

- (UIViewController *)documentInteractionControllerViewControllerForPreview:(UIDocumentInteractionController *)controller {
    return self;
}

调用api

[self.documentController presentPreviewAnimated:YES];

3.3、方式三:QuickLook.FrameWork框架,支持PDF、Excel、World等

主要是使用QLPreviewController 来实现预览功能,实例化QLPreviewController对象,然后实现相关代理即可。
具体使用方式,详见相关文档。

3.4、方式四:针对PDF,还可以使用CGContexDrawPDFPage

这是更底层的api接口,针对PDF,其性能和支持的预览效果无疑是最好的,不过开发成本也相对高。
感兴趣的同学可以自行参见相关文档。

3.5、使用第三方类库

例如,MuPDF

四、让自己的App称为其他App分享对象(如上面的钉钉、微信等)

其实质 共享文件 的方式,注册称为支持某种文件类型的app,需要在info.plist里面配置UIFileSharingEnabled等相关项。
iOS中打开的文件如何用其他应用打开选择自己的App

其他

iOS 文件预览(PDF、Excel、World等)之QuickLook框架
iOS利用UIDocumentInteractionController和Quick Look打开或预览文档
iOS UIDocumentInteractionController的使用
PDF的显示和浏览

你可能感兴趣的:(iOS文件:预览 和 分享到微信或钉钉等)