需求:公司多个app之间数据共享 如果需要这样的功能,必须要告诉苹果,在开发者中心申请一个groupID(因为我们在开发中对数据的存储都是通过这个id进行的),这样在创建应用的时候才会在Appgroup目录中分配一个我们共享数据的文件
1.登录开发者账号,创建App Groups
登录开发者账号开发者中心传送门
img
点击App Groups那栏,右上方添加AppGroup
img
然后continue->Done就行了
2.项目中配置
打开你的xcode项目工程,先选中根目录,在target中选中你的工程–>Capabilites(注意:要用到数据共享的工程都要配置)
img
3.项目中使用(以NSUserDefaults和NSFileManager为例)
工程一:生成数据部分
#pragma mark - NSUserDefaults
- (void)setAppGroup1
{
NSUserDefaults *myDefaults = [[NSUserDefaults alloc] initWithSuiteName:@"group.test.appgroup"];//此处id要与开发者中心创建时一致
[myDefaults setObject:@"value" forKey:@"key"];
NSLog(@"%@", [myDefaults valueForKey:@"key"]);
}
#pragma mark - NSFileManager
- (void)setAppGroup2{
//获取分组的共享目录
NSURL *groupURL = [[NSFileManager defaultManager] containerURLForSecurityApplicationGroupIdentifier:@"group.test.appgroup"];//此处id要与开发者中心创建时一致
NSURL *fileURL = [groupURL URLByAppendingPathComponent:@"demo.txt"];
//写入文件
[@"abc" writeToURL:fileURL atomically:YES encoding:NSUTF8StringEncoding error:nil];
//读取文件
NSString *str = [NSString stringWithContentsOfURL:fileURL encoding:NSUTF8StringEncoding error:nil];
NSLog(@"str = %@", str);
}
工程二:获取共享数据部分
#pragma mark - NSUserDefaults
- (void)getByAppGroup1
{
NSUserDefaults *myDefaults = [[NSUserDefaults alloc]initWithSuiteName:@"group.test.appgroup"];//此处id要与开发者中心创建时一致
NSString *content = [myDefaults objectForKey:@"key"];
NSLog(@"%@",content);
}
#pragma mark - NSFileManager
- (void)getByAppGroup2{
//获取分组的共享目录
NSURL *groupURL = [[NSFileManager defaultManager] containerURLForSecurityApplicationGroupIdentifier:@"group.test.appgroup"];//此处id要与开发者中心创建时一致
NSURL *fileURL = [groupURL URLByAppendingPathComponent:@"demo.txt"];
//读取文件
NSString *str = [NSString stringWithContentsOfURL:fileURL encoding:NSUTF8StringEncoding error:nil];
NSLog(@"str = %@", str);
}
Snip20201030_13.png