zoukankan      html  css  js  c++  java
  • iOS系统、设备信息获取方式

    一:在iOS系统中提供了系统版本的判断函数,因此我们可以很容易得到他的当前系统版本:

    [[UIDevice currentDevice] systemName];//系统名字
    [[UIDevice currentDevice] systemVersion];//系统版本号
    [[UIDevice currentDevice] uniqueIdentifier];//
    [[UIDevice currentDevice] model];  //设备型号

    这些方法都能够帮助你快速得到你所想要的关于系统硬件和软件的相关信息。

    二:获取设备串号及相关的信息:

    使用IOKit.framework框架来实现,利用第三方库IOKitExtentions来实现

    #if SUPPORTS_IOKIT_EXTENSIONS
    @interface UIDevice (IOKit_Extensions)
    - (NSString *) imei;
    - (NSString *) serialnumber;
    - (NSString *) backlightlevel;
    @end
    #endif
    
    #import "UIDevice-IOKitExtensions.h"
    #include <sys/types.h>
    #include <sys/sysctl.h>
    #import <mach/mach_host.h>
    #include <netinet/in.h>
    #include <arpa/inet.h>
    #include <netdb.h>
    #include <ifaddrs.h>
    #include <sys/socket.h>
    #include <net/if.h>
    #include <net/if_dl.h>
    #include <ifaddrs.h>
    
    #if SUPPORTS_IOKIT_EXTENSIONS
    #pragma mark IOKit miniheaders
    
    #define kIODeviceTreePlane		"IODeviceTree"
    
    enum {
        kIORegistryIterateRecursively	= 0x00000001,
        kIORegistryIterateParents		= 0x00000002
    };
    
    typedef mach_port_t	io_object_t;
    typedef io_object_t	io_registry_entry_t;
    typedef char		io_name_t[128];
    typedef UInt32		IOOptionBits;
    
    CFTypeRef
    IORegistryEntrySearchCFProperty(
    								io_registry_entry_t	entry,
    								const io_name_t		plane,
    								CFStringRef		key,
    								CFAllocatorRef		allocator,
    								IOOptionBits		options );
    
    kern_return_t
    IOMasterPort( mach_port_t	bootstrapPort,
    			 mach_port_t *	masterPort );
    
    io_registry_entry_t
    IORegistryGetRootEntry(
    					   mach_port_t	masterPort );
    
    CFTypeRef
    IORegistryEntrySearchCFProperty(
    								io_registry_entry_t	entry,
    								const io_name_t		plane,
    								CFStringRef		key,
    								CFAllocatorRef		allocator,
    								IOOptionBits		options );
    kern_return_t   mach_port_deallocate
    (ipc_space_t                               task,
     mach_port_name_t                          name);
    
    @implementation UIDevice (IOKit_Extensions)
    #pragma mark IOKit Utils
    NSArray *getValue(NSString *iosearch)
    {
        mach_port_t          masterPort;
        CFTypeID             propID = (CFTypeID) NULL;
        unsigned int         bufSize;
    	
        kern_return_t kr = IOMasterPort(MACH_PORT_NULL, &masterPort);
        if (kr != noErr) return nil;
    	
        io_registry_entry_t entry = IORegistryGetRootEntry(masterPort);
        if (entry == MACH_PORT_NULL) return nil;
    	
        CFTypeRef prop = IORegistryEntrySearchCFProperty(entry, kIODeviceTreePlane, (CFStringRef) iosearch, nil, kIORegistryIterateRecursively);
        if (!prop) return nil;
    	
    	propID = CFGetTypeID(prop);
        if (!(propID == CFDataGetTypeID())) 
    	{
    		mach_port_deallocate(mach_task_self(), masterPort);
    		return nil;
    	}
        CFDataRef propData = (CFDataRef) prop;
        if (!propData) return nil;
        bufSize = CFDataGetLength(propData);
        if (!bufSize) return nil;
    	
        NSString *p1 = [[[NSString alloc] initWithBytes:CFDataGetBytePtr(propData) length:bufSize encoding:1] autorelease];
        mach_port_deallocate(mach_task_self(), masterPort);
        return [p1 componentsSeparatedByString:@""];
    }
    - (NSString *) imei
    {
    	NSArray *results = getValue(@"device-imei");
    	if (results) return [results objectAtIndex:0];
    	return nil;
    }
    - (NSString *) serialnumber
    {
    	NSArray *results = getValue(@"serial-number");
    	if (results) return [results objectAtIndex:0];
    	return nil;
    }
    - (NSString *) backlightlevel
    {
    	NSArray *results = getValue(@"backlight-level");
    	if (results) return [results objectAtIndex:0];
    	return nil;
    }
    @end
    
    #endif
    

     在工程中加入IOKit这个文件的时候,会报错误xcode5 ios7 framework not found IOKit

    此时进行如下操作:

    解决办法,打开终端:
    cd  /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS7.0.sdk/System/Library/Frameworks/IOKit.framework
    sudo ln -s Versions/A/IOKit
     
  • 相关阅读:
    html实现滚动播报(原生JS实现)
    移动端H5页面惯性滑动监听
    简单线条、任意填充色的小图标(含自制方法)
    git和github新手安装使用教程(三步入门)
    node.js的安装配置——前端的配置
    Sublime Text 3 一些简单使用
    $.ajax() 方法的理解
    前端知识点
    (6)一些工作和生活的经验分享,以后还会不断补充添加
    (5.1)Opencv库学习第二部分
  • 原文地址:https://www.cnblogs.com/yuanjianguo2012/p/4015862.html
Copyright © 2011-2022 走看看