APPGroup笔记
2023-12-24 本文已影响0人
哈酒拎壶冲
APPGroup笔记
iOS8之后,苹果新增了APPGroup功能,多个应用程序可以通过同一个Group来共享资源,APPGroup可以通过NSUsedefaults进行小量数据的共享,如果需要共享较大的文件,可以通过NSFileCoordinator\NSFilePresenter等方式,主要应用在(extension拓展(uni-app插件)、多个app自动登录、小组件等)
使用appgroup准备工作流程
在开发者中心注册app group并在BounilID内部打开appgroup按钮选择创建的appgroupName.
![](https://img.haomeiwen.com/i1421910/67560b5112118326.png)
![](https://img.haomeiwen.com/i1421910/f2df8797577086d2.png)
项目中配置:在两个使用appgroup的程序中,targets->capability添加appgroup并选择group ID
![](https://img.haomeiwen.com/i1421910/f0c04ea149ddd5cb.png)
![](https://img.haomeiwen.com/i1421910/1624df426c3a6b2a.png)
开启appGroup,两个应用T1和T2都需要添加一个相同的group name,APP之间通过这个group共享数据。
//T1通过appgroup的名字创建信号设置并设置数据
NSUserDefaults *mydefaults = [[NSUserDefaults alloc] initWithSuiteName:@"group.yss"];
[mydefaults setObject:@"share data" forKey:@"mykey"];
//T2通过app group的名字创建编号设置并读取数据
NSUserDefaults *mydefaults2 = [[NSUserDefaults alloc] initWithSuiteName:@"group.yss"];
NSString *contents = [mydefaults2 objectForKey:@"mykey"];
使用NSFileManger保存获取appgroup共享空间数据
实际开发中,比如这种需求:公司有两个app,登录一个app后,在下载第二个app会实现自动登录的功能,接下来用NSFileManger代码实现一下
//第一个app 共享文件appgroup.text写入数据
//共享文件appGroup.text中写入数据
//获取app group的共享目录
NSURL *groupURL = [[NSFileManager defaultManager] containerURLForSecurityApplicationGroupIdentifier:@"group.temp.xxxx.xxxx"];//开发者平台自定义
NSURL *fileURL = [groupURL URLByAppendingPathComponent:@"tmp.txt"];
//写入文件
[@"hello-world" writeToURL:fileURL atomically:YES encoding:NSUTF8StringEncoding error:nil];
//读取数据 第二个app 通过获取tmp.txt的数据
//获取appgroup共享目录
NSURL *groupURL2 = [[NSFileManager defaultManager] containerURLForSecurityApplicationGroupIdentifier:@"group.temp.xxxx.xxxx"];
NSURL *fileURL2 = [groupURL2 URLByAppendingPathComponent:@"tmp.txt"];
//读取文件
NSString *str = [NSString stringWithContentsOfURL:fileURL2 encoding:NSUTF8StringEncoding error:nil];