有没有办法测量iOS中的延迟?

有没有办法测量iOS中的延迟?,ios,connectivity,Ios,Connectivity,我试图解决的问题是,我想有一种方法来测量网络延迟,并在出现高延迟情况时通知用户。我的应用程序允许用户从在线来源流式传输音频或视频内容,虽然在我的测试中3g甚至边缘速度都可以播放,但延迟峰值可能会导致可用性出现问题。发生这种情况时,我希望能够提醒用户这些问题的原因 我已经回到苹果的可达性示例代码中,但仍然没有帮助。我将回顾一年前提交的一个问题() 假设我从一个强连接开始,我可以在网络链接调节器中设置一个自定义配置文件,该配置文件将丢弃100%发送的数据包,并且示例应用程序中的可达性代码不会改变积极

我试图解决的问题是,我想有一种方法来测量网络延迟,并在出现高延迟情况时通知用户。我的应用程序允许用户从在线来源流式传输音频或视频内容,虽然在我的测试中3g甚至边缘速度都可以播放,但延迟峰值可能会导致可用性出现问题。发生这种情况时,我希望能够提醒用户这些问题的原因

我已经回到苹果的可达性示例代码中,但仍然没有帮助。我将回顾一年前提交的一个问题()

假设我从一个强连接开始,我可以在网络链接调节器中设置一个自定义配置文件,该配置文件将丢弃100%发送的数据包,并且示例应用程序中的可达性代码不会改变积极结果。它仍然告诉我我有一个连接,即使没有数据包通过

为了获得这些信息,我是否可以通过KVO或其他方式收听任何可靠的值

我的应用程序允许用户从在线来源流式传输音频或视频内容

一些内置的流媒体方式可以告诉您发生了什么。如果您使用的是AVPlayerItem,则像
playbackLikelyToKeepUp
accessLog
这样的属性,以及像
AvPlayerTemplayBackstalledNotification
这样的通知,可以帮助您及时了解任何问题。

最简单的方法(可能是唯一真正有效的方法)是在发送请求时存储时间值,并在收到响应时评估延迟。您可以在这里查看如何解决此问题

对你来说最重要的是

objc_setAssociatedObject(notification.object, AFNetworkRequestStartDate, [NSDate date], OBJC_ASSOCIATION_RETAIN_NONATOMIC);
当请求被发送并且

NSTimeInterval elapsedTime = [[NSDate date] timeIntervalSinceDate:objc_getAssociatedObject(notification.object, AFNetworkRequestStartDate)];
当收到响应时

如何将此逻辑集成到代码中取决于您使用什么来获得流式视频