iOS录屏直播(三)AppGroup
Morris_2019.06.14
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相关推荐
- iOS录屏直播(二)Broadcast Upload Extension和Broadcast Setup UI Extension
Morris_2019.06.13 上一篇总结了ReplayKit相关的知识点,实现了应用内的录屏功能,同时涉及到了很少一部分Broadcast Upload Extension和Broadcast ...
- iOS录屏直播(一)初识ReplayKit
Morris_2019.05.08 本篇主要功能: 认识ReplayKit框架 RPScreenRecorder实现在应用内录屏功能 RPPreviewViewController查看录屏内容 RPB ...
- iOS录屏直播(四)主App和宿主App数据共享,通信功能实现
文章目录 CFNotificationCenterGetDarwinNotifyCenter 发送通知 接收通知 注意事项 遗留问题 补充 Morris_ 2019.06.17 上一篇总结了一下App ...
- iOS rtmp 摄像头/录屏直播以及观看
之前讲过如何在centos上使用nginx搭建rtmp服务器(链接),本文介绍一下iOS 端如何通过rtmp录屏直播以及观看,完整的工程代码地址(https://github.com/zxm006/R ...
- Android PC投屏简单尝试(录屏直播)2—硬解章(MediaCodec+RMTP)
代码地址 :https://github.com/deepsadness/MediaProjectionDemo 想法来源 上一边文章的最后说使用录制的Api进行录屏直播.本来这边文章是预计在5月份完 ...
- Android实现录屏直播(二)需求才是硬道理之产品功能调研
请尊重分享成果,转载请注明出处,本文来自Coder包子哥,原文链接:http://blog.csdn.net/zxccxzzxz/article/details/54254244 Android实现录 ...
- 如何做电脑游戏桌面录屏直播实现手机直接观看
原创教程 ( 转载请注明出处 ) 2017-6-26,今天来做一下是电脑游戏桌面录屏直播的教程,就是把桌面的游戏直播出去,加上话筒做讲解.最终实现在电脑.手机.微信中都可以观看到游戏的直播和讲解画面. ...
- 手游录屏直播技术详解 | 直播 SDK 性能优化实践
直播无疑是 2016 年的大热话题,七牛云在 6 月底发布了实时流网络 LiveNet 和直播云解决方案后,我们用<直播技术详解>系列文章系统地介绍了直播各个环节的关键技术,帮助视频直播创 ...
- android实现录像功能吗,Android实现录屏直播(一)ScreenRecorder的简单分析
应项目需求瞄准了Bilibili的录屏直播功能,基本就仿着做一个吧.研究后发现Bilibili是使用的MediaProjection 与 VirtualDisplay结合实现的,需要 Android ...
最新文章
- JDBC编程专题4之JDBC驱动程序类型
- 旋转动画 rotate
- Web Service未定义的解决办法
- iis配置js支持读取json文件配置
- Oracle中Decode()函数使用技巧
- Hadoop/Spark相关面试问题总结
- 电脑不能开机维修_MacBook维修 苹果笔记本电脑进水不开机
- jquery-nodejs-安装与测试
- linux如何查看本机名称,Linux查看本机登陆用户信息(w、who、last和lastlog命令)...
- position小结
- vSphere Client报错:VMRC 控制台的连接已断开。正在尝试重新连接
- java中dl列表_Java DLFolder.getFolderId方法代码示例
- [推荐系统]互联网推荐系统比较研究
- python计算三个点构成的三角形的外切圆圆心坐标及半径
- uniapp对接微信公众号H5微信支付、分享、小程序隐藏右上角分享胶囊
- 微信小程序--picke选择器(省市区城市)-- 使用taro开发
- BNN Pytorch代码阅读笔记
- LUA脚本扩展wireshark自定义的协议
- Audit login 与 Audit logout
- 数字社区数字化技术应用