2011-12-11 16 views

risposta

34

C'è un privato API per recuperare sia il DeviceColor e 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"]); 
} 

ho bloggato su questo e fornire un app campione:

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

Attenzione: Come già detto, questo è un privato API. Non utilizzare questo nei build di App Store.

+1

Bella scoperta! Un piccolo suggerimento: dovresti usare '[NSObject -respondsToSelector:]'. La tua logica attuale potrebbe funzionare in modo errato quando viene rilasciato iOS 8. –

+0

Questo userebbe ancora il vecchio 'deviceInfoForKey:' su iOS 8. Vorrei semplicemente controllare entrambi i selettori e vedere a quale rispondere. –

+1

@uchuugaka Non ho nascosto il fatto che è privato. Ma questo è l'unico modo per recuperarlo. Esistono tuttavia alcuni casi d'uso per le API private, ad esempio le applicazioni aziendali interne. Protesta con Apple (puoi duplicare http://openradar.appspot.com/15209345), invece di mandare in downvoting la mia risposta! –

20

La risposta alla domanda è NO (fin d'ora) e personalmente non credo che valga la pena molto, perché cosa succede se l'utente finale utilizza una pelle o un involucro aggiuntivo per il suo iPhone?

Suggerisco inizialmente di chiedere all'utente "Ehi, qual è il colore del tuo telefono?" e poi fare di conseguenza.


Inoltre, una ricerca mi ha fornito queste informazioni, io non sono sicuro se è TRUE o se sta per aiutarvi.

Il numero di serie è la chiave :)

Se aabccdddeef è il numero di serie di iPhone 4, ee rappresenta il colore, (A4 = nero). Spero che alcuni di voi qui controllino queste informazioni con le vostre per vedere se questo è vero.

+0

Ho un iPhone 4S nero e uno bianco ... La seconda e la terza cifra di entrambi sono "TF" ... (Numeri seriali: "C39GJ *** DTFC" e "C39GK *** DTF9"). Dobbiamo continuare a cercare. –

+1

Inoltre, non è possibile rilevare il numero di serie a livello di codice (almeno utilizzando le API pubblicate). Quindi l'approccio del numero di serie è DoA. –

+0

Grazie per le risposte, lo apprezzo. In "hack" intendevo qualcosa come il controllo del numero di serie o simile. Mi rendo conto che non esiste una cosa '[IUDevice deviceColor]' nell'SDK corrente. Sto facendo le mie ricerche e ti tengo aggiornato. – totocaster

0

No. Non c'è modo di rilevare il colore esterno di qualsiasi dispositivo.

6

Come altri hanno notato, no, non esiste un modo ufficiale per ottenere queste informazioni. Apple sa chiaramente (guarda in iTunes quando esegui la sincronizzazione), quindi è possibile che lo sia disponibile a. Potrebbe valere la pena di sollevare un Radar.

+0

@JoeBlow pls vedere il mio aggiornamento. – COD3BOY

8

In base alle informazioni sparse sul Web, il colore del dispositivo è codificato nel numero di serie. iFixit's blog indica che la terza e la penultima posizione contengono le informazioni: xxxxxxxxCCx Per un iPhone 4, A4 indica il nero. Nessuno sembra avere il codice per un iPhone 4 bianco, il che è strano. Uno forum posting indica che è DZ. Sembra che tutti stiano solo ripetendo a pappagallo le informazioni di tutti gli altri qui.

Un altro sito, mydigitallife.com, ha un articolo che elenca i codici colore per vari modelli precedenti. In alcuni casi, le tre posizioni devono essere lette insieme per determinare il colore. Secondo questo sito, tutti i modelli iPhone 3G hanno 3N nella posizione del codice colore; 3NP indica "Black 16GB 3Gs" e 3NQ indica "White 16GB 3Gs". L'originale (2G) iPhone usa anche tutte e tre le posizioni per indicare le dimensioni (non c'erano opzioni di colore).

Ci sono già un certo numero di domande qui su SO che ti aiuteranno a ottenere il numero di serie del dispositivo.

10

Solo i miei 2 centesimi vale la pena - se qualcuno sta cercando i colori di iPhone 5c, i colori qui sotto sono scelti dal sito Web di Apple.

spero che sia utile a qualcuno :-)

iPhone 5c Colori:

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 
5

Per il debugging ho compilato un elenco più completo di possibili chiavi deviceInfoForKey:.

Tasti interessanti da notare (per questa domanda) sono DeviceRGBColorDeviceEnclosureRGBColor. I valori sembrano essere un numero intero che rappresenta il valore RGB nel formato 0x00rrggbb.

Qui, per riferimento, sono tutte le chiavi che ho trovato:

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