iOS get device model, device type, and other information

Source: Internet
Author: User

Excerpt from: http://www.mamicode.com/info-detail-1165460.html

Device identification

With regard to equipment identification, there have been many heroes in history, such as Udid, MAC address, Openudid, and so on, but they all continued to fall under the apple door. Apple currently offers 2 ways for apps to get the device ID: IDFA and IDFV

IDFA: Full name advertisingIdentifier , official explanation is advertising logo, applicable to advertising promotion, this advice is not easy to use, if used, the app must provide advertising function, otherwise it is likely to be rejected in AppStore audit. And IDFA can be closed by the user (set-"privacy"), once it is closed, it is not available.

IDFV: The full name Identifierforvendor, in the literal sense, the same vendor should have the same identifier. Vendor is defined by the first two of the app's Bundleid, such as the 2 Bundleid apps for Com.abc.app1 and Com.abc.app2, and they belong to the same vendor. IDFV is sure to get it. One thing to note is that when the user unloads all the apps under a vendor, the IDFV is reset, and when it's installed again, the IDFV gets to be different. So the plan I'm using is: Idfv+keychain. Of course, if the user chooses to restore the factory settings, then there will be a different, this situation can not be processed.

+ (NSString *) identifier{    nsstring *key = @ "Com.app.keychain.uuid";    Keychainitemwrapper *keychainitem = [[Keychainitemwrapper alloc] Initwithidentifier:key Accessgroup:nil];        NSString *struuid = [Keychainitem objectforkey: (__bridge ID) ksecvaluedata];        if (struuid.length <= 0) {        struuid = [[[Uidevice Currentdevice] Identifierforvendor] uuidstring];                [Keychainitem setobject:@ "UUID" Forkey: (__bridge ID) ksecattraccount];        [Keychainitem setobject:struuid Forkey: (__bridge ID) ksecvaluedata];    }        return struuid;}
Phone aliases
+ (NSString *) phonename{    return [[Uidevice Currentdevice] name];}
Mobile phone system version
/** *  Mobile System version * *  @return e.g. 8.0 */+ (NSString *) phoneversion{    return [[Uidevice Currentdevice] Systemversion];}
Phone model

This method only obtains the iphone, the ipad this kind of information, cannot obtain to is the iphone 4, iPhpone5 this specific model.

/** *  Phone model * *  @return e.g. IPhone */+ (NSString *) phonemodel{    return [[Uidevice Currentdevice] model];}
Device version

This code can be obtained to the specific device version (has been updated to the iphone 6s, iphone 6s Plus), the disadvantage is: the use of hard-coded. The specific correspondence can be consulted: https://www.theiphonewiki.com/wiki/Models

This method can pass AppStore audit, rest assured use it.

/** * Device Version * * @return e.g. IPhone 5S */+ (nsstring*) deviceversion{//Requires #import "sys/utsname.h" struct Utsname sy    Steminfo;    Uname (&systeminfo);        NSString *devicestring = [NSString stringWithCString:systemInfo.machine encoding:nsutf8stringencoding];    iphone if ([devicestring isequaltostring:@ "iphone1,1"]) return @ "iphone 1G";    if ([devicestring isequaltostring:@ "iphone1,2"]) return @ "IPhone 3G";    if ([devicestring isequaltostring:@ "iphone2,1"]) return @ "IPhone 3GS";    if ([devicestring isequaltostring:@ "iphone3,1"]) return @ "IPhone 4";    if ([devicestring isequaltostring:@ "iphone3,2"]) return @ "Verizon IPhone 4";    if ([devicestring isequaltostring:@ "iphone4,1"]) return @ "IPhone 4S";    if ([devicestring isequaltostring:@ "iphone5,1"]) return @ "IPhone 5";    if ([devicestring isequaltostring:@ "iphone5,2"]) return @ "IPhone 5";    if ([devicestring isequaltostring:@ "iphone5,3"]) return @ "IPhone 5C"; if ([Devicestring Isequaltostring:@ "iphone5,4") return @ "IPhone 5C";    if ([devicestring isequaltostring:@ "iphone6,1"]) return @ "IPhone 5S";    if ([devicestring isequaltostring:@ "iphone6,2"]) return @ "IPhone 5S";    if ([devicestring isequaltostring:@ "iphone7,1"]) return @ "IPhone 6 Plus";    if ([devicestring isequaltostring:@ "iphone7,2"]) return @ "IPhone 6";    if ([devicestring isequaltostring:@ "iphone8,1"]) return @ "IPhone 6s";         if ([devicestring isequaltostring:@ "iphone8,2"]) return @ "IPhone 6s Plus";  Ipod

if ([devicestring isequaltostring:@ "ipod1,1"]) return @ "IPod Touch 1G";
if ([devicestring isequaltostring:@ "ipod2,1"]) return @ "IPod Touch 2G";
if ([devicestring isequaltostring:@ "ipod3,1"]) return @ "IPod Touch 3G";
if ([devicestring isequaltostring:@ "ipod4,1"]) return @ "IPod Touch 4G";
if ([devicestring isequaltostring:@ "ipod5,1"]) return @ "IPod Touch 5G"; return @ "IPod Touch 5G";

  ipad if ([devicestring isequaltostring:@ "ipad1,1"]) return @ "ipad";    if ([devicestring isequaltostring:@ "ipad2,1"]) return @ "IPad 2 (WiFi)";    if ([devicestring isequaltostring:@ "ipad2,2"]) return @ "IPad 2 (GSM)";    if ([devicestring isequaltostring:@ "ipad2,3"]) return @ "IPad 2 (CDMA)";    if ([devicestring isequaltostring:@ "ipad2,4"]) return @ "IPad 2 (32nm)";    if ([devicestring isequaltostring:@ "ipad2,5"]) return @ "IPad Mini (WiFi)";    if ([devicestring isequaltostring:@ "ipad2,6"]) return @ "IPad Mini (GSM)";        if ([devicestring isequaltostring:@ "ipad2,7"]) return @ "IPad Mini (CDMA)";    if ([devicestring isequaltostring:@ "ipad3,1"]) return @ "IPad 3 (WiFi)";    if ([devicestring isequaltostring:@ "ipad3,2"]) return @ "IPad 3 (CDMA)";    if ([devicestring isequaltostring:@ "ipad3,3"]) return @ "IPad 3 (4G)";    if ([devicestring isequaltostring:@ "ipad3,4"]) return @ "IPad 4 (WiFi)"; if ([Devicestring Isequaltostring:@ "ipad3,5"]) return @ "IPad 4 (4G)";        if ([devicestring isequaltostring:@ "ipad3,6"]) return @ "IPad 4 (CDMA)";    if ([devicestring isequaltostring:@ "ipad4,1"]) return @ "IPad Air";    if ([devicestring isequaltostring:@ "ipad4,2"]) return @ "IPad Air";    if ([devicestring isequaltostring:@ "ipad4,3"]) return @ "IPad Air";    if ([devicestring isequaltostring:@ "ipad5,3"]) return @ "IPad Air 2";    if ([devicestring isequaltostring:@ "ipad5,4"]) return @ "IPad Air 2";    if ([devicestring isequaltostring:@ "i386"]) return @ "Simulator";        if ([devicestring isequaltostring:@ "x86_64"]) return @ "Simulator"; if ([devicestring isequaltostring:@ "ipad4,4"]| | [Devicestring isequaltostring:@ "ipad4,5"]@ "ipad4,5"]| | [Devicestring isequaltostring:@ "ipad4,6"]) return @ "IPad mini 2";
if ([devicestring isequaltostring:@ "ipad4,7"]| | [Devicestring isequaltostring:@ "ipad4,8"]| | [Devicestring isequaltostring:@ "ipad4,9"]) return @ "IPad Mini 3";
return devicestring;
}
@ "ipad4,5"] | | [Devicestring isequaltostring:@ "ipad4,6"]) return @ "IPad mini 2"; if ([devicestring isequaltostring:@ "ipad4,7"] | | [Devicestring isequaltostring:@ "ipad4,8"] | | [Devicestring isequaltostring:@ "ipad4,9"]) return @ "IPad Mini 3"; return Devicestrin;}

iOS get device model, device type, and other information

Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.