iOS录屏直播(三)AppGroup
AppGroup是什么
App Groups Entitlement
AppGroup是一個App組,里面可以有若干個App,AppGroup組是個虛無的存在,若干個App通過同一個AppGroup組的標識來連接起來,這個標識就是App Groups Entitlement下key對應的value。
同一個App需要加入多個不同的AppGroup的話,只需要在App Groups Entitlement下的App Groups下添加新的item,填入AppGroup的唯一標識。
關于APP Groups網上資比較多。
AppGroup的作用
App Group主要作用是實現跨進程數據共享,在不同的App之間可以互訪問同一塊內存區間。
輕量級的數據用NSUserDefaults對AppGroup組里的數據進行訪問,比較大的數據使用NSFileManager進行數據訪問。
AppGroup相當于建立了一個通道,若干個App都可以通過這個通道來實現數據共享。
AppGroup使用
1、創建AppGroup
在Apple Developer的證書管理目錄下,找到Identifiers,有一個App Groups,在這里面創建一個AppGroup。
2、AppID配置AppGroup
在Identifiers下的App IDs選項下,選擇需要設置AppGroup的App ID,選擇App Group,配置上創建的AppGroup。
3、工程配置App Group
回到項目中,打開項目中的App Group選項。TARGET->Capabilities->App Groups。打開該選項。
打開之后項目中會出現一個xxx.entitlements。打開里面是AppGroup的信息。
在實現錄屏直播時候,添加的Broadcast Upload Extension和Broadcast Setup UI Extension也打開這個開關設置,就建立起來了宿主App、Broadcast Upload Extension和Broadcast Setup UI Extension之間數據共享通道。
4、共享數據
4.1 NSUserDefaults
在App之間建立起Group通道后,在任何一個App中寫入數據:
NSUserDefaults *userDefaults = [[NSUserDefaults alloc] initWithSuiteName:@"xxx"]; [userDefaults setValue:@"value" forKey:@"key"];這里使用initWithSuiteName這個方法,創建一個跨進程讀寫操作的NSUserDefaults對象,SuiteName即是AppGroup id。
在另外一個App中讀取數據:
NSUserDefaults *userDefaults = [[NSUserDefaults alloc] initWithSuiteName:@"xxx"]; NSString *value = [userDefaults valueForKey:@"key"];這是在兩個有相同AppGroup的App之間,對同一塊存儲空間進行數據訪問的例子。雖然是兩個App,但是有相同的AppGroup。
感覺不好的地方放就是這里的key和value畢竟不像在一個App里,要兩個App約定好數據類型和key。
在錄屏直播過程中,Broadcast Upload Extension和宿主App之間可以進行如上的操作進行數據共享,將宿主App的數據傳到Broadcast Upload Extension,也可以將Broadcast Upload Extension的數據傳到宿主App中。
4.2 NSFileManager
寫入數據
- (BOOL)saveData:(NSData *)data toFile:(NSString *)filename {NSURL *groupURL = [[NSFileManager defaultManager] containerURLForSecurityApplicationGroupIdentifier:@"group.xxx.group"];NSURL *fileURL = [groupURL URLByAppendingPathComponent:filename];if ([[NSFileManager defaultManager] fileExistsAtPath:fileURL.path]){if ([data writeToURL:fileURL atomically:NO]) {NSLog(@"write sucess");return YES;}return NO;}else{return [[NSFileManager defaultManager] createFileAtPath:[fileURL path] contents:data attributes:nil];}return NO; }讀取數據
- (NSData *)dataFromFile:(NSString *)filename {NSURL *groupURL = [[NSFileManager defaultManager] containerURLForSecurityApplicationGroupIdentifier:@"group.xxx.group"];NSURL *fileURL = [groupURL URLByAppendingPathComponent:filename];return [[NSFileManager defaultManager] contentsAtPath:[fileURL path]]; }總結
以上是生活随笔為你收集整理的iOS录屏直播(三)AppGroup的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: c语言实现京东秒杀软件,python实现
- 下一篇: 【最佳实践】携程服务注册中心架构演进