2011-12-11 40 views
67

Có cách nào hay hack để phát hiện trên iPhone (iPad/iPhone) màu đen, iPad hoặc iPod touch nào được cài đặt trên iOS?Phát hiện màu của iPhone/iPad/iPod touch?

Tôi muốn tải giao diện người dùng tương ứng trong trường hợp thiết bị màu đen hoặc trắng.

+13

ý tưởng tuyệt vời !!!! – Fattie

Trả lời

34

Có một API riêng để lấy cả 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"]); 
} 

tôi đã viết blog về vấn đề này và cung cấp một ứng dụng mẫu:

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

Cảnh báo: Như đã đề cập, đây là một API tư nhân. Không sử dụng tính năng này trong xây dựng App Store.

+1

Rất đẹp! Một gợi ý nhỏ: Bạn nên sử dụng '[NSObject -respondsToSelector:]'. Logic hiện tại của bạn có thể hoạt động không chính xác khi iOS 8 được phát hành. –

+0

Điều này vẫn sẽ sử dụng 'deviceInfoForKey cũ hơn 'trên iOS 8. Tôi sẽ chỉ kiểm tra cả hai bộ chọn và xem cái nào nó phản hồi. –

+1

@uchuugaka Tôi không giấu sự thật là riêng tư. Nhưng đó là cách duy nhất để lấy lại nó. Tuy nhiên, có một số trường hợp sử dụng cho các API riêng tư - ví dụ như các ứng dụng doanh nghiệp trong nhà. Khiếu nại với Apple (bạn có thể lừa http://openradar.appspot.com/15209345), thay vì downvoting câu trả lời của tôi! –

20

Câu trả lời cho câu hỏi là NO (tính đến nay) và cá nhân Tôi không nghĩ rằng nó có giá trị hơn nhiều, bởi vì những gì nếu người dùng cuối sử dụng một làn da hoặc vỏ bổ sung cho iPhone của mình?

Tôi muốn đề xuất ban đầu hỏi người dùng "Này, màu của điện thoại của bạn là gì?" và sau đó làm tương ứng.


Thêm vào đó, một nghiên cứu cung cấp cho tôi thông tin này, tôi không chắc chắn nếu nó TRUE hoặc nếu đang xảy ra để giúp bạn.

Số sê-ri là chìa khóa :)

Nếu aabccdddeef là số serial của iPhone 4, ee đại diện cho màu, (A4 = đen). Tôi hy vọng một số bạn ở đây kiểm tra thông tin này với bạn để xem điều này có đúng không.

+0

Tôi có một iPhone 4S màu đen và một màu trắng ... Các chữ số cuối cùng thứ hai và thứ ba của cả hai đều là "TF" ... (Số sê-ri: "C39GJ *** DTFC" và "C39GK *** DTF9"). Chúng ta cần phải tiếp tục tìm kiếm. –

+1

Hơn nữa, người ta không thể phát hiện số sê-ri theo chương trình (ít nhất là bằng cách sử dụng API đã xuất bản). Vì vậy, cách tiếp cận số sê-ri là DoA. –

+0

Cảm ơn bạn đã trả lời, tôi đánh giá cao nó. Trong "hack" tôi có nghĩa là một cái gì đó giống như kiểm tra số serial hoặc tương tự. Tôi nhận ra rằng không có điều '[IUDevice deviceColor]' trong SDK hiện tại. Tôi đang làm nghiên cứu của riêng tôi và giữ cho bạn được đăng. – totocaster

0

Không. Không có cách nào để phát hiện màu bên ngoài của bất kỳ thiết bị nào.

6

Như những người khác đã lưu ý, không, không có cách chính thức nào để nhận thông tin này. Apple biết rõ ràng (hãy xem trong iTunes khi bạn đồng bộ hóa), do đó, họ có thể làm cho nó khả dụng. Có thể đáng để nâng cao một số Radar.

+0

@JoeBlow vui lòng xem cập nhật của tôi. – COD3BOY

8

Theo thông tin được rải rác trên web, màu của thiết bị được mã hóa trong số sê-ri. iFixit's blog cho biết vị trí thứ ba và thứ hai-đến-cuối giữ thông tin: xxxxxxxxCCx Đối với iPhone 4, A4 cho biết màu đen. Không ai dường như có mã cho một chiếc iPhone 4 màu trắng, điều này thật kỳ lạ. Một forum posting cho biết rằng có thểDZ. Mọi người dường như chỉ là vẹt thông tin của mọi người khác ở đây.

Một trang web khác, mydigitallife.com, có một bài viết liệt kê mã màu cho các kiểu cũ hơn. Trong một số trường hợp, ba vị trí phải được đọc cùng nhau để xác định màu sắc. Theo trang web này, tất cả các mẫu iPhone 3Gs có 3N ở vị trí mã màu; 3NP cho biết "Black 16GB 3Gs" và 3NQ cho biết "White 16GB 3Gs". IPhone (2G) ban đầu cũng sử dụng cả ba vị trí để biểu thị kích thước (không có tùy chọn màu sắc).

Đã có một số câu hỏi ở đây trên SO sẽ giúp bạn lấy số sê-ri của thiết bị.

10

Chỉ cần 2 xu giá trị của tôi - nếu có ai đang tìm kiếm màu sắc của iPhone 5c, các màu bên dưới được chọn từ trang web của Apple.

Hy vọng nó là sử dụng cho bất cứ ai :-)

Màu sắc 5c iPhone:

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

Vì mục đích gỡ lỗi, tôi đã biên soạn một danh sách toàn diện hơn về các khóa deviceInfoForKey: có thể có.

Các phím thú vị cần lưu ý (cho câu hỏi này) là DeviceRGBColorDeviceEnclosureRGBColor. Các giá trị xuất hiện là một số nguyên đại diện cho giá trị RGB ở dạng 0x00rrggbb.

Ở đây, để tham khảo, là tất cả các phím tôi thấy:

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   
Các vấn đề liên quan