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.
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.
Antworten:
Es gibt eine private API, um sowohl die DeviceColor
als auch die abzurufen DeviceEnclosureColor
.
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.
[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?
Ich würde vorschlagen, den Benutzer zunächst zu fragen: "Hey, welche Farbe hat Ihr Telefon?" und dann entsprechend tun.
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.
Die Seriennummer ist der Schlüssel :)
Wenn aabccdddeef
die Seriennummer des iPhone 4 ist, steht sie ee
für die Farbe (A4 = schwarz). Ich hoffe, einige von Ihnen hier überprüfen diese Informationen mit Ihren, um festzustellen, ob dies wahr ist.
[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 :-)
iPhone 5c Farben:
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
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 beixxxxxxxxCCx
einem iPhone 4 A4
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" und 3NQ
"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.
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 darstellt 0x00rrggbb
.
Hier sind als Referenz alle Schlüssel, die ich gefunden habe:
ActiveWirelessTechnology
AirplaneMode
assistant
BasebandCertId
BasebandChipId
BasebandPostponementStatus
BasebandStatus
BatteryCurrentCapacity
BatteryIsCharging
BluetoothAddress
BoardId
BootNonce
BuildVersion
CertificateProductionStatus
CertificateSecurityMode
ChipID
CompassCalibrationDictionary
CPUArchitecture
DeviceClass
DeviceColor
DeviceEnclosureColor
DeviceEnclosureRGBColor
DeviceName
DeviceRGBColor
DeviceSupportsFaceTime
DeviceVariant
DeviceVariantGuess
DiagData
dictation
DiskUsage
EffectiveProductionStatus
EffectiveProductionStatusAp
EffectiveProductionStatusSEP
EffectiveSecurityMode
EffectiveSecurityModeAp
EffectiveSecurityModeSEP
FirmwarePreflightInfo
FirmwareVersion
FrontFacingCameraHFRCapability
HardwarePlatform
HasSEP
HWModelStr
Image4Supported
InternalBuild
InverseDeviceID
ipad
MixAndMatchPrevention
MLBSerialNumber
MobileSubscriberCountryCode
MobileSubscriberNetworkCode
ModelNumber
PartitionType
PasswordProtected
ProductName
ProductType
ProductVersion
ProximitySensorCalibrationDictionary
RearFacingCameraHFRCapability
RegionCode
RegionInfo
SDIOManufacturerTuple
SDIOProductInfo
SerialNumber
SIMTrayStatus
SoftwareBehavior
SoftwareBundleVersion
SupportedDeviceFamilies
SupportedKeyboards
telephony
UniqueChipID
UniqueDeviceID
UserAssignedDeviceName
wifi
WifiVendor
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 .