码迷,mamicode.com
首页 > 其他好文 > 详细

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

时间:2018-07-12 16:39:07      阅读:379      评论:0      收藏:0      [点我收藏+]

标签:就是   为什么   不能   default   不清楚   highlight   录制   成功   直接   

一、现象描述

  测试发现在进行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端口转发连接相关

 

三、解决

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

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

标签:就是   为什么   不能   default   不清楚   highlight   录制   成功   直接   

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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!