数据库Objective-C runningios

App Group---APP之间数据共享

2017-11-09  本文已影响2118人  jeckHao
  • 实际开发中,我们也许会有这种需求:公司有两个APP,当用户登录其中一个APP后,在下载第二个APP的时候,可以实现自动登录的功能。
  • 这种情况如何实现呢?我之前的项目一直都是用第三方类库KeychainAccess实现的钥匙串分享数据的模式Keychain share。但是几天前查资料,开始认识另外一种方式,不依赖第三方库就可以实现,那就是APP Groups。iOS8新开放的功能

配置APP Groups

配置Xcode中的APP Groups

如何实现数据共享

配置工作做完了,接下来,就是我们的代码表现的时间了。
在这里,我只创建了一个.txt来存储数据,其他类型的持久化存储同理

//Main App 通过TextField来向共享文件appGroup.txt中写入数据
- (void)textFieldDidEndEditing:(UITextField *)textField {
    //获取App Group的共享目录
    NSURL *groupURL = [[NSFileManager defaultManager] containerURLForSecurityApplicationGroupIdentifier:@"group.com.simon.app.test"];
    NSURL *fileURL = [groupURL URLByAppendingPathComponent:@"appGroup.txt"];

    //写入文件
    [textField.text writeToURL:fileURL atomically:YES encoding:NSUTF8StringEncoding error:nil];
}
//Sub App 通过获取appGroup.txt中的数据,展现在label上

//获取App Group的共享目录
    NSURL *groupURL = [[NSFileManager defaultManager] containerURLForSecurityApplicationGroupIdentifier:@"group.com.simon.app.test"];
    NSURL *fileURL = [groupURL URLByAppendingPathComponent:@"appGroup.txt"];

    //读取文件
    NSString *str = [NSString stringWithContentsOfURL:fileURL encoding:NSUTF8StringEncoding error:nil];
    self.shareLabel.text = str;
//初始化一个供App Groups使用的NSUserDefaults对象
NSUserDefaults *userDefaults = [[NSUserDefaults alloc] initWithSuiteName:@"group.company.appGroupName"];

//写入数据
[userDefaults setValue:@"value" forKey:@"key"];

//读取数据
NSLog(@"%@", [userDefaults valueForKey:@"key"]);
上一篇下一篇

猜你喜欢

热点阅读