IOS利用app groups实现app间数据共享


一、关于app groups

          app groups是iOS8新开放的一种机制,它可以在一定程度上弥补iOS的沙盒机制对应用间通信的限制。通过app groups,我们可以实现app间的一些数据共享,比如文件,数据等。

二、app groups的实现

       1、开启app groups

            TARGETS-->AppExtensionDemo-->Capabilities-->App Groups,找到以后,将App Groups右上角的开关打开,然后选择或者新增一个groups,比如我的是group.test,当然这是为了测试随便起得名字,正规点得命名规则应该是:group.com.company.app。

       2、代码实现   
             在一个app工程项目中写入如下代码:        
    NSDictionary *d = @{@"test":@"123"};
    NSURL *pathURL = [[NSFileManager defaultManager] containerURLForSecurityApplicationGroupIdentifier:@"group.test"];
    pathURL = [pathURL URLByAppendingPathComponent:@"Library/Caches/test.plist"];
    [d writeToFile:pathURL.resourceSpecifier atomically:YES ];
    
    NSUserDefaults *user = [[NSUserDefaults alloc] initWithSuiteName:@"group.test";
    [user setObject:@"00000" forKey:@"test"];
    [user synchronize];


            我们可以通过NSFileManager 的 containerURLForSecurityApplicationGroupIdentifier方法获取到相关的app groups的pathURL,通过pathURL.resourceSpecifier可以获取到app groups的路劲,这样我们就在路径下写文件了。这里我们写入了一个测试用的plist。


           在另一个app工程项目中写入如下代码:
NSURL *pathURL = [[NSFileManager defaultManager] containerURLForSecurityApplicationGroupIdentifier:@"group.test"];
    pathURL = [pathURL URLByAppendingPathComponent:@"Library/Caches/test.plist"];
    
    NSDictionary *d = [NSDictionary dictionaryWithContentsOfFile:pathURL.resourceSpecifier];
    NSLog(@"%@",d);
    
    NSUserDefaults *user = [[NSUserDefaults alloc] initWithSuiteName:@"group.test"];
    NSLog(@"%@",[user objectForKey:@"test"]);


       如上一样,获取pathURL然后可以读取上面一个app中写入的数据,这样就实现了2个app之间的数据和文件共享。其他的诸如图片,sqlite等等都可以通过这种方式共享。


三、注意事项

      app groups的共享仅限于同一个开发账号下的app使用,因为app groups创建是和开发账号关联的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值