日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

ios获取设备信息总结

發布時間:2025/3/17 编程问答 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 ios获取设备信息总结 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
本文轉載至 http://blog.csdn.net/decajes/article/details/41807977?

?

1、獲取設備的信息
[objc]?view plaincopy
  • UIDevice?*device?=?[[UIDevice?alloc]?int];??
  • NSString?*name?=?device.name;???????//獲取設備所有者的名稱??
  • NSString?*model?=?device.name;??????//獲取設備的類別??
  • NSString?*type?=?device.localizedModel;?//獲取本地化版本??
  • NSString?*systemName?=?device.systemName;???//獲取當前運行的系統??
  • NSString?*systemVersion?=?device.systemVersion;//獲取當前系統的版本??

  • 2、獲取設備的唯一標示符
    [objc]?view plaincopy
  • NSString?*identifier?=?[[[UIDevice?currentDevice]?identifierForVendor]?UUIDString];??

  • 3、為系統創建一個隨機的標示符
    [objc]?view plaincopy
  • (NSString*)?createUUID??
  • {??
  • ????NSString?*id?=?[[NSUserDefaults?standardUserDefaults]?objectForKey:@"UUID"];????//獲取標識為"UUID"的值??
  • ????if(id?==?nil)??
  • ????{??
  • ????????if([[[UIDevice?currentDevice]?systemVersion]?floatValue]?>?6.0)??
  • ????????{??
  • ????????????NSString?*identifierNumber?=?[[NSUUID?UUID]?UUIDString];????????????????//ios?6.0?之后可以使用的api??
  • ????????????[[NSUserDefaults?standardUserDefaults]?setObject:identifierNumber?forKey:@"UUID"];??//保存為UUID??
  • ????????????[[NSUserDefaults?standardUserDefaults]?synchronize];??
  • ????????}??
  • ????????else{??
  • ????????????CFUUIDRef?uuid?=?CFUUIDCreate(NULL);??
  • ????????????CFStringRef?uuidString?=?CFUUIDCreateString(NULL,?uuid);????????????????????//ios6.0之前使用的api??
  • ????????????NSString?*identifierNumber?=?[NSString?stringWithFormat:@"%@",?uuidString];??
  • ????????????[[NSUserDefaults?standardUserDefaults]?setObject:identifierNumber?forKey:@"UUID"];??
  • ????????????[[NSUserDefaults?standardUserDefaults]?synchronize];??
  • ????????????CFRelease(uuidString);??
  • ????????????CFRelease(uuid);??
  • ????????}??
  • ????????return?[[NSUserDefaults?standardUserDefaults]?objectForKey@"UUID"];??
  • ????}??
  • ????return?id;??
  • }??

  • 4、獲取當前屏幕分辨率的信息
    [objc]?view plaincopy
  • CGRect?rect?=?[[UIScreen?mainScreen]?bounds];??
  • CGFloat?scale?=?[[UIScreen?mainScreen].scale];??
  • CGFloat?width?=?rect.size.width?*?scale;??
  • CGFloat?height?=?rect.size.height?*?scale;??

  • 5、獲取運營商的信息
    需要先導入頭文件
    [objc]?view plaincopy
  • #import?<CoreTelephony/CTCarrier.h>??
  • #import?<CoreTelephony/CTTelephonyNetworkInfo.h>??
  • 創建對象

    [objc]?view plaincopy
  • CCTelephonyNetworkInfo?*info?=?[[CTTelephonyNetworkInfo?alloc]?init];??

  • 獲取運行商的名稱
    [objc]?view plaincopy
  • CTCarrier?*carrier?=?[info?subscriberCellularProvider];??
  • NSString?*mCarrier?=?[NSString?stringWithFormat:@"%@",[carrier?carrierName]];??

  • 獲取當前網絡的類型
    ios7之后可以按照以下方式獲取。方便而且類型多
    [objc]?view plaincopy
  • NSString?*mConnectType?=?[[NSString?alloc]?initWithFormat:@"%@",info.currentRadioAccessTechnology];??

  • 類型有以下:
    [objc]?view plaincopy
  • CTRadioAccessTechnologyGPRS?????????//介于2G和3G之間,也叫2.5G?,過度技術????
  • CTRadioAccessTechnologyEdge?????????//EDGE為GPRS到第三代移動通信的過渡,EDGE俗稱2.75G???
  • CTRadioAccessTechnologyWCDMA???????????
  • CTRadioAccessTechnologyHSDPA????????????//亦稱為3.5G(3?G)??
  • CTRadioAccessTechnologyHSUPA????????????//3G到4G的過度技術??
  • CTRadioAccessTechnologyCDMA1x???????//3G??????
  • CTRadioAccessTechnologyCDMAEVDORev0????//3G標準??
  • CTRadioAccessTechnologyCDMAEVDORevA????
  • CTRadioAccessTechnologyCDMAEVDORevB????
  • CTRadioAccessTechnologyeHRPD????????//電信使用的一種3G到4G的演進技術,?3.75G???????
  • CTRadioAccessTechnologyLTE??????????//接近4G???

  • ios7之前的話apple給我們提供了Reachability來獲取。
    首先要導入SystemConfiguration.framework,把下載下來的Reachability.h和Reachability.m加進項目中
    [objc]?view plaincopy
  • Reachability?*reach?=?[Reachability?reachabilityWithHostName:@"www.apple.com"];??
  • switch([reach?currentReachabilityStatus])??
  • {??
  • ????case?NotReachable:??//沒有連接上??
  • ????????//do?something??
  • ????????break;??
  • ????case?ReachableViaWiFi:??//通過wifi連接??
  • ????????//do?something??
  • ????????break;??
  • ????case?ReachableViaWWAN:??//通過GPRS連接??
  • ????????//do?something??
  • ????????break;??
  • ????default:????<span?style="white-space:pre">????</span>//未知情況??
  • ????????//do?something??
  • ????????break;??
  • }??
  • http://blog.csdn.net/qijianli/article/details/19922653?這個博客還說了其它的方法,不過因為是調用私有API,所以沒有采用。

    6、獲取當前信號的強弱
    這個貌似沒有給出官方的api,但是網上有人說可以用私有的api實現,但是通不過appStore的審核,方法如下:
    利用linux下動態庫顯式調用api的函數。先包含頭文件?#import <dlfcn.h>
    [objc]?view plaincopy
  • (int)?getSignalLevel??
  • {??
  • voidvoid?*libHandle?=?dlopen("/System/Library/Frameworks/CoreTelephony.framework/CoreTelephony",RTLD_LAZY);//獲取庫句柄??
  • int?(*CTGetSignalStrength)();?//定義一個與將要獲取的函數匹配的函數指針??
  • CTGetSignalStrength?=?(int(*)())dlsym(libHandle,"CTGetSignalStrength");?//獲取指定名稱的函數??
  • ??
  • if(CTGetSignalStrength?==?NULL)??
  • ????return?-1;??
  • else{??
  • ????int?level?=?CTGetSignalStrength();??
  • ????dlclose(libHandle);?//切記關閉庫??
  • ????return?level??
  • ????}??
  • }??

  • 7、設備震動
    需要加入AudioToolbox framework,導入頭文件 #import <AudioToolbox/AudioToolbox.h>
    在需要震動的地方添加代碼:
    [objc]?view plaincopy
  • AudioServicesPlaySystemSound?(?kSystemSoundID_Vibrate)?;??
  • 但是貌似這個不支持傳入震動時間和模式,自己去控制吧。


    8、獲取電池的相關信息
    [objc]?view plaincopy
  • @implementation?BatterMonitor??
  • //獲取電池當前的狀態,共有4種狀態??
  • -(NSString*)?getBatteryState?{????
  • ????UIDevice?*device?=?[UIDevice?currentDevice];????
  • ????if?(device.batteryState?==?UIDeviceBatteryStateUnknown)?{????
  • ????????return?@"UnKnow";????
  • ????}else?if?(device.batteryState?==?UIDeviceBatteryStateUnplugged){????
  • ????????return?@"Unplugged";????
  • ????}else?if?(device.batteryState?==?UIDeviceBatteryStateCharging){????
  • ????????return?@"Charging";????
  • ????}else?if?(device.batteryState?==?UIDeviceBatteryStateFull){????
  • ????????return?@"Full";????
  • ????}??
  • ????return?nil;???
  • }???
  • //獲取電量的等級,0.00~1.00??
  • -(float)?getBatteryLevel?{????
  • ????return?[UIDevice?currentDevice].batteryLevel;??
  • }???
  • ??
  • -(void)?getBatteryInfo??
  • {??
  • ????NSString?*state?=?getBatteryState();??
  • ????float?level?=?getBatteryLevel()*100.0;??
  • ????//yourControlFunc(state,?level);??//寫自己要實現的獲取電量信息后怎么處理??
  • }??
  • ??
  • //打開對電量和電池狀態的監控,類似定時器的功能??
  • -(void)?didLoad??
  • {??
  • ????[[UIDevice?currentDevice]?setBatteryMonitoringEnable:YES];??
  • ????[[NSNotificationCenter?defaultCenter]?addObserver:self?selector:@selector(getBatteryInfo:)?name:UIDeviceBatteryStateDidChangeNotification?object:nil];??
  • ????[[NSNotificationCenter?defaultCenter]?addObserver:self?selector:@selector(getBatteryInfo:)?name:UIDeviceBatteryLevelDidChangeNotification?object:nil];??
  • ????[NSTimer?scheduledTimerWithTimeInterval:0.5f?target:self?selector:@selector(getBatteryInfo:)?userInfo:nil?repeats:YES];??
  • }??
  • @end??

  • 9、app中打開一個網頁
    這個比較簡單,直接用提供的接口openURL即可。
    [cpp]?view plaincopy
  • NSString?*url?=?@"www.apple.com"??
  • [[UIApplication?sharedApplication]?openURL:[NSURL?URLWithString:url]];??

  • 10、app中打開另一個app

    打開另一個app還是可以通過openURL來實現。但是要分兩種情況。第一種是啟動內置的應用,一般的電話,瀏覽器,短信和

    郵件可以直接調用并添加參數,譬如

    [objc]?view plaincopy
  • [[UIApplication?sharedApplication]?openURL:[NSURL?URLWithString:@"tel://10086"]];??
  • [[UIApplication?sharedApplication]?openURL:[NSURL?URLWithString:@"mailto://devprograms@apple.com"]];??
  • [[UIApplication?sharedApplication]?openURL:[NSURL?URLWithString:@"sms://10086"]];??

  • 第二種情況是要打開自己開發的app,這種情況則要為將要打開的app注冊一個URL協議。這個可以在項目的文件info.plist中注冊。主要操作為:?

    Step1. 右鍵,選擇“Add Row”

    Step2. Key值選擇“URL types”

    Step3. 打開“Item 0″,然后為該key增加一個URL identifier。可以是任何值,但建議用“反域名”(例如 “com.fcplayer.testHello”)。

    Step4. 在“Item 0”下再加一行。

    Step5. 選擇“URL Schemes” 作為Key。

    Step6. 輸入你的URL協議名 (例如“testHello://” 應寫做“testHello”)。如果有必要,你可以在這里加入多個協議。

    其實在打開的時候只需要URL Schemes即可,URL identifier是可選項。如果需要傳送參數,可以在URL Schemes://添加你的參數,格式和網頁開發的傳遞參數差不多。(又或者URL Schemes://URL identifier@添加的參數)關鍵是要和接收參數方定義好處理的方式。然后在需要打開的地方添加代碼:

    [objc]?view plaincopy
  • NSString?*url?=?@"URL?Schemes的路徑"??
  • [[UIApplication?sharedApplication]?openURL:[NSURL?URLWithString:url]];??

  • 如有錯誤,請不吝指正,謝謝

    總結

    以上是生活随笔為你收集整理的ios获取设备信息总结的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。