在我拥有的两个iOS应用程序之间共享文件/数据

前端之家收集整理的这篇文章主要介绍了在我拥有的两个iOS应用程序之间共享文件/数据前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有应用程序A和B,两者都是由我开发的.我想将文件从A发送到B,但它必须在不使用任何共享服务(如dropBox或任何涉及互联网连接的共享服务)的情况下发生.

OpenURL / CustomURLSchemes似乎不起作用,因为您可以传递的数据受限,文件大小可能很大.由于沙盒,我无法写入文件并传递网址…
UIActivityViewController和UIDocumentInteractionController只有在有办法显示我目前无法实现的应用程序时才是选项.

这可能吗?

我拥有这两个应用程序,文件扩展名是自定义的.

解决方法

实际上,您不需要扩展来在自己的应用之间共享数据.您可以使用应用程序组.

在MyApp1和MyApp2中转到目标,然后转到功能,然后单击应用程序组功能.让Xcode帮助您在Apple开发者帐户中获取应用程序组权利设置.

现在,您可以使用该应用组ID在您的应用之间共享数据.例如:

在MyApp1中将它放在appDelegate中:

NSUserDefaults *myDefaults = [[NSUserDefaults alloc] initWithSuiteName:@"group.mycompany.myappgroup"];
[myDefaults setObject:@"foo" forKey:@"bar"];

在MyApp2中,appDelegate把这个:

NSUserDefaults *myDefaults = [[NSUserDefaults alloc] initWithSuiteName:@"group.mycompany.myappgroup"];
NSLog(@"Show me something: %@",[myDefaults objectForKey:@"bar"]);

确保您用于套件名称的字符串与Xcode中应用程序组功能部分下的字符串完全相同,并且还确保您的权利plist中的字符串自动添加到项目中.

您还可以使用相同的想法共享文件

NSURL *groupURL = [[NSFileManager defaultManager] containerURLForSecurityApplicationGroupIdentifier:
    @"group.mycompany.myappgroup"];

对于那些想要在Swift中看到它的人:

var userDefaults = NSUserDefaults(suiteName: "group.mycompany.myappgroup")

var fileManager = NSFileManager.defaultManager().containerURLForSecurityApplicationGroupIdentifier("group.mycompany.myappgroup")

猜你在找的iOS相关文章