iOS代码技巧之判断设备及状态

一、判断设备

//设备名称
return [UIDevice currentDevice].name;

//设备型号,只可得到是何设备,无法得到是第几代设备
return [UIDevice currentDevice].model;

//系统版本型号,如iPhone OS 
return [UIDevice currentDevice].systemVersion;

//系统版本名称,如6.1.3
return [UIDevice currentDevice].systemName;
//判断是否为iPhone
#define IS_IPHONE (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone)

//判断是否为iPad
#define IS_IPAD (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad)

//判断是否为ipod
#define IS_IPOD ([[[UIDevice currentDevice] model] isEqualToString:@"iPod touch"])

//判断是否为iPhone5
#define IS_IPHONE_5_SCREEN [[UIScreen mainScreen] bounds].size.height >= 568.0f && [[UIScreen mainScreen] bounds].size.height < 1024.0f

二、判断网络连接状态

1、导入SystemConfiguration.framework,并#import<SystemConfiguration/SCNetworkReachability.h>

2、判断设备是否联网

+ (BOOL)connectedToNetwork{
    
    //创建零地址,0.0.0.0的地址表示查询本机的网络连接状态
    
    struct sockaddr_storage zeroAddress;
    
    bzero(&zeroAddress, sizeof(zeroAddress));
    zeroAddress.ss_len = sizeof(zeroAddress);
    zeroAddress.ss_family = AF_INET;
    
    // Recover reachability flags
    SCNetworkReachabilityRef defaultRouteReachability = SCNetworkReachabilityCreateWithAddress(NULL, (struct sockaddr *)&zeroAddress);
    SCNetworkReachabilityFlags flags;
    
    //获得连接的标志
    BOOL didRetrieveFlags = SCNetworkReachabilityGetFlags(defaultRouteReachability, &flags);
    CFRelease(defaultRouteReachability);
    
    //如果不能获取连接标志,则不能连接网络,直接返回
    if (!didRetrieveFlags)
    {
        return NO;
    }
    //根据获得的连接标志进行判断

    BOOL isReachable = flags & kSCNetworkFlagsReachable;
    BOOL needsConnection = flags & kSCNetworkFlagsConnectionRequired;
    return (isReachable&&!needsConnection) ? YES : NO;
}

三、设备不显示的解决办法

PS:如果设备已经插上,但是XCode不显示当前设备,仍为iOS Device的状态,如下图所示

解决步骤

1.点击XCode右上角的Organizer->Devices,看自己的设备是否为绿灯状态,如果为黄灯或是没有灯,说明设备未连接好,请重新再插一次

2.如果设备已经连接好,但是还是不显示,则说明是系统版本不匹配,如果设备是ios5的系统,则XCode的iOS Deployment Target 必须是5.0或以上,XCode才可分辨此设备

选中TARGETS->Summary-Deployment Target 修改iOS版本号(假设设为6.1)

如果还是不识别,在PROJECT->Info->iOS Deployment Target下将版本号也修改为6.1

你可能感兴趣的:(iPhone,iOSDevice,设备联网状态,设备无法识别,iOS判断设备)