ReplayKit2采用端口转发数据时不能终止的问题

一、现象描述

  测试发现在进行USB连接数据投屏中,如果点击屏幕红条进行结束ReplayKit2投屏或者通知栏点击停止录制按钮,大概率出现已经停止录屏,但是通知栏中的录屏按钮还在继续录制的问题

  这个现象在iOS11.2系统之前经常出现,但是后续苹果进行了修复,不再出现。

  并且只有在进行USB连接的状态下面进行投屏才会出现

二、程序逻辑描述

  ReplayKit2的Upload进程在收到系统的结束回调之后,需要向直播业务服务器报告直播停止的信息,因为Upload进程是一个后台进程,如果直接结束,会导致来不及发送请求

  因此在结束回调的时候增加了一个延时,避免Upload进程的主线程立即结束,让 结束请求成功发往业务服务器

  逻辑如下:

  

- (void)innerFinish
{
    if(判断是投屏的话)
    {
        //fix USB 投屏延时之后无法正常结束,原因未知
        return;
    }

    NSDate *start = [NSDate date];
    NSTimeInterval waitTime = 1.0;
    while ( [[NSDate date] timeIntervalSinceDate:start] <= waitTime ) {
        [[NSRunLoop mainRunLoop] runMode:NSDefaultRunLoopMode
                              beforeDate:[NSDate dateWithTimeIntervalSinceNow:0.1]];
    }
}

  就是这个延时是导致这个问题的原因,去掉延时就不会产生上面的问题。目前不清楚为什么跟USB端口转发连接相关

三、解决

  在投屏模式下面走正常结束的逻辑即可。

原文地址:https://www.cnblogs.com/doudouyoutang/p/9299514.html

时间: 2024-10-12 02:21:01

ReplayKit2采用端口转发数据时不能终止的问题的相关文章

pfSense2.32端口转发设置

pfSense上的端口转发是一个相当简单的过程.以前版本添加端口转发时,还必须添加防火墙规则,以便流量转发到端口指定的内部IP地址. 现在在创建端口转发定义时可以自动添加此规则,并且默认情况下已启用该选项. 端口转发设置 导航到Firewall>NAT>Port Forward. 下面对端口转发设置的各个字段进行逐一解释: Disabled:     允许端口转发条目被禁用,而不从配置中删除它. No  RDR: 反向重定向流量匹配这里指定的内容. 对于高级配置,通常应该取消选中. Inter

SSH高级应用(端口转发-防火墙穿透)

SSH应用简述 一.非标准端口启动SSH ssh的默认端口是22这是大家都知道的事情,但是在有些时候Cracker会扫描Internet上面的22号端口,因此有些时候有些ISP厂商会在会在入口处关闭22号端口. 为了提高安全性我们可以将SSH的端口开放在非标准的端口,这样Cracker就不会扫描到该端口,ISP厂商也不会对该端口进行关闭,它可以和SSH一样正常使用. 比如我们将SSH端口设定为22和23(前提是23端口不可以被占用)两个端口监听的方式,配置如下: 修改SSH配置文件 vim /e

asp.net采用OLEDB方式导入Excel数据时提示:未在本地计算机上注册&quot;Microsoft.Jet.OLEDB.4.0&quot; 提供程序&quot;

asp.net采用OLEDB方式导入Excel数据时提示:未在本地计算机上注册"Microsoft.Jet.OLEDB.4.0" 提供程序" 笔者在项目中做做了一个从Excel表格中导入数据的模块.大体上asp.net项目中导入Excel大体分成三类: 1)采用c#内置方案System.Data.OleDb(限制较小, 通用) 2)采用Excel的COM组件(会有版本问题) 3)采用伪Excel文件.即使用文本流的方式根据需求自己定义数据格式.同时在服务端进行反格式化 笔者采

检查已终止。收集事实数据时检测到错误

数据类型 SQL2005 数据容量 470 MB 故障类型 服务器断电导致数据库系统表异常.消息 8921,级别 16,状态 1,第 1 行 检查已终止.收集事实数据时检测到错误.可能是 tempdb 空间用尽或某个系统表不一致.请检查前面的错误消息. 修复结果 文件发来后 手工纠正系统表后,数据库其他表恢复顺利,但是gl_doc表损坏及其严重,没有软件可以获取到表数据,分析原因是该表 分配信息丢失. 手工从残余记录分析到分配信息后 重新提取完成恢复. 整个数据库完全被用友直接使用,完全OK.

arista 交换机镜像端口配置(将某一端口的数据转发到指定端口)

译文: 大致意思是将某些端口的数据发送到指定的端口. 原文如下 12.5.2.2 Mirror Port Configuration Port mirroring is the duplication of traffic from a set of source ports onto a destination port. A mirror session associates a set of source ports to a destination port. ? The monitor

centos 7的firewalld防火墙配置IP伪装和端口转发(内附配置案例)

IP地址伪装和端口转发都属于NAT(网络地址转换). 地址伪装和端口转发的区别如下: IP地址伪装:通过地址伪装,NAT设备将经过设备的包转发到指定的接收方,同时将通过的数据包源地址更改为其NAT设备自己的接口地址.当返回的数据包到达时,会将目的地址修改为原始主机的地址并做路由.地址伪装可以实现局域网多个地址共享单一公网地址上网.类似于NAT技术中的端口多路复用(PAT).IP地址伪装仅支持ipv4,不支持ipv6. 端口转发:也可以称之为目的地址转换或端口映射.通过端口转发,将指定IP地址及端

ssh本地端口转发

ssh连接是有方向的,通常是ssh客户端去连接ssh服务器端.而我们运行的应用也是有方向的,比如我们去登陆一个qq,或者用浏览器上网,都是应用程序的客户端(本地下载qq.浏览器软件)去连接远处的qq服务器.web服务器.当ssh的连接方向和应用连接的方向一致时,这就称为ssh本地转发. 假设现在有一个防火墙保护的网络,在这个网络中防火墙会过滤经过53端口以外的数据包,所以在内网中我们就无法通过常规手段上网了,比如内网中的主机1就无法访问外网的web服务器主机3,因为经过80端口的数据全被防火墙过

SSH隧道技术----端口转发,socket代理

本文大部分参考引用加copy:http://blog.chinaunix.net/uid-20761674-id-74962.html 本文的受众 如果你遇到了以下问题,那么你应该阅读这篇文章 我听说过这种技术,我对它很感兴趣 我想在家里访问我在公司的机器(写程序,查数据,下电影). 公司为了防止我们用XX软件封锁了它的端口或者服务器地址. 公司不让我们上XX网站,限制了网址甚至IP. 公司不让我们看关于XX的信息,甚至花血本买了XX设备,能够对内容进行过滤.一看XX内容,链接就中断了. 我爸是

实战 SSH 端口转发

原文转自:http://www.ibm.com/developerworks/cn/linux/l-cn-sshforward/index.html 通过本文的介绍,读者可以从中了解到如何应用 SSH 端口转发机制来解决日常工作 / 生活中的一些问题.学会在非安全环境下使用端口转发来加密网络应用,保护个人隐私以及重要商业信息.同时也能够用此技术解决工作中一些常见问题,例如解决防火墙及网络应用本身带来的一些限制. 第一部分 概述 当你在咖啡馆享受免费 WiFi 的时候,有没有想到可能有人正在窃取你