我熟悉使用可达性来确定在iOS设备上使用的互联网连接类型(如果有的话)。不幸的是,这不是一个很好的连接质量指标。低信号强度的Wifi相当粗糙,任何低于3bar的3G都是一场灾难(更不用说只允许边缘连接的网络了)。
如何确定连接的质量,以便帮助用户决定是否应该在当前连接上下载较大的文件?
发布于 2011-12-10 01:36:35
一种实用的方法是在应用程序开始时下载一个托管在可靠的全球CDN上的中等大小的文件。你事先知道文件大小,你只需要测量它所需的时间,做一个简单的计算,然后你就得到了你对连接质量的估计。
例如,jQuery UI源代码,未压缩,压缩后重约90kB。在我的苹果电脑上,从http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.14/jquery-ui.js下载它需要327毫秒。因此,可以假设我至少有一个可以处理大约300kB/s的像样的连接(实际上,它可以处理更多)。
诀窍是在原始文件大小和网络延迟之间找到良好的平衡,因为像这样的小文件永远不会达到完整的下载速度。另一方面,在启动应用程序后立即下载1MB肯定会惩罚大多数用户,即使它可以让您更精确地测量连接速度。
发布于 2011-12-13 04:24:33
Cyrille的答案是一个很好的实用答案,但最终在移动环境中并不是一个很好的解决方案,原因如下:
你还在你的原始帖子中建议,你希望你的用户根据你提供给他们的信息来决定他们是否应该下载。但我认为,这不是与移动用户互动的好方法--你不应该要求他们做出复杂的决定。如果绝对有必要,只在您认为文件可能出现问题时询问他们是否要下载文件,但要保持简单-“您想下载XYZ文件(100MB)吗?”我个人甚至会避免这样的事情。
与下载测试文件相比,更好的解决方案是对进行监控和调整。在进行过程中测量连接的性能,跟踪您所拥有的有关连接性能的信息的“新鲜度”,并仅在必要时才向您的用户提供基于连接的持续性能做出的决定。
编辑:例如,如果您确定了一个在您看来代表可容忍的下载性能的耐心阈值,请跟踪用户进行的每次下载,以确定是否达到了该阈值。这样,您就可以使用真实世界的活动作为“连接质量”的决定因素,而不是使用测试下载阻塞用户连接,这最终关系到最终用户对连接质量的体验。如果你决定为用户提供取消下载的能力,那么你就有了一个很好的关于用户实际耐心阈值的“输入”,并且可以通过随后在他们开始下载之前给他们选择来调整你的功能以适应这种情况。如果您已经进入这种类型的“确认”模式,但随后发现文件的下载速度开始加快,您可以动态退出确认模式。
发布于 2018-09-27 01:09:56
Rob的回答非常好,但是对于更具体的实现,可以从(https://developer.apple.com/library/archive/samplecode/SimplePing/Introduction/Intro.html#//apple_ref/doc/uid/DTS10000716)Apple's Simple Ping example source code开始
将您要监视其连接质量的服务器的域作为目标。使用ping库定期"ping“它(例如1秒或10秒,具体取决于您的UI需求)。测量需要多长时间才能获得对ping的响应(或者如果它永远不会返回),以评估与用户通信的连接质量。
https://stackoverflow.com/questions/8419382
复制相似问题