iOS学习笔记-APP之间数据共享空间AppGroups

本文介绍了iOS中通过AppGroups实现不同APP间数据共享的方法,包括创建AppGroups的步骤、项目配置、以及使用NSUserDefaults、NSFileManager和CoreData进行数据存取。同时提到了App Groups对于扩展(Extension)的重要性,以及UIPasteboard作为不同账号间数据共享的备选方案。还提供了一个封装好的AppGroupManager类供参考。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

优快云 的强制 VIP 越来越恶心了,强制文章开起 VIP,本来写文章就是分享技术,后续不再在此平台更新了

APP之间共享数据的方式约以下几种:

  1. URL Scheme 跳转
  2. App Groups 共享一块存储空间
  3. KeyChain共享数据(keychain access group) 账号密码共用,不会随App删除
  4. UIDocumentInteractionController 文档分享,例如文件在QQ中打开的功能
  5. 粘贴板UIPasteboard 复制粘贴

App Groups 用于两个app之间共享文件,开扩了一块共同的存储区域

此外扩展( Extension )也需要使用App Groups 的相关知识

此方法只能使用于同一个开发者账号,如果不同开发者账号请考虑剪切板 UIPasteboard

若需要存储共有的账号密码,请使用KeyChain

创建AppGroups

登陆开发者账号
https://developer.apple.com/account/
选择Certificates,IDS & Profiles
在这里插入图片描述
选择Identifiers,添加一个
在这里插入图片描述

选择App Groups

然后填写描述和group标识
在这里插入图片描述
然后 continue

每个app id需要打开App Groups功能,并配置好


项目中配置

打开你的xcode项目工程,先选中根目录,在target中选中你的工程–>Capabilites

这里写图片描述


代码中使用

NSUserDefaults

//初始化一个供App Groups使用的NSUserDefaults对象
NSUserDefaults *userDefaults = [[NSUserDefaults alloc] initWithSuiteName:@"group.company.appGroupName"];

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

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

NSFileManager

//获取分组的共享目录
NSURL *groupURL = [[NSFileManager defaultManager] containerURLForSecurityApplicationGroupIdentifier:@"group.company.appGroupName"];
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);

利用NSFileManager我们可以存取各种文件,数据库文件(.db),json文件framework等等;我们可以复制各种文件到APPGroup的存取区域,在另一个app中拿出来

static NSString * const group = @"group.company.appGroupName"; 

- (BOOL)saveDataFromPath:(NSString *)originPath toFile:(NSString *)filename;
{
   
	self.url = [[NSFileManager defaultManager] containerURLForSecurityApplicationGroupIdentifier:group];
    NSURL *fileURL = [self.url URLByAppendingPathComponent:filename];
    
    return [[NSFileManager defaultManager] copyItemAtPath:originPath toPath:[fileURL path] error
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值