代码之家  ›  专栏  ›  技术社区  ›  catlan

发现我在iPhone上使用的Internet连接类型的方法

  •  4
  • catlan  · 技术社区  · 16 年前

    我需要知道当我的应用程序运行时,什么样的互联网连接可用。我查看了苹果的可达性示例,但这只在WiFi和运营商网络之间有所不同。我需要知道的是选择了什么运营商网络,UMTS或EDGE或GPRS。

    4 回复  |  直到 13 年前
        1
  •  7
  •   amrox    16 年前

    目前,此信息不可用。如果您想要这个特性,请提交一个新的bug并指出这是bug 6014806的副本。

        2
  •  2
  •   Airsource Ltd    16 年前

    您可以通过检查服务器往返的延迟来猜测您所处的网络类型。如果你得到的数据低于100毫秒,你几乎肯定是在wifi上。

    GPRS和EDGE以约600毫秒的延迟运行。UMTS/HSDPA为100-200毫秒。

    资料来源:我的非正式测试和[AT&T][1]数字。

        3
  •  1
  •   Wedge    16 年前

    与其将不同版本的站点硬编码为3G、EDGE、GPRS、WiFi宽带,为什么不构建一个检测连接速度并将站点引导到适当带宽级别的框架呢?这样,您就可以在3G/WiFi速度较慢的情况下获得适当的效果,而且它可以自然扩展到下一代无线宽带(如WiMax和802.11n),只需最少的努力/中断。

    例如,您可以确定不同的带宽“检查点”(可能对应于3G、EDGE等),然后您可以执行一些操作,例如传输一些小数据或缓存所有带宽级别通用的小图像(例如图标),在后台对下载速度进行基准测试,并相应地设置带宽级别。

        4
  •  1
  •   duncan_m    13 年前

    仅文件

    我喜欢韦奇的回答。不过,我不确定ISP是否会缓存该文件。您可以一直生成一个新的文件名,或者选择一个足够大的文件名,只需测试足够长的时间就可以得到结果。

    简单潜伏期

    使用延迟的想法很接近,但正如Shivan提到的,这是不准确的。澳大利亚到英国的用户将获得约350ms的延迟时间,而本地用户则可以看到低至30-40ms的延迟时间。

    解决方法:平均偏差

    如果你用3个数据包ping你的服务器,然后看看3G下的平均偏差(MDEV),它通常在50毫秒以下。对于2G/EDGE,它几乎总是在100毫秒以上。我有一个异常值在65毫秒到AUS。

    我的测试发现4ms-38ms的范围,从比利时到澳大利亚的测试只有一个例外,时间是202ms。

    希望对某人有用……