Swift Note

兴趣是最好的老师

swift 获取手机和 app 信息

有时候我们需要获取到一些用户的信息,包括手机信息和 app 本身的信息,比如手机网络服务商、是否wifi、 app 版本号等。

app 信息

获取 App 信息比较简单,嗯,说的是你写的当前信息,别的app信息肯定是拿不到了。

Apple 提供了一个字典来存储这些信息,嗯,其实大部分是 info.plist 文件里面的内容。

let appInfo = NSBundle.mainBundle().infoDictionary  

这个字典中包括以下信息:

  • DTSDKName
  • CFBundleSupportedPlatforms
  • CFBundleIdentifier
  • UIMainStoryboardFile
  • CFBundleNumericVersion 版本号
  • CFBundleShortVersionString
  • BuildMachineOSBuild
  • UILaunchStoryboardName
  • DTCompiler
  • DTXcodeBuild
  • LSRequiresIPhoneOS
  • UISupportedInterfaceOrientations
  • DTPlatformBuild
  • CFBundleVersion build编号
  • DTPlatformVersion
  • CFBundleName
  • DTSDKBuild
  • CFBundleInfoDictionaryVersion
  • DTPlatformName
  • CFBundleSignature
  • CFBundlePackageType
  • UIDeviceFamily
  • CFBundleExecutable
  • DTXcode
  • MinimumOSVersion
  • CFBundleDevelopmentRegion

网络信息

获取网络信息,需要先 import CoreTelephony ,然后获取信息:

let networkInfo = CTTelephonyNetworkInfo()  
let carrieInfo = networkInfo.subscriberCellularProvider  
let carrieName = carrieInfo?.carrierName  
let countyCode = carrieInfo?.isoCountryCode  
let allowsVOIP = carrieInfo?.allowsVOIP  
let mobileNetworkCode = carrieInfo?.mobileNetworkCode  
let mobileCountryCode = carrieInfo?.mobileCountryCode

对于 mobileCountryCode 可以参考对应的MNC编码: http://en.wikipedia.org/wiki/Mobilecountrycode

对于国内来说,中国的MCC编码是 460 ,对应的 MNC 编码如下:

  • 00 中国移动
  • 01 中国联通
  • 02 中国移动
  • 03 中国电信
  • 04 全球卫星电话
  • 05 中国电信
  • 06 中国联通
  • 07 中国移动
  • 08 中国移动
  • 09 中国联通
  • 11 中国电信
  • 20 中国铁通

判断移动网络类型

如果要判断 3G/4G 使用 currentRadioAccessTechnology 就好了:

let networkInfo = CTTelephonyNetworkInfo()  
let networkString = telefonyInfo.currentRadioAccessTechnology

if networkString == CTRadioAccessTechnologyLTE{  
  // LTE (4G)
}else if networkString == CTRadioAccessTechnologyWCDMA{
  // 3G 
}else if networkString == CTRadioAccessTechnologyEdge{
  // EDGE (2G)
}

wifi 判断的话,参考苹果公司给的一个demo https://developer.apple.com/library/ios/samplecode/Reachability/Reachability.zip


貌似未完待续

神飞

没有什么能够阻挡,我对自由的向往