Gibt es eine Möglichkeit oder einen Hack, um festzustellen, auf welcher Farbe (schwarz / weiß) iPhone, iPad oder iPod touch das iOS installiert ist?
Ich möchte bei Schwarz- oder Weißgeräten entsprechende UI-Skins laden.
ios
iphone
objective-c
uidevice
Totocaster
quelle
quelle
Antworten:
Es gibt eine private API, um sowohl die
DeviceColor
als auch die abzurufenDeviceEnclosureColor
.UIDevice *device = [UIDevice currentDevice]; SEL selector = NSSelectorFromString(@"deviceInfoForKey:"); if (![device respondsToSelector:selector]) { selector = NSSelectorFromString(@"_deviceInfoForKey:"); } if ([device respondsToSelector:selector]) { NSLog(@"DeviceColor: %@ DeviceEnclosureColor: %@", [device performSelector:selector withObject:@"DeviceColor"], [device performSelector:selector withObject:@"DeviceEnclosureColor"]); }
Ich habe darüber gebloggt und eine Beispiel-App bereitgestellt:
http://www.futuretap.com/blog/device-colors/
Warnung: Wie bereits erwähnt, handelt es sich um eine private API. Verwenden Sie dies nicht in App Store-Builds.
quelle
[NSObject -respondsToSelector:]
. Ihre aktuelle Logik funktioniert möglicherweise nicht richtig, wenn iOS 8 veröffentlicht wird.deviceInfoForKey:
unter iOS 8 verwenden. Ich würde nur beide Selektoren überprüfen und sehen, auf welche es reagiert.Die Antwort auf die Frage lautet NEIN (ab sofort) und ich persönlich denke nicht, dass es viel wert ist, denn was ist, wenn der Endbenutzer einen Skin oder ein zusätzliches Gehäuse für sein iPhone verwendet?
Darüber hinaus hat mir eine Untersuchung diese Informationen geliefert. Ich bin mir nicht sicher, ob sie WAHR sind oder ob sie Ihnen helfen werden.
Wenn
aabccdddeef
die Seriennummer des iPhone 4 ist, steht sieee
für die Farbe (A4 = schwarz). Ich hoffe, einige von Ihnen hier überprüfen diese Informationen mit Ihren, um festzustellen, ob dies wahr ist.quelle
[IUDevice deviceColor]
aktuelle SDK nichts enthält . Ich recherchiere selbst und halte Sie auf dem Laufenden.Nur meine 2 Cent wert - wenn jemand nach den Farben des iPhone 5c sucht, werden die folgenden Farben von der Apple-Website ausgewählt.
Hoffe es ist für jedermann von Nutzen :-)
Green R 179 G 243 B 142 HEX #B3F38E Blue R 123 G 195 B 252 HEX #7BC3FC Yellow R 255 G 243 B 141 HEX #FFF38D Red R 252 G 132 B 142 HEX #FF848E White R 239 G 239 B 239 HEX #EFEFEF
quelle
Laut Informationen, die im Internet verteilt sind, ist die Farbe des Geräts in der Seriennummer verschlüsselt. Der Blog von iFixit zeigt an, dass die dritt- und vorletzten Positionen die Informationen enthalten: Zeigt bei
xxxxxxxxCCx
einem iPhone 4A4
Schwarz an. Niemand scheint den Code für ein weißes iPhone 4 zu haben, was seltsam ist. Ein Forumbeitrag weist darauf hin, dass dies der Fall sein könnteDZ
. Jeder scheint hier nur die Informationen aller anderen zu papageien.Auf einer anderen Website, mydigitallife.com , finden Sie einen Artikel mit den Farbcodes für verschiedene ältere Modelle. In einigen Fällen müssen die drei Positionen zusammen gelesen werden, um die Farbe zu bestimmen. Laut dieser Website befinden sich alle iPhone 3Gs-Modelle
3N
in der Farbcode-Position.3NP
zeigt "Black 16GB 3Gs" und3NQ
"White 16GB 3Gs" an. Das ursprüngliche (2G) iPhone verwendet auch alle drei Positionen, um die Größe anzuzeigen (es gab keine Farboptionen).Hier auf SO gibt es bereits eine Reihe von Fragen, mit denen Sie die Seriennummer des Geräts ermitteln können.
quelle
Zu Debugging-Zwecken habe ich eine umfassendere Liste möglicher
deviceInfoForKey:
Schlüssel zusammengestellt.Interessante Schlüssel zu beachten (für diese Frage) sind
DeviceRGBColor
DeviceEnclosureRGBColor
. Die Werte scheinen eine Ganzzahl zu sein, die den RGB-Wert im Formular darstellt0x00rrggbb
.Hier sind als Referenz alle Schlüssel, die ich gefunden habe:
quelle
deviceInfoForKey:
ist privat. Dafür sind auch alle diese Schlüssel.Wie andere angemerkt haben, gibt es keinen offiziellen Weg, um diese Informationen zu erhalten. Apple klar weiß (Blick in iTunes , wenn Sie synchronisieren), so dass sie konnte es zur Verfügung stellen. Könnte es wert sein, ein Radar zu erheben .
quelle