zoukankan      html  css  js  c++  java
  • iOS获取各种数据方法整理以及IDFA与IDFV使用环境

    APP版本号:NSString *AppVersion  =  [[NSBundle mainBundle] objectForInfoDictionaryKey:@"CFBundleShortVersionString"];

    手机系统版本号:NSString *IPhoneVersion  =  [[UIDevice currentDevice] systemVersion]];

    系统名称:NSString *systemName = [UIDevice currentDevice].systemName;

    当前国家:NSString *currentCountry =  [[NSLocale currentLocale] objectForKey:NSLocaleCountryCode];

    设备型号:NSString *deviceName = [self getDeviceName];(首先声明#import"sys/utsname.h")

    手机用户名称:NSString *iPhoneName = [UIDevice currentDevice].name;

    设备上次重启的时间:NSTimeInterval time = [[NSProcessInfo processInfo] systemUptime];

       NSDate *lastRestartDate = [[NSDate alloc] initWithTimeIntervalSinceNow:(0 - time)];
     

    // 获取设备型号然后手动转化为对应名称

    - (NSString *)getDeviceName

    {   // 需要#import "sys/utsname.h"

        //#warning 题主呕心沥血总结!!最全面!亲测!全网独此一份!!

        struct utsname systemInfo;

        uname(&systemInfo);

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

        if ([deviceString isEqualToString:@"iPhone3,1"])    return @"iPhone 4";

        if ([deviceString isEqualToString:@"iPhone3,2"])    return @"iPhone 4";

        if ([deviceString isEqualToString:@"iPhone3,3"])    return @"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 (GSM+CDMA)";

        if ([deviceString isEqualToString:@"iPhone5,3"])    return @"iPhone 5c (GSM)";

        if ([deviceString isEqualToString:@"iPhone5,4"])    return @"iPhone 5c (GSM+CDMA)";

        if ([deviceString isEqualToString:@"iPhone6,1"])    return @"iPhone 5s (GSM)";

        if ([deviceString isEqualToString:@"iPhone6,2"])    return @"iPhone 5s (GSM+CDMA)";

        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";

        if ([deviceString isEqualToString:@"iPhone8,4"])    return @"iPhone SE";

        // 日行两款手机型号均为日本独占,可能使用索尼FeliCa支付方案而不是苹果支付

        if ([deviceString isEqualToString:@"iPhone9,1"])    return @"国行、日版、港行iPhone 7";

        if ([deviceString isEqualToString:@"iPhone9,2"])    return @"港行、国行iPhone 7 Plus";

        if ([deviceString isEqualToString:@"iPhone9,3"])    return @"美版、台版iPhone 7";

        if ([deviceString isEqualToString:@"iPhone9,4"])    return @"美版、台版iPhone 7 Plus";

        if ([deviceString isEqualToString:@"iPhone10,1"])   return @"国行(A1863)、日行(A1906)iPhone 8";

        if ([deviceString isEqualToString:@"iPhone10,4"])   return @"美版(Global/A1905)iPhone 8";

        if ([deviceString isEqualToString:@"iPhone10,2"])   return @"国行(A1864)、日行(A1898)iPhone 8 Plus";

        if ([deviceString isEqualToString:@"iPhone10,5"])   return @"美版(Global/A1897)iPhone 8 Plus";

        if ([deviceString isEqualToString:@"iPhone10,3"])   return @"国行(A1865)、日行(A1902)iPhone X";

        if ([deviceString isEqualToString:@"iPhone10,6"])   return @"美版(Global/A1901)iPhone X";

        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 (5 Gen)";

        if ([deviceString isEqualToString:@"iPad1,1"])      return @"iPad";

        if ([deviceString isEqualToString:@"iPad1,2"])      return @"iPad 3G";

        if ([deviceString isEqualToString:@"iPad2,1"])      return @"iPad 2 (WiFi)";

        if ([deviceString isEqualToString:@"iPad2,2"])      return @"iPad 2";

        if ([deviceString isEqualToString:@"iPad2,3"])      return @"iPad 2 (CDMA)";

        if ([deviceString isEqualToString:@"iPad2,4"])      return @"iPad 2";

        if ([deviceString isEqualToString:@"iPad2,5"])      return @"iPad Mini (WiFi)";

        if ([deviceString isEqualToString:@"iPad2,6"])      return @"iPad Mini";

        if ([deviceString isEqualToString:@"iPad2,7"])      return @"iPad Mini (GSM+CDMA)";

        if ([deviceString isEqualToString:@"iPad3,1"])      return @"iPad 3 (WiFi)";

        if ([deviceString isEqualToString:@"iPad3,2"])      return @"iPad 3 (GSM+CDMA)";

        if ([deviceString isEqualToString:@"iPad3,3"])      return @"iPad 3";

        if ([deviceString isEqualToString:@"iPad3,4"])      return @"iPad 4 (WiFi)";

        if ([deviceString isEqualToString:@"iPad3,5"])      return @"iPad 4";

        if ([deviceString isEqualToString:@"iPad3,6"])      return @"iPad 4 (GSM+CDMA)";

        if ([deviceString isEqualToString:@"iPad4,1"])      return @"iPad Air (WiFi)";

        if ([deviceString isEqualToString:@"iPad4,2"])      return @"iPad Air (Cellular)";

        if ([deviceString isEqualToString:@"iPad4,4"])      return @"iPad Mini 2 (WiFi)";

        if ([deviceString isEqualToString:@"iPad4,5"])      return @"iPad Mini 2 (Cellular)";

        if ([deviceString isEqualToString:@"iPad4,6"])      return @"iPad Mini 2";

        if ([deviceString isEqualToString:@"iPad4,7"])      return @"iPad Mini 3";

        if ([deviceString isEqualToString:@"iPad4,8"])      return @"iPad Mini 3";

        if ([deviceString isEqualToString:@"iPad4,9"])      return @"iPad Mini 3";

        if ([deviceString isEqualToString:@"iPad5,1"])      return @"iPad Mini 4 (WiFi)";

        if ([deviceString isEqualToString:@"iPad5,2"])      return @"iPad Mini 4 (LTE)";

        if ([deviceString isEqualToString:@"iPad5,3"])      return @"iPad Air 2";

        if ([deviceString isEqualToString:@"iPad5,4"])      return @"iPad Air 2";

        if ([deviceString isEqualToString:@"iPad6,3"])      return @"iPad Pro 9.7";

        if ([deviceString isEqualToString:@"iPad6,4"])      return @"iPad Pro 9.7";

        if ([deviceString isEqualToString:@"iPad6,7"])      return @"iPad Pro 12.9";

        if ([deviceString isEqualToString:@"iPad6,8"])      return @"iPad Pro 12.9";

        if ([deviceString isEqualToString:@"iPad6,11"])    return @"iPad 5 (WiFi)";

        if ([deviceString isEqualToString:@"iPad6,12"])    return @"iPad 5 (Cellular)";

        if ([deviceString isEqualToString:@"iPad7,1"])     return @"iPad Pro 12.9 inch 2nd gen (WiFi)";

        if ([deviceString isEqualToString:@"iPad7,2"])     return @"iPad Pro 12.9 inch 2nd gen (Cellular)";

        if ([deviceString isEqualToString:@"iPad7,3"])     return @"iPad Pro 10.5 inch (WiFi)";

        if ([deviceString isEqualToString:@"iPad7,4"])     return @"iPad Pro 10.5 inch (Cellular)"; 

        if ([deviceString isEqualToString:@"AppleTV2,1"])    return @"Apple TV 2";

        if ([deviceString isEqualToString:@"AppleTV3,1"])    return @"Apple TV 3";

        if ([deviceString isEqualToString:@"AppleTV3,2"])    return @"Apple TV 3";

        if ([deviceString isEqualToString:@"AppleTV5,3"])    return @"Apple TV 4"; 

        if ([deviceString isEqualToString:@"i386"])         return @"Simulator";

        if ([deviceString isEqualToString:@"x86_64"])       return @"Simulator";

         return deviceString;

    }

    IDFA与IDFV适用于那些情况?

    IDFA在这两种情况下会被重置(默认是允许的,检测推广效果是可以的):

    1. 设置程序 -> 通用 -> 还原 -> 还原位置与隐私

    2.设置程序-> 通用 -> 关于本机 -> 广告 -> 还原广告标示符

    IDFV会在用户卸载了同一个vendor对应的所有程序,然后在重新安装同一个vendor提供的程序,此时identifierForVendor会被重置。vendor是CFBundleIdentifier(反转DNS格式)的前两部分。

      个人建议:如果不绑定用户数据,仅仅区分设备量两者都可用。如果绑定用户收据建议使用IDFV,因为IDFA可以被用户重置,会造成多个用户信息混乱。

  • 相关阅读:
    游戏人生Silverlight(2) 趣味钢琴[Silverlight 2.0(c#)]
    稳扎稳打Silverlight(35) 3.0控件之ChildWindow, SaveFileDialog, HeaderedItemsControl, VirtualizingStackPanel
    Silverlight 3.0 Demo
    稳扎稳打Silverlight(34) 3.0控件之Frame, Page, Label, DescriptionViewer, ValidationSummary
    再接再厉VS 2008 sp1 + .NET 3.5 sp1系列文章索引
    稳扎稳打Silverlight(37) 3.0动画之Easing(缓动效果)
    返璞归真 asp.net mvc (1) 添加、查询、更新和删除的 Demo
    返璞归真 asp.net mvc (2) 路由(System.Web.Routing)
    游戏人生Silverlight(5) 星际竞技场[Silverlight 2.0(c#, Farseer Physics Engine)]
    稳扎稳打Silverlight(30) 2.0Tip/Trick之Silverlight.js, Silverlight.supportedUserAgent.js, 自定义启动界面, 响应鼠标滚轮事件
  • 原文地址:https://www.cnblogs.com/xu1peng/p/8178445.html
Copyright © 2011-2022 走看看