具体来说,当http服务器收到来自iPhone的请求时,是否有任何方式可以确定手机具有哪种类型的互联网连接?
如果无法确定地确定这一点,是否有任何良好的启发式方法?
答案 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标头。