版本信息获取类

原创 2015年11月18日 18:42:27

#import <Foundation/Foundation.h>

#import "NDFSMState.h"


@interface DeviceManage : NSObject

@property (nonatomic, strong) NSString *osVersion;          //系统版本  eg.@"8.1"

@property (nonatomic, strong) NSString *mac;                //设备UUID

@property (nonatomic, strong) NSString *source;             //设备来源  eg.@"ANDROID",@"IOS"

@property (nonatomic, strong) NSString *deviceType;         //设备类型  eg. @"iPhone"

@property (nonatomic, assign) NeediPhoneType iPhoneType;    //设备机型  eg. iPhone4/4s,iPhone5/5c/5s,iPhone6,iPhone6plus

@property (nonatomic, strong) NSString *launchImageName;    //default图片名称

@property (nonatomic, strong) NSString *localModel;         //地方型号  (国际化区域名称)

@property (nonatomic, strong) NSString *resolution;         //分辨率

@property (nonatomic, strong) NSString *releaseChannel;     //分发渠道


@property (nonatomic, assign) CGFloat  widthScaleRatio;     //宽适配比率,iPhone6为基本

@property (nonatomic, assign) CGFloat  heighScaleRatio;     //高适配比率,iPhone6为基本

@property (nonatomic, assign) CGFloat  screenWidth;

@property (nonatomic, assign) CGFloat  screenHeigh;

@property (nonatomic, assign) CGFloat  scale;               //倍率


@property (nonatomic, strong) NSString *deviceId;           //服务器返还的设备标示

@property (nonatomic, strong) NSString *AppID;              //标识应用唯一性

@property (nonatomic, strong) NSString *AppName;            //app显示名称

@property (nonatomic, strong) NSString *AppVersion;         //app版本号

@property (nonatomic, strong) NSString *AppBuildVersion;    //app构建版本号


+ (DeviceManage *) deviceManage;//单例方法


- (void)getDeviceInfo; //设备信息


@end


#import "DeviceManage.h"

#import  <UIKit/UIKit.h>

#import "UIDevice+IdentifierAddition.h"


@interface DeviceManage ()

{

    NSString *mSource;

    NSString *mOSVersion;

    NSString *mMac;

    NSString *mDevType;

    NSString *mResolution;

    

    float mScaleW;//宽缩放比率

    float mScaleH;//高缩放比率

    

    NSString *mAppID;

    NSString *mAppName;

    NSString *mAppVersion;

    NSString *mAppBuildVersion;

}

@property (nonatomic, strong) UIDevice *curDev;                //获取当前设备句柄

@property (nonatomic, strong) NSDictionary *appInfoDictionary; //App信息

@end



@implementation DeviceManage

#pragma mark - 单例

/*------------单例--------------*/

+ (DeviceManage *)deviceManage

{

    static DeviceManage *manage = nil;

    static dispatch_once_t onceToken;

    dispatch_once(&onceToken, ^{

         manage = [[super allocWithZone:NULL]init];

        

    });

    return manage;

}


+(instancetype) allocWithZone:(struct _NSZone *)zone{

    return [self deviceManage];

}


+(id) copyWithZone:(struct _NSZone *)zone{

    return [self deviceManage];

}

/*------------结束--------------*/


- (void)getDeviceInfo

{

    mSource = self.source;

    mOSVersion = self.osVersion;

    mMac = self.mac;

    mDevType = self.deviceType;

    mResolution = self.resolution;

    

    mScaleW = self.widthScaleRatio;

    mScaleH = self.heighScaleRatio;

    

    mAppID = self.AppID;

    mAppName = self.AppName;

    mAppVersion = self.AppVersion;

    mAppBuildVersion = self.AppBuildVersion;

}



#pragma mark - DeviceInfo

/*-----------------------DeviceInfo------------------------*/

- (UIDevice *)curDev

{

    if (!_curDev) {

        _curDev = [UIDevice currentDevice];

    }

    return _curDev;

}


- (NSString *)source

{

    if (!_source) {

//        _source = self.curDev.systemName;

        _source = @"IOS";

    }

    return _source;

}


- (NSString *)osVersion

{

    if (!_osVersion) {

        _osVersion = self.curDev.systemVersion;

    }

    return _osVersion;

}


- (NSString *)mac

{

    if (!_mac) {

//        _mac = self.curDev.identifierForVendor.UUIDString; //卸载后变动

        _mac = [self.curDev uniqueDeviceIdentifier];

        

    }

    return _mac;

}


- (NSString *)deviceType

{

    if (!_deviceType) {

        _deviceType = self.curDev.model;

    }

    return _deviceType;

}


- (NSString *)localModel

{

    if (!_localModel) {

        _localModel = self.curDev.localizedModel;

    }

    return _localModel;

}


- (NSString *)releaseChannel

{

    if (!_releaseChannel) {

        _releaseChannel = @"APPSTORE";

    }

    return _releaseChannel;

}


- (NSString *)resolution

{

    if (!_resolution) {

        UIScreen *screen = [UIScreen mainScreen];

        CGFloat width  = screen.bounds.size.width;

        CGFloat height = screen.bounds.size.height;

        CGFloat scale = screen.scale;

        _resolution = [NSString stringWithFormat:@"%ldx%ld",(long)(width*scale),(long)(height*scale)];

    }

    return _resolution;

}


- (NeediPhoneType) iPhoneType

{

    if (_iPhoneType == 0) {

        //这种情况如何使用switch ?

        if ([self.resolution isEqualToString:@"1242x2208"]) {

            _iPhoneType = iPhoneType6plus;

        }else if ([self.resolution isEqualToString:@"750x1334"]){

            _iPhoneType = iPhoneType6;

        }else if ([self.resolution isEqualToString:@"640x1136"]){

            _iPhoneType = iPhoneType5s;

        }else if ([self.resolution isEqualToString:@"640x960"]){

            _iPhoneType = iPhoneType4s;

        }else{

            _iPhoneType = iPhoneType3GS;

        }

    }

    return _iPhoneType;

}

- (NSString *)launchImageName

{

    if (!_launchImageName) {

        switch (self.iPhoneType) {

            case 5:

                _launchImageName = @"LaunchImage-800-Portrait-736h";

                break;

            case 4:

                _launchImageName = @"LaunchImage-800-667h";

                break;

            case 3:

                _launchImageName = @"LaunchImage-700-568h";

                break;

            case 2:

                _launchImageName = @"LaunchImage-700";

                break;

            case 1:

                _launchImageName = @"LaunchImage";

                break;

            default:

                break;

        }

    }

    return _launchImageName;

}


#pragma mark - 缩放比率

- (CGFloat) scale

{

    if (_scale == 0) {

        UIScreen *screen = [UIScreen mainScreen];

        _scale = screen.scale;

    }

    return _scale;

}


- (CGFloat)screenWidth

{

    if (_screenWidth == 0) {

        UIScreen *screen = [UIScreen mainScreen];

        _screenWidth = screen.bounds.size.width;

    }

    return _screenWidth;

}


- (CGFloat)screenHeigh

{

    if (_screenHeigh == 0) {

        UIScreen *screen = [UIScreen mainScreen];

        _screenHeigh = screen.bounds.size.height;

    }

    return _screenHeigh;

}


- (CGFloat)widthScaleRatio

{

    if (_widthScaleRatio == 0) {

        UIScreen *screen = [UIScreen mainScreen];

        _widthScaleRatio = screen.bounds.size.width / 375.0 ;

    }

    return _widthScaleRatio;

}


- (CGFloat)heighScaleRatio

{

    if (_heighScaleRatio == 0) {

        UIScreen *screen = [UIScreen mainScreen];

        _heighScaleRatio = screen.bounds.size.height / 667.0 ;

    }

    return _heighScaleRatio;

}

/*-----------------------DeviceInfo结束------------------------*/


#pragma mark - AppInfo

/*-----------------------AppInfo------------------------*/

- (NSDictionary *)appInfoDictionary

{

    if (!_appInfoDictionary) {

        _appInfoDictionary = [[NSBundle mainBundle] infoDictionary];

    }

    return _appInfoDictionary;

}

- (NSString *)AppID

{

    if (!_AppID) {

        _AppID = APPID;

    }

    return _AppID;

}


- (NSString *)AppName

{

    if (!_AppName) {

        _AppName = [self.appInfoDictionary objectForKey:@"CFBundleDisplayName"];

    }

    return _AppName;

}

- (NSString *)AppVersion

{

    if (!_AppVersion) {

        _AppVersion = [self.appInfoDictionary objectForKey:@"CFBundleShortVersionString"];

    }

    return  _AppVersion;

}


- (NSString *)AppBuildVersion

{

    if (!_AppBuildVersion) {

        _AppBuildVersion = [self.appInfoDictionary objectForKey:@"CFBundleVersion"];

    }

    return _AppBuildVersion;

}

/*-----------------------AppInfo结束------------------------*/


#pragma mark - 继承描述

- (NSString *)description

{

    NSString *devInfo = [NSString stringWithFormat:@"\n/***********设备信息**********\n来源: %@ \n版本: %@ \nMac地址: %@ \n设备类型: %@ \n分辨率: %@\n/****************",mSource,mOSVersion,mMac,mDevType,mResolution];

    NSString *scaleInfo = [NSString stringWithFormat:@"\n/***********适配比率**********\n宽度适配率: %f\n高度适配率: %f\n/****************",mScaleW,mScaleH];

    NSString *appInfo = [NSString stringWithFormat:@"\n/***********APP信息**********\n显示名称: %@\n版本号: %@\n构建版本号: %@\nID: %@\n/****************",mAppName,mAppVersion,mAppBuildVersion,mAppID];

    return [NSString stringWithFormat:@"%@%@%@",devInfo,scaleInfo,appInfo];

}


@end




获取EXE或者DLL的版本信息

2017年第一篇博客,分享一个获取exe或者dll版本信息的成熟类: 头文件如下: // -----------------------------------------------------...
  • hellokandy
  • hellokandy
  • 2017年01月03日 10:52
  • 989

c++ 获取软件版本信息

c++ 获取软件版本信息
  • xzpblog
  • xzpblog
  • 2017年10月30日 14:45
  • 218

读取EXE文件的版本信息

读取EXE文件的版本信息function jzlGetVersion(filename:string):string;var  InfoSize, Wnd: DWORD;  VerBuf: Point...
  • jinzhili
  • jinzhili
  • 2006年02月23日 11:35
  • 1352

android中获取项目的版本信息

在实际项目中,经常要检测版本是否需要更新,这时就需要获取客户端的版本信息来和服务器的版本进行比较,获取客户端的版本很简单,就是得到配置文件里的versionName和versionCode即可,代码如...
  • u010142437
  • u010142437
  • 2013年10月11日 19:21
  • 2609

用SQL快捷的获取Oracle版本信息

如何用SQL快捷的获取Oracle版本信息,可以用以下两句SQL:select * from PRODUCT_COMPONENT_VERSION;select * from v$version; 两句...
  • lopper
  • lopper
  • 2009年12月11日 08:44
  • 1896

获取所有已安装软件以及获取应用程序版本信息

最近在做一个视频跳转播放功能,也就是在第三方应用中播放本应用内的视频,这需要获取第三方应用的版本号,以便做兼容,其实获取第三方应用的版本号很简单:      // 获取所有已安装的应用包名、版本号、版...
  • JustinNick
  • JustinNick
  • 2016年11月06日 10:13
  • 3064

C++ 如何读取文件的版本信息

C++ 如何读取文件的版本信息 有些时候,我们需要知道程序调用的库或者某个exe文件的版本信息(或其他相关属性信息时)。这时就需要考虑到如何去读取这些文件的版本信息呢?     从万能的网上查到了Ve...
  • yaoshenjie
  • yaoshenjie
  • 2016年09月27日 21:54
  • 2812

java 获取当前系统的版本信息

//当前系统名称 String OS_NAME = System.getProperty("os.name").toLowerCase(Locale.US); System.out.print...
  • u010416069
  • u010416069
  • 2016年08月18日 11:59
  • 1617

自己写的一个PE文件FileVersionInfo类,可以轻松获取PE文件版本信息

今天写了一个类似任务管理器的东西,需要获取到对应进程d
  • q244767346
  • q244767346
  • 2014年08月22日 10:18
  • 1434

获取windows版本信息的做法

作者:朱金灿来源:http://blog.csdn.net/clever101         个人不建议用 GetVersion 或GetVersionEx 之类的 API 来获取系统版本号。注意微...
  • clever101
  • clever101
  • 2015年02月28日 16:58
  • 4252
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:版本信息获取类
举报原因:
原因补充:

(最多只允许输入30个字)