web-dev-qa-db-fra.com

Détecter la couleur de l'iPhone / iPad / iPod touch?

Existe-t-il un moyen ou un hack pour détecter sur quelle couleur (noir/blanc) iPhone, iPad ou iPod touch l'iOS est installé?

Je souhaite charger les skins d'interface utilisateur correspondants en cas d'appareils noirs ou blancs.

72
totocaster

Il existe une API privée pour récupérer à la fois le DeviceColor et le 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"]);
}

J'ai blogué à ce sujet et je fournis un exemple d'application:

http://www.futuretap.com/blog/device-colors/

Avertissement: Comme mentionné, il s'agit d'une API privée. Ne l'utilisez pas dans les versions de l'App Store.

38
Ortwin Gentz

La réponse à la question est NON (à partir de maintenant) et personnellement I ne pense pas que cela vaille beaucoup, car que se passe-t-il si l'utilisateur final utilise un skin ou un boîtier supplémentaire pour son iPhone?

Je suggère d'abord de demander à l'utilisateur "Hé, quelle est la couleur de votre téléphone?" puis faites en conséquence.


De plus, une recherche m'a fourni ces informations, je ne sais pas si c'est VRAI ou si cela va vous aider.

Le numéro de série est la clé :)

Si aabccdddeef est le numéro de série de l'iPhone 4, ee représente la couleur, (A4 = noir). J'espère que certains d'entre vous vérifieront ces informations avec les vôtres pour voir si cela est vrai.

20
COD3BOY

Juste ma valeur de 2 cents - si quelqu'un recherche les couleurs de l'iPhone 5c, les couleurs ci-dessous sont choisies sur le site Web Apple.

J'espère que cela sera utile à tous :-)

couleurs de l'iPhone 5c:

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
11
jwknz

Selon les informations diffusées sur le Web, la couleur de l'appareil est codée dans le numéro de série. le blog d'iFixit indique que les troisième et avant-dernière positions contiennent les informations: xxxxxxxxCCx Pour un iPhone 4, A4 indique le noir. Personne ne semble avoir le code d'un iPhone 4 blanc, ce qui est étrange. Un publication sur le forum indique qu'il pourrait être DZ. Tout le monde semble juste perroqueter les informations de tout le monde ici.

Un autre site, mydigitallife.com , a un article répertoriant les codes de couleur pour divers modèles plus anciens. Dans certains cas, les trois positions doivent être lues ensemble pour déterminer la couleur. Selon ce site, tous les modèles d'iPhone 3Gs ont 3N à la position du code couleur; 3NP indique "Black 16GB 3Gs" et 3NQ indique "White 16GB 3Gs". L'iPhone d'origine (2G) utilise également les trois positions pour indiquer la taille (il n'y avait pas d'options de couleur).

Il y a déjà un certain nombre de questions ici sur SO qui vous aideront à obtenir le numéro de série de l'appareil.

8
Josh Caswell

À des fins de débogage, j'ai compilé une liste plus complète des possibles deviceInfoForKey: clés.

Les clés intéressantes à noter (pour cette question) sont DeviceRGBColorDeviceEnclosureRGBColor. Les valeurs semblent être un entier qui représente la valeur RVB sous la forme 0x00rrggbb.

Voici, pour référence, toutes les clés que j'ai trouvées:

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        
6
jjrscott

Comme d'autres l'ont fait remarquer, non, il n'existe aucun moyen officiel d'obtenir ces informations. Apple sait clairement (regardez dans iTunes lorsque vous synchronisez), afin qu'ils puissent le rendre disponible. Cela pourrait valoir la peine d'être augmenté un Radar .

6
Stephen Darlington