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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

ios获取设备信息总结

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

?

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

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

  • 3、為系統(tǒng)創(chuàng)建一個(gè)隨機(jī)的標(biāo)示符
    [objc]?view plaincopy
  • (NSString*)?createUUID??
  • {??
  • ????NSString?*id?=?[[NSUserDefaults?standardUserDefaults]?objectForKey:@"UUID"];????//獲取標(biāo)識(shí)為"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、獲取當(dāng)前屏幕分辨率的信息
    [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、獲取運(yùn)營商的信息
    需要先導(dǎo)入頭文件
    [objc]?view plaincopy
  • #import?<CoreTelephony/CTCarrier.h>??
  • #import?<CoreTelephony/CTTelephonyNetworkInfo.h>??
  • 創(chuàng)建對(duì)象

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

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

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

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

  • ios7之前的話apple給我們提供了Reachability來獲取。
    首先要導(dǎo)入SystemConfiguration.framework,把下載下來的Reachability.h和Reachability.m加進(jìn)項(xiàng)目中
    [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?這個(gè)博客還說了其它的方法,不過因?yàn)槭钦{(diào)用私有API,所以沒有采用。

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

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


    8、獲取電池的相關(guān)信息
    [objc]?view plaincopy
  • @implementation?BatterMonitor??
  • //獲取電池當(dāng)前的狀態(tài),共有4種狀態(tài)??
  • -(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;???
  • }???
  • //獲取電量的等級(jí),0.00~1.00??
  • -(float)?getBatteryLevel?{????
  • ????return?[UIDevice?currentDevice].batteryLevel;??
  • }???
  • ??
  • -(void)?getBatteryInfo??
  • {??
  • ????NSString?*state?=?getBatteryState();??
  • ????float?level?=?getBatteryLevel()*100.0;??
  • ????//yourControlFunc(state,?level);??//寫自己要實(shí)現(xiàn)的獲取電量信息后怎么處理??
  • }??
  • ??
  • //打開對(duì)電量和電池狀態(tài)的監(jiān)控,類似定時(shí)器的功能??
  • -(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中打開一個(gè)網(wǎng)頁
    這個(gè)比較簡(jiǎn)單,直接用提供的接口openURL即可。
    [cpp]?view plaincopy
  • NSString?*url?=?@"www.apple.com"??
  • [[UIApplication?sharedApplication]?openURL:[NSURL?URLWithString:url]];??

  • 10、app中打開另一個(gè)app

    打開另一個(gè)app還是可以通過openURL來實(shí)現(xiàn)。但是要分兩種情況。第一種是啟動(dòng)內(nèi)置的應(yīng)用,一般的電話,瀏覽器,短信和

    郵件可以直接調(diào)用并添加參數(shù),譬如

    [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"]];??

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

    Step1. 右鍵,選擇“Add Row”

    Step2. Key值選擇“URL types”

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

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

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

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

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

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

  • 如有錯(cuò)誤,請(qǐng)不吝指正,謝謝

    總結(jié)

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

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。