使用JavaScript检测iPhone 3G或3GS(以及iPod touch 2G与iPod touch 3G)

时间:2010-07-16 06:31:22

标签: iphone

有没有人知道检测旧设备的方法:

  • iPod touch 1G
  • iPhone 2G
  • iPhone 3G
  • iPod touch 2G

从较新的一套:

  • iPhone 3GS
  • iPod touch 3G
  • ipad公司
  • iPhone 4

我找到了检测iPhone 4和iPad的方法(使用屏幕尺寸)。但是,有没有办法从iPod touch 1G和iPhone 2G告诉iPhone 3GS和iPod touch 3G?

要求:

  • 哈哈是好的!只要确保它/所有/所有时间都有效。
  • 性能测试是否足够准确:但如果你可以100%的时间让它工作,那就没问题了。

(iPhone 2G和iPod touch 1G检测示例,使用“隐藏”方法:“iPad和iPhone 3G及更高版本支持H.264 Baseline profile 3.1。早期版本的iPhone支持H.264 Baseline profile 3.0。”来自https://developer.apple.com/library/archive/documentation/AudioVideo/Conceptual/Using_HTML5_Audio_Video/AudioandVideoTagBasics/AudioandVideoTagBasics.html)。

编辑:我无法绕过这个要求:除此检测外,没有其他解决方案。

3 个答案:

答案 0 :(得分:5)

如果数字运算会成为鉴别器......请使用它!只需测试一个小循环(称之为BogoMips),并在0.5秒内知道你要做什么。

定义了硬件和软件,负载几乎已定义(好吧...... iOS 4'多任务'?),所以我认为它非常准确。

编辑我现在只阅读您对性能测试的评论;也许你的确是这个意思,也许你的意思是测量页面渲染时间。我的建议是让一个页面只用 一段javascript,然后将结果存储为cookie并重定向。几乎所有情况都是已知的。

答案 1 :(得分:4)

您是否查看了UserAgent字符串?

例如,我的iPhone 4返回:

Mozilla/5.0 (iPhone; U; CPU iPhone OS 4_0_1 like Mac OS X; en-us) AppleWebKit/532.9 (KHTML, like Gecko) Version/4.0.5 Mobile/8A306 Safari/6531.22.7

Mobile/8A306是固件版本(只需谷歌8a306 iphone

我认为旧版本的手机无法运行新版本的操作系统。因此,您可以找到一组固件代码,这些代码只显示在较旧版本的手机上。这至少可以让你发现一些差异。

WURFL有一些很好的引用和用户代理字符串,以及如何根据它检测设备和功能。有一个可浏览的列表,他们可能能够正确检测设备。我无法访问旧硬件,因此我无法确认它是否始终有效。您可以使用以下内容浏览设备显示的内容:http://www.tera-wurfl.com/explore/并查看返回的各种UserAgent字符串。

答案 2 :(得分:-2)

Little Benchmark可检测旧型号。基准测试需要5到30毫秒,所以没有真正的问题。

function runBenchmark(){
    var time,
    init = new Date(),
    iterations = 5000;
    while (iterations--) {
        Math.sqrt(iterations*Math.random());
    }
    time = new Date - init;
    return time;
}

function detectIphoneSpeed () {
    if (runBenchmark()<15) {
        return "3gs";
    } else {
        return "3g";
    }
}
var iphoneSpeed = detectIphoneSpeed();