APPGroup筆記
iOS8之后,蘋果新增了APPGroup功能,多個應(yīng)用程序可以通過同一個Group來共享資源,APPGroup可以通過NSUsedefaults進(jìn)行小量數(shù)據(jù)的共享,如果需要共享較大的文件,可以通過NSFileCoordinator\NSFilePresenter等方式,主要應(yīng)用在(extension拓展(uni-app插件)、多個app自動登錄、小組件等)
使用appgroup準(zhǔn)備工作流程
在開發(fā)者中心注冊app group并在BounilID內(nèi)部打開appgroup按鈕選擇創(chuàng)建的appgroupName.

b0cc013531167f05bacd73733448930.png


項目中配置:在兩個使用appgroup的程序中,targets->capability添加appgroup并選擇group ID

WechatIMG315.png

WechatIMG316.png
開啟appGroup,兩個應(yīng)用T1和T2都需要添加一個相同的group name,APP之間通過這個group共享數(shù)據(jù)。
//T1通過appgroup的名字創(chuàng)建信號設(shè)置并設(shè)置數(shù)據(jù)
NSUserDefaults *mydefaults = [[NSUserDefaults alloc] initWithSuiteName:@"group.yss"];
[mydefaults setObject:@"share data" forKey:@"mykey"];
//T2通過app group的名字創(chuàng)建編號設(shè)置并讀取數(shù)據(jù)
NSUserDefaults *mydefaults2 = [[NSUserDefaults alloc] initWithSuiteName:@"group.yss"];
NSString *contents = [mydefaults2 objectForKey:@"mykey"];
使用NSFileManger保存獲取appgroup共享空間數(shù)據(jù)
實際開發(fā)中,比如這種需求:公司有兩個app,登錄一個app后,在下載第二個app會實現(xiàn)自動登錄的功能,接下來用NSFileManger代碼實現(xiàn)一下
//第一個app 共享文件appgroup.text寫入數(shù)據(jù)
//共享文件appGroup.text中寫入數(shù)據(jù)
//獲取app group的共享目錄
NSURL *groupURL = [[NSFileManager defaultManager] containerURLForSecurityApplicationGroupIdentifier:@"group.temp.xxxx.xxxx"];//開發(fā)者平臺自定義
NSURL *fileURL = [groupURL URLByAppendingPathComponent:@"tmp.txt"];
//寫入文件
[@"hello-world" writeToURL:fileURL atomically:YES encoding:NSUTF8StringEncoding error:nil];
//讀取數(shù)據(jù) 第二個app 通過獲取tmp.txt的數(shù)據(jù)
//獲取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];