限于iOS的沙盒机制(sandbox),不能跨app访问数据。所以想分享App A的数据到App B中使用,需要借助Open In来操作。
本文介绍如何实现通过“Open In”方式来分享数据到其它App当中,以及在实现时,踩到的坑(前车之鉴)。
1. 涉及的类
Cocoa框架为我们提供了类UIDocumentInteractionController来实现Open In分享。
2. 实现步骤
简单说来,我们需要准备数据,弹出Open In窗口,调用UIDocumentInteractionController分享数据。
2.1 准备数据
推荐将要分享的数据拷贝到一个目录文件夹做备用。当然如果将分享的数据体积较大,也可省略这一步,但必须保证数据在分享过程中可用;
NSString *fromPath = @"demoFromPath";
NSString *toPath = @"demoToPath";
NSError *err = nil;
NSFileManager*fileManager =[NSFileManager defaultManager];
[fileManager copyItemAtPath:fromPath toPath:toPath error:&err];
另外还需初始化一个分享类实例对象,并声明类遵循UIDocumentInteractionControllerDelegate协议。
首先声明一个UIDocumentInteractionController属性实例:
@property (nonatomic, strong) UIDocumentInteractionController *documentViewController;
@synthesize documentController;
在分享前