iOS,获取手机号,获取手机的型号,系统版本,软件名称,软件版本

本文介绍了如何在iOS应用中获取设备信息,包括手机号、设备型号、系统版本等,并详细阐述了如何通过sysctl函数识别不同类型的iOS设备型号。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

这个功能亲测5s 没有获取成功,返回结果都是(null)  别的论坛说有获取成功的, 不管怎么样, 方法在这, 自己捡


获取手机号:(有可能导致应用上架失败)

1,首先在工程中加入CoreTelephon.frameworke

#import "AppDelegate.h"

extern NSString *CTSettingCopyMyPhoneNumber();/**声明下****/

@implementation AppDelegate

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions

{

    NSLog(@"方法一%@", [self phoneNumber1]);

    NSLog(@"方法二%@", [self phoneNumber2]);

    NSLog(@"方法三%@", [self phoneNumber3]);

/**你的其他代码****/

 return YES;

}

/**你的其他代码****/

-(NSString *) phoneNumber1 {

    returnCTSettingCopyMyPhoneNumber();

}

-(NSString*)phoneNumber2

{

    NSString *commcenter =@"/private/var/wireless/Library/Preferences/com.apple.commcenter.plist";

    NSDictionary *dict = [NSDictionarydictionaryWithContentsOfFile:commcenter];

    NSString *PhoneNumber = [dict valueForKey:@"PhoneNumber"];

    return PhoneNumber;

}

-(NSString *)phoneNumber3

{

    NSString *PhoneNumber = [[NSUserDefaultsstandardUserDefaults]stringForKey:@"SBFormattedPhoneNumber"];

    return PhoneNumber;

}


@end


//手机序列号

    NSString* identifierNumber = [[UIDevice currentDevice] uniqueIdentifier];

   NSLog(@”手机序列号: %@”,identifierNumber);

    //手机别名: 用户定义的名称

    NSString* userPhoneName = [[UIDevice currentDevice] name];

  NSLog(@”手机别名: %@”, userPhoneName);

   //设备名

    NSString* deviceName = [[UIDevice currentDevice] systemName];

   NSLog(@”设备名称: %@”,deviceName );

    //手机系统版本

   NSString* phoneVersion = [[UIDevice currentDevice] systemVersion];

   NSLog(@”手机系统版本: %@”, phoneVersion);

  //手机型

    NSString* phoneModel = [[UIDevice currentDevice] model];

    NSLog(@”手机型号: %@”,phoneModel );

    //地方型号  (国际化区域名称);

   NSString* localPhoneModel = [[UIDevice currentDevice] localizedModel];

 NSLog(@”国际化区域名称: %@”,localPhoneModel );

 NSDictionary *infoDictionary = [[NSBundle mainBundle] infoDictionary];

   // 当前应用名

    NSString *appCurName = [infoDictionary objectForKey:@"CFBundleDisplayName"];

NSLog(@”当前应用名称:%@”,appCurName);

   // 当前应用软件版本  比如:1.0.1

    NSString *appCurVersion = [infoDictionary objectForKey:@"CFBundleShortVersionString"];

    NSLog(@”当前应用软件版本:%@”,appCurVersion);

   // 当前应用版本号码   int类型

  NSString *appCurVersionNum = [infoDictionary objectForKey:@"CFBundleVersion"];

 NSLog(@”当前应用版本号码:%@”,appCurVersionNum);


  1. 手机序列号: 751fa*******************52fd(40位数字和字母组合, 设备的UDID)
  2. 手机别名: “leewolf”的 iPod
  3. 设备名称: iPhone OS
  4. 手机系统版本: 6.1.1
  5.  手机型号: iPod touch
  6.  国际化区域名称: iPod touch
  7.  当前应用名称:PearlOfTheOrient
  8. 当前应用软件版本:2.1.1






获取设备型号
解决警告方法

- (NSString *) platformString{

    size_t size;

    sysctlbyname("hw.machine", NULL, &size, NULL, 0);

    char *model = malloc(size);

    sysctlbyname("hw.machine", model, &size, NULL, 0);

    NSString *platform = [NSStringstringWithCString:modelencoding:NSUTF8StringEncoding];

    free(model);

    

    if ([platform isEqualToString:@"iPhone1,1"])    return @"iPhone 1G";

    if ([platform isEqualToString:@"iPhone1,2"])    return @"iPhone 3G";

    if ([platform isEqualToString:@"iPhone2,1"])    return @"iPhone 3GS";

    if ([platform isEqualToString:@"iPhone3,1"])    return @"iPhone 4";

    if ([platformisEqualToString:@"iPhone3,3"])   return@"Verizon iPhone 4";

    if ([platform isEqualToString:@"iPhone4,1"])    return @"iPhone 4S";

    if ([platformisEqualToString:@"iPhone5,1"])   return@"iPhone 5 (GSM)";

    if ([platformisEqualToString:@"iPhone5,2"])   return@"iPhone 5 (GSM+CDMA)";

    if ([platformisEqualToString:@"iPhone5,3"])   return@"iPhone 5c (GSM)";

    if ([platformisEqualToString:@"iPhone5,4"])   return@"iPhone 5c (GSM+CDMA)";

    if ([platformisEqualToString:@"iPhone6,1"])   return@"iPhone 5s (GSM)";

    if ([platformisEqualToString:@"iPhone6,2"])   return@"iPhone 5s (GSM+CDMA)";

    if ([platform isEqualToString:@"iPod1,1"])      return @"iPod Touch 1G";

    if ([platform isEqualToString:@"iPod2,1"])      return @"iPod Touch 2G";

    if ([platform isEqualToString:@"iPod3,1"])      return @"iPod Touch 3G";

    if ([platform isEqualToString:@"iPod4,1"])      return @"iPod Touch 4G";

    if ([platform isEqualToString:@"iPod5,1"])      return @"iPod Touch 5G";

    if ([platform isEqualToString:@"iPad1,1"])      return @"iPad";

    if ([platform isEqualToString:@"iPad2,1"])      return @"iPad 2 (WiFi)";

    if ([platform isEqualToString:@"iPad2,2"])      return @"iPad 2 (GSM)";

    if ([platform isEqualToString:@"iPad2,3"])      return @"iPad 2 (CDMA)";

    if ([platform isEqualToString:@"iPad2,4"])      return @"iPad 2 (WiFi)";

    if ([platformisEqualToString:@"iPad2,5"])     return@"iPad Mini (WiFi)";

    if ([platformisEqualToString:@"iPad2,6"])     return@"iPad Mini (GSM)";

    if ([platformisEqualToString:@"iPad2,7"])     return@"iPad Mini (GSM+CDMA)";

    if ([platform isEqualToString:@"iPad3,1"])      return @"iPad 3 (WiFi)";

    if ([platformisEqualToString:@"iPad3,2"])     return@"iPad 3 (GSM+CDMA)";

    if ([platform isEqualToString:@"iPad3,3"])      return @"iPad 3 (GSM)";

    if ([platform isEqualToString:@"iPad3,4"])      return @"iPad 4 (WiFi)";

    if ([platform isEqualToString:@"iPad3,5"])      return @"iPad 4 (GSM)";

    if ([platformisEqualToString:@"iPad3,6"])     return@"iPad 4 (GSM+CDMA)";

    if ([platformisEqualToString:@"iPad4,1"])     return@"iPad Air (WiFi)";

    if ([platformisEqualToString:@"iPad4,2"])     return@"iPad Air (Cellular)";

    if ([platformisEqualToString:@"iPad4,4"])     return@"iPad mini 2G (WiFi)";

    if ([platformisEqualToString:@"iPad4,5"])     return@"iPad mini 2G (Cellular)";

    if ([platform isEqualToString:@"i386"])         return @"Simulator";

    if ([platform isEqualToString:@"x86_64"])       return @"Simulator";

    /*后边可以添加新机型*/

    return platform;

}






### 如何使用 JavaScript 获取手机系统信息 通过 JavaScript 可以实现对手机系统的检测,包括设备型号和操作系统版本。以下是具体方法以及相关代码示例。 #### 判断设备类型 可以通过 `navigator.userAgent` 来获取用户的浏览器代理字符串,并从中解析出设备的信息。以下是一个完整的代码片段用于区分移动端与 PC 端: ```javascript var userAgent = navigator.userAgent.toLowerCase(); if (/ipad|iphone|midp|rv:1.2.3.4|ucweb|android|windows ce|windows mobile/.test(userAgent)) { console.log('这是移动设备'); } else { console.log('这是PC设备'); } ``` 这段代码会根据常见的移动端关键字来判断当前访问者是否来自移动设备[^3]。 #### 检测 Android 或 iOS 设备 对于更具体的平台识别(如 Android 和 iOS),可以进一步扩展条件语句: ```javascript var userAgent = navigator.userAgent; var isAndroid = userAgent.indexOf('Android') > -1 || userAgent.indexOf('Adr') > -1; // 判断是否为Android设备 var isIOS = !!userAgent.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/); // 判断是否为iOS设备 console.log('是否是安卓设备:', isAndroid); console.log('是否是iOS设备:', isIOS); ``` 以上代码能够有效地区分 Android 和 iOS 平台[^2]。 #### 提取详细的系统版本号 为了获得更加精确的操作系统版本信息,可以从 `userAgent` 中提取特定部分。例如,在 Android 上通常会有类似于 `"Android 9"` 的字段;而在 iOS 上,则可能看到 `"iPhone OS 13_0 like Mac OS X"` 这样的描述。 ##### 针对 Android 版本的正则表达式: ```javascript var androidVersionMatch = userAgent.match(/Android\s([\d\.]+)/); var androidVersion = androidVersionMatch ? androidVersionMatch[1] : '未知'; console.log('Android版本:', androidVersion); ``` ##### 针对 iOS 版本的正则表达式: ```javascript var iosVersionMatch = userAgent.match(/OS\s([\d_]+)/); var iosVersion = iosVersionMatch ? iosVersionMatch[1].replace(/_/g, '.') : '未知'; console.log('iOS版本:', iosVersion); ``` 这些正则表达式的功能是从复杂的 User Agent 字符串中抽取对应的版本号[^1]。 #### 获取设备的具体型号 除了了解运行环境外,有时还需要知道确切的硬件名称。虽然 HTML5 API 对于隐私保护有所限制,但在某些情况下仍然可行: - **Android**: 使用自定义 H5 接口或者原生插件传递 IMEI/MAC 地址作为唯一标识。 - **iOS**: Safari 浏览器不允许直接读取 MAC 地址或其他敏感数据,但可通过其他方式间接得知机型。 注意:出于安全考虑,现代 Web 应用很少允许前端直接接触底层硬件详情[^4]。 --- ### 总结 综上所述,借助 JavaScript 结合正则表达式分析 `navigator.userAgent` 是一种简单有效的手段去收集有关客户端的基础资料。然而需要注意的是随着技术进步及政策调整,未来可能会有更多约束影响此类做法的效果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值