簡體   English   中英

使用JavaScript檢測iPhone 3G或3GS(以及iPod touch 2G與iPod touch 3G)

[英]Detect iPhone 3G or 3GS (and iPod touch 2G vs iPod touch 3G) in JavaScript

有沒有人知道檢測舊設備的方法:

  • 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 )。

編輯:我無法繞過這個要求:除此檢測外沒有其他解決方案。

如果數字運算是一個鑒別器......使用它! 只需測試一個小循環(稱之為BogoMips),並在0.5秒內知道你在做什么。

硬件和軟件都已定義,負載幾乎已定義(好吧...... iOS 4'多任務'?),所以我認為它非常准確。

編輯我現在只閱讀你對性能測試的評論; 也許你的確是這個意思,也許你的意思是測量頁面渲染時間。 我的建議是讓一個頁面只有一段javascript,然后將結果存儲為cookie並重定向。 幾乎所有情況都是眾所周知的。

你看過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字符串。

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();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM