2011-12-11 101 views

回答

34

有一個私有API來獲取兩個DeviceColorDeviceEnclosureColor

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"]); 
} 

我的博客上講述這一點,並提供了一個示例應用程序:

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

警告:如前所述,這是一個私人的API。不要在App Store構建中使用它。

+1

很好找!一個小建議:你應該使用'[NSObject -respondsToSelector:]'。 iOS 8發佈時,您當前的邏輯可能會無法正常工作。 –

+0

這仍然會在iOS 8上使用舊的'deviceInfoForKey:'。我只需檢查兩個選擇器並查看它響應哪一個。 –

+1

@uchuugaka我沒有隱瞞事實是私密的。但這是檢索它的唯一方法。儘管如此,私有API仍然有一些用例 - 例如內部企業應用程序。抱怨蘋果(你可以用http://openradar.appspot.com/15209345),而不是降低我的答案! –

20

的問題的答案是NO (截至目前)和親自我不認爲這是值得很多,因爲如果最終用戶使用的皮膚或他的iPhone附加套是什麼?

我建議最初詢問用戶「嘿,你的手機的顏色是什麼?」然後做相應的處理。


此外,研究爲我提供了這個信息,我不知道這是否是TRUE或是否會幫助你。

序列號是關鍵:)

aabccdddeef如果是iPhone 4的序列號,ee代表顏色,(A4 =黑)。我希望你們中的一些人與你們一起檢查這些信息,看看是否屬實。

+0

我有一個黑色的iPhone 4S和一個白色的...他們兩個的第二個和第三個數字是「TF」...(序列號:「C39GJ *** DTFC」和「C39GK *** DTF9」 )。我們需要繼續尋找。 –

+1

此外,無法以編程方式檢測序列號(至少通過使用發佈的API)。所以序列號方法是DoA。 –

+0

感謝您的回覆,我很感激。在「黑客」中,我的意思是像序列號檢查或類似的東西。我意識到當前SDK中沒有'[IUDevice deviceColor]'的東西。我正在做我自己的研究,並保持你的發佈。 – totocaster

0

不可以。沒有辦法檢測任何設備的外部顏色。

6

正如其他人所指出的,不,沒有官方的方式獲取這些信息。蘋果清楚地知道(當你同步時看iTunes),所以他們可以使它可用。值得提出一個Radar

+0

@JoeBlow請參閱我的更新。 – COD3BOY

8

根據撒在網上的信息,設備的顏色編碼爲序列號。 iFixit's blog表示第三個和倒數第二個位置包含以下信息:xxxxxxxxCCx對於iPhone 4,A4表示黑色。沒有人似乎有白色iPhone 4的代碼,這很奇怪。一個forum posting表示它可能DZ。每個人似乎都在這裏喋喋不休地提供其他人的信息。

另一個網站mydigitallife.com的文章列出了各種舊型號的顏色代碼。在某些情況下,三個位置必須一起閱讀以確定顏色。根據此網站,全部 iPhone 3Gs機型在色碼位置有3N; 3NP表示「黑色16GB 3G」,3NQ表示「白色16GB 3G」。原始(2G)iPhone也使用全部三個位置來指示大小(沒有顏色選項)。

這裏有很多關於SO的問題可以幫助您獲得設備的序列號。

10

只是我的2美分的價值 - 如果有人正在尋找iPhone 5c顏色,下面的顏色是從蘋果網站挑選的。

希望它是利用對任何人:-)

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 
5

爲了便於調試,我編制了一個更全面的可能的deviceInfoForKey:密鑰列表。

有趣的鑰匙要注意(對於這個問題)是DeviceRGBColorDeviceEnclosureRGBColor。這些值看起來是一個表示0x00rrggbb形式的RGB值的整數。

這裏,僅供參考,都是我找到的鑰匙:

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