Apakah ada cara untuk menentukan perangkat yang menjalankan aplikasi. Saya ingin membedakan antara iPhone
dan iPod Touch
, jika mungkin.
ios
objective-c
iphone
ipod-touch
rampok
sumber
sumber
Jawaban:
Anda dapat menggunakan
UIDevice
kelas seperti ini:sumber
UI_USER_INTERFACE_IDIOM()
adalah aman untuk digunakan dalam aplikasi yang masih mendukung iOS <3.2: itu adalah makro diUIDevice.h
khusus ditulis untuk defaultUIUserInterfaceIdiomPhone
pada versi iOS yang lebih tua tersebut.Ini adalah pembaruan untuk
UIDeviceHardware.m
dari jawaban di atas .sumber
NSString
menghasilkan perbandingan kaskadeNSString
adalahNSDictionary
. Nama untuk mendefinisikan satu tanpa ketergantungan kode adalah.plist
.Silakan menggunakan kelas ini ( intisari github )
PEMBARUAN (14/1/11)
Jelas, kode ini agak ketinggalan zaman sekarang, tetapi pasti dapat diperbarui menggunakan kode pada utas ini yang disediakan oleh
Brian Robbins
yang mencakup kode serupa dengan model yang diperbarui. Terima kasih atas dukungan di utas ini.sumber
Saya menggunakan ini di aplikasi saya. Diperbarui pada Desember 2012.
sumber
#import <sys/sysctl.h>
Pembaruan terbaru - Oktober 2019: Menambahkan iPhone 11 , iPhone 11 Pro , iPhone 11 Pro Max , iPad (generasi ke-7)
Pembaruan sebelumnya - Maret 2019: Menambahkan iPad Air 2019 (generasi ke-3), iPad mini 2019 (generasi ke-5), iPod Touch 2019 (generasi ke-7)
Cepat
(Diuji pada Swift 5, Swift 4, Swift 3)
Fungsi di bawah ini mengembalikan string dengan nama perangkat saat ini.
Anda dapat mengujinya menggunakan kode berikut:
Objektif-C
Saya juga menambahkan perangkat baru ke kode Objective-C
Jangan lupa untuk mengimpor sys / sysctl.h
Anda dapat mengujinya menggunakan kode berikut:
sumber
iPhone7,2
apakah 6 tetapiiPhone8,1
6S? mereka terbalik untuk 6 dan 6S?sumber
String platform yang diperbarui untuk
iPad Air 2
daniPad mini 3
:sumber
Lebih bermanfaat
Anda dapat membaca properti dengan
sumber
[[UIScreen mainScreen] scale]
2 atau tidak (untuk iOS 5+).Berikut pembaruan kecil dengan model-model baru:
sumber
Saya tahu jawaban sudah dicentang, tetapi untuk referensi di masa mendatang, Anda selalu dapat menggunakan ukuran layar perangkat untuk mencari tahu di mana perangkat itu seperti ini:
sumber
Hanya menambahkan kode perangkat iPhone 4S ke utas ini ...
IPhone 4S akan mengembalikan string @ "iPhone4,1".
sumber
Bagaimana dengan kode ini, jika versi baru dirilis, Anda akan mengidentifikasi dengan perangkat yang tahu terakhir
sumber
Menambah kode Arash, saya tidak peduli untuk aplikasi saya model apa yang saya gunakan, saya hanya ingin tahu jenis perangkat apa, jadi, saya bisa menguji sebagai berikut:
sumber
Berdasarkan jawaban yang sangat bagus di atas, inilah yang saya temukan. Ini sangat mirip dengan jawaban @ Rodrigo, tetapi alamat keprihatinan @ Oliver dari komentar pada jawaban itu. Ini juga menyediakan opsi untuk memasukkan string model ke dalam string output.
sumber
Ada perpustakaan yang cukup matang (oleh saya) untuk itu yang disebut SDVersion . Anda dapat memeriksa untuk menjalankan model perangkat, ukuran layar dan banyak parameter lainnya. Ini juga mendukung OSX.
Contoh:
sumber
sumber
sumber
Saya mengambilnya sedikit lebih jauh dan mengubah blok "isEqualToString" yang besar menjadi klasifikasi bit mask untuk tipe perangkat, generasi, dan kualifikasi lainnya setelah koma (saya menyebutnya sub generasi). Itu dibungkus dalam kelas dengan panggilan singleton SGPlatform yang menghindari banyak operasi string berulang. Kode tersedia https://github.com/danloughney/spookyGroup
Kelas memungkinkan Anda melakukan hal-hal seperti ini:
dan
Klasifikasi perangkat berada dalam metode platformBits. Metode itu harus sangat akrab bagi pembaca utas ini. Saya telah mengklasifikasikan perangkat berdasarkan jenis dan generasi mereka karena saya sebagian besar tertarik pada kinerja keseluruhan, tetapi sumbernya dapat disesuaikan untuk memberikan klasifikasi yang Anda minati, layar retina, kemampuan jaringan, dll.
sumber
Cuplikan kode yang disebutkan di bawah ini akan membantu:
sumber
sumber
Dutchie432
danBrian Robbins
telah memberikan solusi hebat. Namun masih ada satu model yang hilang, Verizon iPhone 4 . Inilah garis yang hilang.sumber
Saya suka barang Erica Sadun. Dia termasuk perangkat AppleTV dan lainnya yang mungkin tidak Anda pikirkan.
https://github.com/erica/uidevice-extension/blob/master/UIDevice-Hardware.h
sumber
Kemungkinan katup
adalah
iPod touch
,iPhone
,iPhone Simulator
,iPad
,iPad Simulator
Jika Anda ingin tahu mana perangkat keras
iOS
adalah merusak pada sepertiiPhone3
,iPhone4
,iPhone5
dll di bawah ini adalah kode untuk ituCATATAN: Kode di bawah ini mungkin tidak mengandung semua string perangkat, saya dengan orang lain mempertahankan kode yang sama di GitHub jadi tolong ambil kode terbaru dari sana
Objective-C : GitHub / DeviceUtil
Swift : GitHub / DeviceGuru
sumber
Jawab di Swift 3,
sumber
Untuk perbandingan sederhana, saya selalu suka makro:
Ini sederhana dan mudah digunakan.
sumber
Saya ingin menambahkan itu untuk mengambil warna depan dan penutup perangkat ada API pribadi:
Saya telah membuat blog tentang hal ini dan memberikan contoh aplikasi:
http://www.futuretap.com/blog/device-colors/
sumber
Saya dapat memastikan bahwa yang disarankan di atas akan berfungsi di iOS 7 dan di atas. Saya percaya ini akan bekerja di iOS 6 juga. Tetapi saya tidak yakin tentang itu.
sumber
Anda dapat memeriksa GBDeviceInfo di GitHub, juga tersedia melalui CocoaPods. Ini menyediakan API sederhana untuk mendeteksi berbagai properti dengan dukungan semua perangkat terbaru:
[GBDeviceInfo deviceDetails].family == GBDeviceFamilyiPhone;
[GBDeviceInfo deviceDetails].model == GBDeviceModeliPhone6.
Untuk lebih lanjut, baca Readme .
sumber
Untuk mengidentifikasi iPhone 4S, cukup periksa yang berikut:
sumber
Saya telah membuat ekstensi yang memungkinkan Anda memiliki 3 level identifikasi:
Ini diperbarui dengan perangkat iOS terakhir
UIDeviceDetector
sumber