iOS 獲取裝置型號最新總結
在開發中,我們經常需要獲取裝置的型號(如 iPhone X
, iPhone 8 Plus
等)以進行資料統計,或者做不同的適配。但蘋果並沒有提供相應的系統 API 讓我們直接取得當前裝置的型號。
其中, UIDevice
有一個屬性 model
只是用於獲取 iOS 裝置的型別,如 iPhone
, iPod touch
, iPad
等;而其另一個屬性 name
表示當前裝置的名稱,由使用者在設定》通用》關於》名稱中設定,如 My iPhone
, xxx 的 iPhone
等。然而,我們無法根據這兩個值獲得具體的型號。
不過,每一種 iOS 裝置型號都有對應的一個或多個硬體編碼/識別符號,稱為 device model
或者叫 machine name
,之前的小集介紹過,我們可以通過如圖 1 中的程式碼來獲取:
所以,通常的做法是,先獲取裝置的 device model
值,再手動對映為具體的裝置型號(或者直接把 device model
值傳給後端,讓後端去做對映,這樣的好處是可以隨時相容新裝置)。
例如:去年釋出的第一代 iPhone X 對應的 device mode
為 iPhone10,3
和 iPhone10,6
,而今年最新發布 iPhone XS 對應 iPhone11,2
,iPhone XS Max 對應 iPhone11,4
和 iPhone11,6
,iPhone XR 對應 iPhone11,8
,完整的 device mode 資料參考 Wiki:
- ofollow,noindex">https://www.theiphonewiki.com/wiki/Models
綜上,我們可以先獲取 device model
值,記為 platform
,然後進行對比判斷,轉換成具體的裝置型號。實現程式碼如圖 2、3 所示:
備註:圖中程式碼只給了對 iPhone 裝置型號的判斷,而完整的包括 iPad 和 iPod touch 型號我已經放在 GitHub Gist 上,大家可以參考, 詳見這裡 。
參考連結: