获取iPhone常用名称(更新至iPhoneXR)

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
简介: 获取iPhone常用名称(更新至iPhoneXR)

请求中都带设备名称,这样很方便根据日志定位问题,不但开发定位方便,运维也定位问题方便。技术型运维主要靠看日志和查询数据库来定位问题,运维能根据日志解决简单的用户操作错误问题,就是运维不能解决问题,也能根据日志和数据库中的信息定位出这个问题属于后台还是客户端的问题,这样可以减少定位是谁的问题的时间,这样能达到对开发尽量隔离的效果。客户端的很多问题很多和操作系统,设备型号有关,最好的是客户发送设备型号给服务器,由服务器解析是那种设备的常用名称,后台很容易更新数据库就能实时更新对应常用名称,而客户端更新对应关系要发版本到苹果商店的。你问用户你的手机是不是iPhone9,3,没几个用户能知道是那种具体设备的,你要是问用户你的手机手机是不是iPhone7,估计用户大都知道的,所以这种专业术语和常用语的转换是很有必要的。若服务器暂时没有时间做,客户端也可以自己这种转换。

iTunes识别信息:

具体实现文件:

UIDevice+BitInfo.h文件

#import <UIKit/UIKit.h>
#include <sys/sysctl.h>

@interface UIDevice (BitInfo)

//系统型号
+ (NSString *)bitinfo_systemType;

@end

UIDevice+BitInfo.m文件

#import "UIDevice+BitInfo.h"

@implementation UIDevice (BitInfo)

+ (NSString *)bitinfo_systemType
{
    static NSString *deviceName = nil;
    if (!deviceName) {
        size_t size;
        sysctlbyname("hw.machine", NULL, &size, NULL, 0);
        char *name = malloc(size);
        sysctlbyname("hw.machine", name, &size, NULL, 0);
        deviceName = [NSString stringWithCString:name encoding:NSUTF8StringEncoding];
        deviceName = [self trunToGeneralName:deviceName];
        free(name);
    }
    return deviceName;
}

+ (NSString *)trunToGeneralName:(NSString *)name
{
    if ([name isEqualToString:@"iPhone1,1"])    return @"iPhone1G";
    else if ([name isEqualToString:@"iPhone1,2"])    return @"iPhone3G";
    else if ([name isEqualToString:@"iPhone2,1"])    return @"iPhone3GS";
    else if ([name isEqualToString:@"iPhone3,1"])    return @"iPhone4";
    else if ([name isEqualToString:@"iPhone3,2"])    return @"VerizoniPhone4";
    else if ([name isEqualToString:@"iPhone4,1"])    return @"iPhone4S";
    else if ([name isEqualToString:@"iPhone5,2"])    return @"iPhone5";
    else if ([name isEqualToString:@"iPhone5,1"]||[name isEqualToString:@"iPhone5,2"])    return @"iPhone5";
    else if ([name isEqualToString:@"iPhone5,3"]||[name isEqualToString:@"iPhone5,4"])    return @"iPhone5C";
    else if ([name isEqualToString:@"iPhone6,1"])    return @"iPhone5S";
    else if ([name isEqualToString:@"iPhone6,2"])    return @"iPhone5S";
    else if ([name isEqualToString:@"iPhone7,1"])    return @"iPhone6Plus";
    else if ([name isEqualToString:@"iPhone7,2"])    return @"iPhone6";
    else if ([name isEqualToString:@"iPhone8,1"])    return @"iPhone6s";
    else if ([name isEqualToString:@"iPhone8,4"])    return @"iPhoneSE";
    else if ([name isEqualToString:@"iPhone8,2"])    return @"iPhone6sPlus";
    else if ([name isEqualToString:@"iPhone8,4"])    return @"iPhoneSE";
    else if ([name isEqualToString:@"iPhone9,1"])    return @"iPhone7";
    else if ([name isEqualToString:@"iPhone9,3"])    return @"iPhone7";
    else if ([name isEqualToString:@"iPhone9,2"])    return @"iPhone7PLus";
    else if ([name isEqualToString:@"iPhone9,4"])    return @"iPhone7PLus";
    else if ([name isEqualToString:@"iPhone10,1"] || [name isEqualToString:@"iPhone10,4"])    return @"iPhone8";
    else if ([name isEqualToString:@"iPhone10,2"] || [name isEqualToString:@"iPhone10,5"])    return @"iPhone8PLus";
    else if ([name isEqualToString:@"iPhone10,3"] || [name isEqualToString:@"iPhone10,6"])    return @"iPhoneX";
    else if ([name isEqualToString:@"iPhone11,4"])    return @"iPhoneXS";
    else if ([name isEqualToString:@"iPhone11,6"])    return @"iPhoneXS Max";
    else if ([name isEqualToString:@"iPhone11,8"])    return @"iPhoneXR";
    
    else if ([name isEqualToString:@"i386"])         return @"Simulator";
    else if ([name isEqualToString:@"x86_64"])       return @"Simulator";
    return name;
}

@end

若有新的手机要增加新的设备名称和常用名称的对照关系的。


相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
目录
相关文章
|
6月前
|
开发工具
修改IP地址
【2月更文挑战第29天】修改IP地址。
77 2
|
4月前
|
Ubuntu Linux
修改服务器名称
修改服务器名称
80 0
|
6月前
|
边缘计算 安全 网络安全
隐藏服务器源IP怎么操作?
一篇文章看懂隐藏源IP!
146 0
|
监控 Java 开发者
主机映射名称修改|学习笔记
快速学习主机映射名称修改
主机映射名称修改|学习笔记
Euraka配置instanceid显示ip
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_34173549/article/details/80464707 ...
914 0
|
C#
C# 设置IP地址及设置自动获取IP
原文:C# 设置IP地址及设置自动获取IP 1.添加引用"system.Management" 2.添加using System.Management using System; using System.
2700 0