Gibt es eine Möglichkeit, das Gerät zu bestimmen, auf dem eine Anwendung ausgeführt wird? Ich möchte zwischen iPhone
und iPod Touch
, wenn möglich, unterscheiden.
ios
objective-c
iphone
ipod-touch
rauben
quelle
quelle
Antworten:
Sie können die
UIDevice
Klasse folgendermaßen verwenden:quelle
UI_USER_INTERFACE_IDIOM()
ist sicher in Anwendungen zu verwenden , die nach wie vor iOS unterstützen <3.2: es ist ein Makro inUIDevice.h
bis zu Standard speziell geschriebenUIUserInterfaceIdiomPhone
Versionen auf solchen älteren iOS.Dies ist ein Update für
UIDeviceHardware.m
die obige Antwort .quelle
NSString
VergleichNSString
lautet.NSDictionary
Der Name für die Definition eines Vergleichs ohne Code-Abhängigkeiten lautet.plist
.Bitte nutzen Sie diese Klasse ( gist @ github )
UPDATE (14.01.11)
Natürlich ist dieser Code mittlerweile etwas veraltet, aber er kann sicherlich mit dem Code in diesem Thread aktualisiert werden, der
Brian Robbins
ähnlichen Code mit aktualisierten Modellen enthält. Vielen Dank für die Unterstützung in diesem Thread.quelle
Ich benutze dies in meiner App. Stand Dezember 2012.
quelle
#import <sys/sysctl.h>
Letztes Update - Oktober 2019: iPhone 11 , iPhone 11 Pro , iPhone 11 Pro Max , iPad (7. Generation) hinzugefügt
Vorheriges Update - März 2019: iPad Air 2019 (3. Generation), iPad mini 2019 (5. Generation), iPod Touch 2019 (7. Generation) hinzugefügt
Schnell
(Getestet auf Swift 5, Swift 4, Swift 3)
Die folgende Funktion gibt eine Zeichenfolge mit dem aktuellen Gerätenamen zurück.
Sie können es mit folgendem Code testen:
Ziel c
Ich habe dem Objective-C-Code auch neue Geräte hinzugefügt
Vergessen Sie nicht, sys / sysctl.h zu importieren
Sie können es mit folgendem Code testen:
quelle
iPhone7,2
ist die 6, aberiPhone8,1
ist die 6S? sie umgekehrt für die 6 und 6S?quelle
Aktualisierte Plattformzeichenfolgen für
iPad Air 2
undiPad mini 3
:quelle
Mehr brauchbar
Sie können Eigenschaften mit lesen
quelle
[[UIScreen mainScreen] scale]
2 ist oder nicht (für iOS 5+).Hier ist ein kleines Update mit neuen Modellen:
quelle
Ich weiß, dass bereits eine Antwort angekreuzt wurde, aber zum späteren Nachschlagen können Sie jederzeit die Bildschirmgröße des Geräts verwenden, um herauszufinden, wie das Gerät aussieht:
quelle
Fügen Sie einfach den iPhone 4S-Gerätecode zu diesem Thread hinzu ...
Das iPhone 4S gibt die Zeichenfolge @ "iPhone4,1" zurück.
quelle
Wie wäre es mit diesem Code, wenn eine neue Version veröffentlicht wurde, werden Sie sich mit dem zuletzt bekannten Gerät identifizieren
quelle
Wenn ich zu Arashs Code hinzufüge, ist es mir egal, welches Modell ich für meine App verwende. Ich möchte nur wissen, welche Art von Gerät ich verwenden kann, damit ich Folgendes testen kann:
quelle
Basierend auf den sehr guten Antworten oben habe ich mir Folgendes ausgedacht. Dies ist der Antwort von @ Rodrigo sehr ähnlich, spricht jedoch die Besorgnis von @ Oliver aus dem Kommentar zu dieser Antwort an. Dies bietet auch die Möglichkeit, die Modellzeichenfolge in die Ausgabezeichenfolge aufzunehmen.
quelle
Es gibt eine ziemlich ausgereifte Bibliothek (von mir) namens SDVersion . Sie können das Modell des Geräts, die Bildschirmgröße und viele andere Parameter überprüfen. Es unterstützt auch OSX.
Beispiel:
quelle
quelle
quelle
Ich ging noch einen Schritt weiter und konvertierte den großen "isEqualToString" -Block in eine Klassifizierung von Bitmasken für den Gerätetyp, die Generierung und das andere Qualifikationsmerkmal nach dem Komma (ich nenne es die Untergeneration). Es ist in eine Klasse mit einem Singleton-Aufruf SGPlatform eingeschlossen, der viele sich wiederholende Zeichenfolgenoperationen vermeidet. Code ist verfügbar unter https://github.com/danloughney/spookyGroup
In der Klasse können Sie Folgendes tun:
und
Die Klassifizierung der Geräte erfolgt nach der platformBits-Methode. Diese Methode sollte den Lesern dieses Threads sehr vertraut sein. Ich habe die Geräte nach Typ und Generation klassifiziert, da ich hauptsächlich an der Gesamtleistung interessiert bin. Die Quelle kann jedoch angepasst werden, um eine beliebige Klassifizierung, einen Retina-Bildschirm, Netzwerkfunktionen usw. bereitzustellen.
quelle
Das unten erwähnte Code-Snippet sollte helfen:
quelle
quelle
Dutchie432
undBrian Robbins
haben großartige Lösungen geliefert. Es fehlt jedoch noch ein Modell, das Verizon iPhone 4 . Hier ist die fehlende Zeile.quelle
Ich mag Erica Saduns Sachen. Sie enthält AppleTV-Geräte und andere, an die Sie vielleicht nicht denken.
https://github.com/erica/uidevice-extension/blob/master/UIDevice-Hardware.h
quelle
Die möglichen Werte von
sind
iPod touch
,iPhone
,iPhone Simulator
,iPad
,iPad Simulator
Wenn Sie wissen möchten, auf welcher Hardware usw.
iOS
ruiniertiPhone3
wirdiPhone4
, finden SieiPhone5
unten den Code dafürHINWEIS: Der folgende Code enthält möglicherweise nicht alle Zeichenfolgen des Geräts. Ich bin mit anderen Leuten zusammen, die denselben Code auf GitHub beibehalten. Bitte nehmen Sie den neuesten Code von dort
Ziel-C : GitHub / DeviceUtil
Swift : GitHub / DeviceGuru
quelle
Antworte in Swift 3,
quelle
Zum einfachen Vergleich mag ich immer Makro:
Es ist einfach und leicht zu bedienen.
quelle
Ich möchte hinzufügen, dass es eine private API gibt, um die Front- und Gehäusefarbe des Geräts abzurufen:
Ich habe darüber gebloggt und eine Beispiel-App bereitgestellt:
http://www.futuretap.com/blog/device-colors/
quelle
Ich kann versichern, dass der oben vorgeschlagene unter iOS 7 und höher funktioniert. Ich glaube, dass es auch in iOS 6 funktionieren wird. Aber da bin ich mir nicht sicher.
quelle
Sie können GBDeviceInfo auf GitHub überprüfen , das auch über CocoaPods verfügbar ist. Es bietet eine einfache API zum Erkennen verschiedener Eigenschaften mit Unterstützung aller neuesten Geräte:
[GBDeviceInfo deviceDetails].family == GBDeviceFamilyiPhone;
[GBDeviceInfo deviceDetails].model == GBDeviceModeliPhone6.
Weitere Informationen finden Sie unter Readme .
quelle
Um das iPhone 4S zu identifizieren, überprüfen Sie einfach Folgendes:
quelle
Ich habe eine Erweiterung erstellt, mit der Sie drei Identifikationsebenen haben können:
Es wird mit den letzten iOS-Geräten aktualisiert
UIDeviceDetector
quelle