Czy istnieje sposób na określenie urządzenia z uruchomioną aplikacją. Chcę rozróżnić iPhone
i iPod Touch
, jeśli to możliwe.
ios
objective-c
iphone
ipod-touch
Obrabować
źródło
źródło
Odpowiedzi:
Możesz użyć tej
UIDevice
klasy w następujący sposób:źródło
UI_USER_INTERFACE_IDIOM()
można bezpiecznie używać w aplikacjach, które nadal obsługują system iOS <3.2: jest to makroUIDevice.h
specjalnie napisane domyślnieUIUserInterfaceIdiomPhone
w takich starszych wersjach systemu iOS.To jest aktualizacja dla
UIDeviceHardware.m
z odpowiedzi powyżej .źródło
NSString
porównywaniaNSString
toNSDictionary
. Nazwa definiująca jedną bez zależności kodu to.plist
.Zachęcamy do skorzystania z tej klasy ( gist @ github )
AKTUALIZACJA (01/14/11)
Oczywiście ten kod jest już trochę nieaktualny, ale z pewnością można go zaktualizować za pomocą kodu w tym wątku,
Brian Robbins
który zawiera podobny kod ze zaktualizowanymi modelami. Dzięki za wsparcie w tym wątku.źródło
Używam tego w mojej aplikacji. Do grudnia 2012 r.
źródło
#import <sys/sysctl.h>
Najnowsza aktualizacja - październik 2019 r .: Dodano iPhone'a 11 , iPhone'a 11 Pro , iPhone'a 11 Pro Max , iPada (7. generacji)
Poprzednia aktualizacja - marzec 2019 r .: Dodano iPada Air 2019 (3. generacji), iPada mini 2019 (5. generacji), iPod Touch 2019 (7. generacji)
Szybki
(Testowane na Swift 5, Swift 4, Swift 3)
Poniższa funkcja zwraca ciąg z bieżącą nazwą urządzenia.
Możesz to przetestować za pomocą następującego kodu:
Cel C
Dodałem także nowe urządzenia do kodu Objective-C
Nie zapomnij zaimportować sys / sysctl.h
Możesz to przetestować za pomocą następującego kodu:
źródło
iPhone7,2
jest 6, aleiPhone8,1
czy 6S? odwrócili dla 6 i 6S?źródło
Zaktualizowano ciągi platform dla
iPad Air 2
iiPad mini 3
:źródło
Bardziej użyteczny
możesz czytać właściwości za pomocą
źródło
[[UIScreen mainScreen] scale]
jest to 2, czy nie (dla iOS 5+).Oto niewielka aktualizacja nowych modeli:
źródło
Wiem, że odpowiedź została już zaznaczona, ale na przyszłość możesz zawsze użyć rozmiaru ekranu urządzenia, aby dowiedzieć się, jakie to urządzenie:
źródło
Właśnie dodałem kod urządzenia iPhone 4S do tego wątku ...
IPhone 4S zwróci ciąg @ „iPhone4,1”.
źródło
Co z tym kodem, jeśli nowa wersja została wydana, będziesz identyfikować się z ostatnim znanym urządzeniem
źródło
Dodając do kodu Arasha, nie dbam o moją aplikację, którego modelu używam, chcę tylko wiedzieć, jakiego rodzaju urządzenia, więc mogę przetestować w następujący sposób:
źródło
Na podstawie bardzo dobrych odpowiedzi powyżej, oto co wymyśliłem. Jest to bardzo podobne do odpowiedzi @ Rodrigo, ale odnosi się do obaw @ Olivera z komentarza do tej odpowiedzi. Zapewnia to również opcję włączenia ciągu modelowego do ciągu wyjściowego.
źródło
Istnieje dość dojrzała biblioteka (przeze mnie) dla tego o nazwie SDVersion . Możesz sprawdzić działający model urządzenia, rozmiar ekranu i wiele innych parametrów. Obsługuje również OSX.
Przykład:
źródło
źródło
źródło
Posunąłem się trochę dalej i przekształciłem duży blok „isEqualToString” w klasyfikację masek bitowych dla typu urządzenia, generacji i tego innego kwalifikatora po przecinku (nazywam to subgeneracją). Jest zawinięty w klasę z wywołaniem singleton SGPlatform, co pozwala uniknąć wielu powtarzalnych operacji na łańcuchach. Kod jest dostępny https://github.com/danloughney/spookyGroup
Klasa pozwala robić takie rzeczy:
i
Klasyfikacja urządzeń odbywa się metodą platformBits. Ta metoda powinna być bardzo znana czytelnikom tego wątku. Sklasyfikowałem urządzenia według ich rodzaju i generacji, ponieważ najbardziej interesuje mnie ogólna wydajność, ale źródło można dostosować, aby uzyskać dowolną klasyfikację, która Cię interesuje, ekran siatkówki, możliwości sieciowe itp.
źródło
Poniższy fragment kodu powinien pomóc:
źródło
źródło
Dutchie432
iBrian Robbins
zapewnił świetne rozwiązania. Ale wciąż brakuje jednego modelu, Verizon iPhone 4 . Oto brakująca linia.źródło
Lubię rzeczy Erici Sadun. Obejmuje urządzenia AppleTV i inne, o których możesz nie myśleć.
https://github.com/erica/uidevice-extension/blob/master/UIDevice-Hardware.h
źródło
Możliwe wartości
są
iPod touch
,iPhone
,iPhone Simulator
,iPad
,iPad Simulator
Jeśli chcesz wiedzieć, który sprzęt
iOS
rujnujeiPhone3
,iPhone4
,iPhone5
etc poniżej jest kod, któryUWAGA: poniższy kod może nie zawierać całego ciągu urządzenia, jestem z innymi facetami utrzymującymi ten sam kod w GitHub, więc proszę wziąć najnowszy kod stamtąd
Cel C : GitHub / DeviceUtil
Swift : GitHub / DeviceGuru
źródło
Odpowiedź w Swift 3,
źródło
Dla prostego porównania zawsze lubię makro:
Jest prosty i łatwy w użyciu.
źródło
Chciałbym dodać, że aby pobrać kolor frontu i obudowy urządzenia, istnieje prywatny interfejs API:
Napisałem o tym na blogu i przedstawiłem przykładową aplikację:
http://www.futuretap.com/blog/device-colours/
źródło
Mogę zapewnić, że powyższy sugerowany będzie działał w iOS 7 i nowszych. Wierzę, że będzie działać również w iOS 6. Ale nie jestem tego pewien.
źródło
Możesz sprawdzić GBDeviceInfo na GitHub, również dostępnym za pośrednictwem CocoaPods. Zapewnia prosty interfejs API do wykrywania różnych właściwości z obsługą wszystkich najnowszych urządzeń:
[GBDeviceInfo deviceDetails].family == GBDeviceFamilyiPhone;
[GBDeviceInfo deviceDetails].model == GBDeviceModeliPhone6.
Aby uzyskać więcej informacji, przeczytaj plik Readme .
źródło
Aby zidentyfikować iPhone'a 4S, po prostu sprawdź następujące elementy:
źródło
Stworzyłem rozszerzenie, które pozwala mieć 3 poziomy identyfikacji:
Aktualizuje się na ostatnich urządzeniach z iOS
UIDeviceDetector
źródło