2009-09-10 45 views
7

Tôi muốn xác định thiết bị mà ứng dụng của tôi được cài đặt. Điều đó có nghĩa, khi tôi cài đặt ứng dụng trên iphone, nó sẽ cho tôi biết thông tin thiết bị. Thông tin giống như, thiết bị là 2G, 3G hoặc 3GS.lập trình nhận dạng thiết bị iphone

Hiện tại tôi chỉ nhận được mẫu, tên, systemName, systemVersion của thiết bị.

Tôi muốn biết thiết bị là 2G, 3G hoặc 3GS.

hãy giúp tôi.

+1

Did của tôi câu trả lời đã giúp? – Oliver

Trả lời

8

Trong lịch sử quá khứ của lập trình Mac, điều này luôn được coi là câu hỏi sai.

Điều bạn thực sự cần biết là một phần thông tin cụ thể hơn. Đặt một câu hỏi hẹp hơn cho mỗi quyết định hành vi trong mã của bạn. Ví dụ, bạn có thể cần phải biết nếu thiết bị có GPS hay không. Một cách khác là bạn không nên quyết định cách sử dụng ngăn xếp OpenGL dựa trên thiết bị mô hình nào, mà đúng hơn là thông tin về khả năng/tiện ích OpenGL được cung cấp.

Thông tin bạn đang nhận bây giờ là từ UIDevice, một API được thiết kế kém đáng tiếc. Nó cung cấp cho bạn chính xác thông tin sai ở định dạng tồi tệ nhất có thể - chuỗi.

Erica Sadun có phần mở rộng cho UIDevice có thể hữu ích here. Nó chỉ là một wrapper cho sysctlbyname("hw.machine", ...). Thuộc tính này là khác nhau cho mỗi mô hình.

Nhưng một lần nữa, đây thường là câu hỏi sai.

+3

Đồng ý. Trừ khi bạn đang làm việc trên một ứng dụng mà chỉ tồn kho tất cả các iPhone khác nhau trong một hạm đội tập đoàn và bạn cần để có thể sắp xếp chúng, bạn có thể không cần biết cho dù đó là 3G hay 3G, nhiều như nó hỗ trợ tính năng bạn muốn truy cập. Sử dụng AvailibilityMacros để tìm hiểu xem chức năng cần thiết của bạn có được hỗ trợ trên thiết bị hay không. – mahboudz

5

Đây là những gì tôi đã sử dụng trong ứng dụng của tôi và nó hoạt động tuyệt vời

NSString *deviceType = [UIDevice currentDevice].model; 
NSLog(@"DEVICE TYPE %@", deviceType); 

struct utsname systemInfo; 
uname(&systemInfo); 

    - (NSString *) platformString{ 
NSString *platform = [NSString stringWithCString:systemInfo.machine 
            encoding:NSUTF8StringEncoding];  
NSLog(@"type ...%@", platform); 


if ([platform isEqualToString:@"iPhone1,1"]) return @"iPhone 1G"; 
if ([platform isEqualToString:@"iPhone1,2"]) return @"iPhone 3G"; 
if ([platform isEqualToString:@"iPhone2,1"]) return @"iPhone 3GS"; 
if ([platform isEqualToString:@"iPhone3,1"]) return @"iPhone 4"; 
if ([platform isEqualToString:@"iPod1,1"])  return @"iPod Touch 1G"; 
if ([platform isEqualToString:@"iPod2,1"])  return @"iPod Touch 2G"; 
if ([platform isEqualToString:@"iPod3,1"])  return @"iPod Touch 3G"; 
if ([platform isEqualToString:@"iPod4,1"])  return @"iPod Touch 4G"; 
if ([platform isEqualToString:@"iPad1,1"])  return @"iPad"; 
if ([platform isEqualToString:@"iPad2,1"])  return @"iPad 2 (WiFi)"; 
if ([platform isEqualToString:@"iPad2,2"])  return @"iPad 2 (GSM)"; 
if ([platform isEqualToString:@"iPad2,3"])  return @"iPad 2 (CDMA)"; 
if ([platform isEqualToString:@"i386"])   return @"Simulator"; 
return platform; 
} 

Hy vọng nó giúp

+1

Hey Bro! Điều này đã giúp tôi! Cảm ơn rất nhiều ! :) –

0

Tôi làm điều này, nó thậm chí còn cho bạn thấy số lượng mô hình:

struct utsname systemInfo; 
    uname(&systemInfo); 

    NSString *modelName = [NSString stringWithCString:systemInfo.machine 
              encoding:NSUTF8StringEncoding]; 

    NSString *machinename = [NSString stringWithCString:systemInfo.machine 
               encoding:NSUTF8StringEncoding]; 


    NSString *modelnumber = @"Not listed"; 

    //Simulator 
    if([modelName isEqualToString:@"i386"] || [modelName isEqualToString:@"x86_64"]) { 
     modelName = @"iPhone Simulator"; 
     modelnumber = @"XXXXX"; 

    } 

    //iPhone 
    else if([modelName isEqualToString:@"iPhone1,1"]) { 
     modelName = @"iPhone"; 
     modelnumber = @"A1203"; 
    } 
    else if([modelName isEqualToString:@"iPhone1,2"]) { 
     modelName = @"iPhone 3G"; 
     modelnumber = @"A1241/A1324"; 
    } 
    else if([modelName isEqualToString:@"iPhone2,1"]) { 
     modelName = @"iPhone 3GS"; 
     modelnumber = @"A1303/A1325"; 
    } 
    else if([modelName isEqualToString:@"iPhone3,1"]) { 
     modelName = @"iPhone 4 (GSM)"; 
     modelnumber = @"A1332"; 
    } 
    else if([modelName isEqualToString:@"iPhone3,2"]) { 
     modelName = @"iPhone 4 GSM Rev A"; 
     modelnumber = @"Not listed"; 
    } 
    else if([modelName isEqualToString:@"iPhone3,3"]) { 
     modelName = @"iPhone 4 (CDMA)"; 
     modelnumber = @"A1349"; 
    } 
    else if([modelName isEqualToString:@"iPhone4,1"]) { 
     modelName = @"iPhone 4S"; 
     modelnumber = @"A1387/A1431"; 
    } 
    else if([modelName isEqualToString:@"iPhone5,1"]) { 
     modelName = @"iPhone 5 (GSM)"; 
     modelnumber = @"A1428"; 
    } 
    else if([modelName isEqualToString:@"iPhone5,2"]) { 
     modelName = @"iPhone 5 (GSM+CDMA)"; 
     modelnumber = @"A1429/A1442"; 
    } 

    //iPod touch 
    else if([modelName isEqualToString:@"iPod1,1"]) { 
     modelName = @"iPod touch 1G"; 
     modelnumber = @"A1213"; 
    } 
    else if([modelName isEqualToString:@"iPod2,1"]) { 
     modelName = @"iPod touch 2G"; 
     modelnumber = @"A1288"; 
    } 
    else if([modelName isEqualToString:@"iPod3,1"]) { 
     modelName = @"iPod touch 3G"; 
     modelnumber = @"A1318"; 
    } 
    else if([modelName isEqualToString:@"iPod4,1"]) { 
     modelName = @"iPod touch 4G"; 
     modelnumber = @"A1367"; 
    } 
    else if([modelName isEqualToString:@"iPod5,1"]) { 
     modelName = @"iPod touch 5G"; 
     modelnumber = @"A1421"; 
    } 

    //iPad 
    else if([modelName isEqualToString:@"iPad1,1"]) { 
     modelName = @"iPad 1G"; 
     modelnumber = @"A1219/A1337"; 
    } 
    else if([modelName isEqualToString:@"iPad2,1"]) { 
     modelName = @"iPad 2 (WiFi)"; 
     modelnumber = @"A1395"; 
    } 
    else if([modelName isEqualToString:@"iPad2,2"]) { 
     modelName = @"iPad 2 (GSM)"; 
     modelnumber = @"A1396"; 
    } 
    else if([modelName isEqualToString:@"iPad2,3"]) { 
     modelName = @"iPad 2 (CDMA)"; 
     modelnumber = @"A1397"; 
    } 
    else if([modelName isEqualToString:@"iPad2,4"]) { 
     modelName = @"iPad 2 (WiFi + Rev A)"; 
     modelnumber = @"A1395"; 
    } 
    else if([modelName isEqualToString:@"iPad3,1"]) { 
     modelName = @"iPad 3 (WiFi)"; 
     modelnumber = @"A1416"; 
    } 
    else if([modelName isEqualToString:@"iPad3,2"]) { 
     modelName = @"iPad 3 (GSM+CDMA)"; 
     modelnumber = @"A1403"; 
    } 
    else if([modelName isEqualToString:@"iPad3,3"]) { 
     modelName = @"iPad 3 (GSM)"; 
     modelnumber = @"A1430"; 
    } 
    else if([modelName isEqualToString:@"iPad3,4"]) { 
     modelName = @"iPad 4 (WiFi)"; 
     modelnumber = @"A1458"; 
    } 
    else if([modelName isEqualToString:@"iPad3,5"]) { 
     modelName = @"iPad 4 (GSM)"; 
     modelnumber = @"A1459"; 
    } 
    else if([modelName isEqualToString:@"iPad3,6"]) { 
     modelName = @"iPad 4 (GSM+CDMA)"; 
     modelnumber = @"A1460"; 
    } 

    //iPad mini 
    else if([modelName isEqualToString:@"iPad2,5"]) { 
     modelName = @"iPad mini (WiFi)"; 
     modelnumber = @"A1432"; 
    } 
    else if([modelName isEqualToString:@"iPad2,6"]) { 
     modelName = @"iPad mini (GSM)"; 
     modelnumber = @"A1454"; 
    } 
    else if([modelName isEqualToString:@"iPad2,7"]) { 
     modelName = @"iPad mini (GSM+CDMA)"; 
     modelnumber = @"A1455"; 
    } 

    //Apple TV, just for funn:) 
    else if([modelName isEqualToString:@"AppleTV2,1"]) { 
     modelName = @"Apple TV 2G"; 
     modelnumber = @"A1378"; 
    } 
    else if([modelName isEqualToString:@"AppleTV3,1"]) { 
     modelName = @"Apple TV 3G"; 
     modelnumber = @"A1427"; 
    } 
    else if([modelName isEqualToString:@"AppleTV3,2"]) { 
     modelName = @"Apple TV 3G (Rev A)"; 
     modelnumber = @"A1469"; 
    } 

    NSLog(@"Device model: %@/ %@ /%@",modelName,machinename,modelnumber); 
Các vấn đề liên quan