Ios 如何设计像Viber这样的网络质量指标?

Ios 如何设计像Viber这样的网络质量指标?,ios,networking,signals,Ios,Networking,Signals,这是应用程序的链接 我环顾四周,主要建议使用私有api或networkactivityindicator(这不是我想要的) 如果您能告诉我如何启动,我将不胜感激。Viber应用程序的网络质量指的是数据连接 在NSURLConnectionDataDelegate的连接:didReceiveResponse:处设置开始时间,然后在连接:didReceiveData:处传输内容并计算字节数。在connectiondFinishLoading:设置完成时间,计算时间间隔,并将其与您的任意阈值相匹配

这是应用程序的链接

我环顾四周,主要建议使用私有api或networkactivityindicator(这不是我想要的)


如果您能告诉我如何启动,我将不胜感激。

Viber应用程序的网络质量指的是数据连接


在NSURLConnectionDataDelegate的
连接:didReceiveResponse:
处设置开始时间,然后在
连接:didReceiveData:
处传输内容并计算字节数。在
connectiondFinishLoading:
设置完成时间,计算时间间隔,并将其与您的任意阈值相匹配。

我感觉默认的iOS框架会有这些信息(请查看iOS中的网络库)。如果没有,你可以查看ping时间(在后台ping一个URL,并查看延迟量,确保你使用的是一个随时可用且快速的服务器。ping google.com可能?)

所以我环顾四周,阅读了Ege Akpinar早些时候给出的非常有用的答案,偶然发现了这篇文章。他们使用苹果自己的类,可以在Mac OSX和iOS上使用:

苹果样本的链接可以通过上面的链接获得,但为了提高效率和速度,这里是它的直接链接:

我还发现了另一篇文章,展示了如何使用Swift实现这个类。我想我可能会包括它,以防您使用Swift:


我希望这会有一些用处。

我真的很喜欢这个答案,我脑海中唯一的问题是检查ping是否会占用大量资源。您是否有一种优化的方法来实现这一点?否则是个好主意!不是真的,你已经在做VoIP,发送高频语音包。因此,每隔一秒钟左右进行一次ping不会有多大区别。我需要补充的是,ping Google的想法是错误的,你想显示与服务器的连接,因此你应该ping你自己的服务,并将响应时间与预期进行比较。一个稍微轻一点的方法可以是保持连接打开并接收连续数据(服务器必须能够发送数据流,例如每秒1字节). 这将更轻,因为它节省了每次创建新数据包的开销(数据包头、打开新连接、握手等)