zoukankan      html  css  js  c++  java
  • iOS代码技巧之判断设备及状态

    转自:http://my.oschina.net/joanfen/blog/149076

    一、判断设备

    01 //设备名称
    02 return [UIDevice currentDevice].name;
    03  
    04 //设备型号,只可得到是何设备,无法得到是第几代设备
    05 return [UIDevice currentDevice].model;
    06  
    07 //系统版本型号,如iPhone OS
    08 return [UIDevice currentDevice].systemVersion;
    09  
    10 //系统版本名称,如6.1.3
    11 return [UIDevice currentDevice].systemName;
    01 //判断是否为iPhone
    02 #define IS_IPHONE (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone)
    03  
    04 //判断是否为iPad
    05 #define IS_IPAD (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad)
    06  
    07 //判断是否为ipod
    08 #define IS_IPOD ([[[UIDevice currentDevice] model] isEqualToString:@"iPod touch"])
    09  
    10 //判断是否为iPhone5
    11 #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、判断设备是否联网

    01 + (BOOL)connectedToNetwork{
    02      
    03     //创建零地址,0.0.0.0的地址表示查询本机的网络连接状态
    04      
    05     struct sockaddr_storage zeroAddress;
    06      
    07     bzero(&zeroAddress, sizeof(zeroAddress));
    08     zeroAddress.ss_len = sizeof(zeroAddress);
    09     zeroAddress.ss_family = AF_INET;
    10      
    11     // Recover reachability flags
    12     SCNetworkReachabilityRef defaultRouteReachability = SCNetworkReachabilityCreateWithAddress(NULL, (struct sockaddr *)&zeroAddress);
    13     SCNetworkReachabilityFlags flags;
    14      
    15     //获得连接的标志
    16     BOOL didRetrieveFlags = SCNetworkReachabilityGetFlags(defaultRouteReachability, &flags);
    17     CFRelease(defaultRouteReachability);
    18      
    19     //如果不能获取连接标志,则不能连接网络,直接返回
    20     if (!didRetrieveFlags)
    21     {
    22         return NO;
    23     }
    24     //根据获得的连接标志进行判断
    25  
    26     BOOL isReachable = flags & kSCNetworkFlagsReachable;
    27     BOOL needsConnection = flags & kSCNetworkFlagsConnectionRequired;
    28     return (isReachable&&!needsConnection) ? YES : NO;
    29 }

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

    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

  • 相关阅读:
    pgpoolII3.1 的内存泄漏(二)
    iOS 开发的一些网址
    ios开发必备第三方库
    iOS截屏方法
    ios开发第三方库cocoapods安装
    iOS开发知识点总结
    iOS开发文件夹Copy items if needed
    iOS开源库最全的整理
    iOS图标抖动效果
    iOS 加密的3种方法
  • 原文地址:https://www.cnblogs.com/wangpei/p/3552255.html
Copyright © 2011-2022 走看看