是否可以将通过3G发出的HTTP请求与其他请求区分开来

时间:2012-01-28 19:55:05

标签: ios http

具体来说,当http服务器收到来自iPhone的请求时,是否有任何方式可以确定手机具有哪种类型的互联网连接?

如果无法确定地确定这一点,是否有任何良好的启发式方法?

3 个答案:

答案 0 :(得分:3)

抱歉挖出那具尸体,但实际上我只想到了同样的问题。 重点是:无法直接检测

尽管如此,我提出了一种方法,遗憾的是需要做一些准备: 您需要获取发出请求的IP的主机名。

例如,当我通过3G网络通过手机向我的网络服务器发出请求并将请求IP解析为请求主机名时,我明白了:

ip-xxx-xxx-xxx-xxx.web.vodafone.de

因此,您需要收集(或在互联网上查找)移动网络提供商主机名列表。 使用这种方法,您无法确切地知道用户正在使用哪种连接,但至少可以区分WiFi和移动网络。

答案 1 :(得分:1)

如果你控制iOS应用程序,你应该可以设置一个自定义标题,比如X-iOS-ConnectionType。如果您收到来自Mobile Safari的请求,我会怀疑您会得到任何结果,但您可能会尝试ping源IP地址并检查传输速率。

我应该补充一点,就像渐进增强和自适应设计一样,通过检测吞吐量而不是3G / WiFi可能会更好。虽然您可能会在WiFi上获得更好的吞吐量,但我发现有几个3G速度更快的情况。

(请注意,我从未考虑过移动流量,而源IP可能不是客户端传输速率的良好指标。)

答案 2 :(得分:1)

也许您可以使用Reachability类来确定互联网连接,然后将其包含在您的HTTP请求中,例如:作为Ryan Riley建议的参数或自定义HTTP标头。