获取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

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


相关实践学习
【涂鸦即艺术】基于云应用开发平台CAP部署AI实时生图绘板
【涂鸦即艺术】基于云应用开发平台CAP部署AI实时生图绘板
目录
相关文章
|
机器学习/深度学习 人工智能 算法
机器学习是什么?
机器学习是什么?
681 4
|
缓存 Java Serverless
Serverless 应用引擎常见问题之SAE设置超时时间如何解决
Serverless 应用引擎(Serverless Application Engine, SAE)是一种完全托管的应用平台,它允许开发者无需管理服务器即可构建和部署应用。以下是Serverless 应用引擎使用过程中的一些常见问题及其答案的汇总:
250 0
|
自然语言处理 监控 前端开发
飞猪微前端实践:统一运营工作台的解决方案
解决痛点,效能提升,飞猪运营工作台微前端实践力求用技术给业务带来差异化的价值。
飞猪微前端实践:统一运营工作台的解决方案
|
Java 应用服务中间件 Maven
Maven - 两种Tomcat插件的配置
Maven - 两种Tomcat插件的配置
1127 0
|
1月前
|
Java API 开发工具
百宝箱开放平台 ✖️ Java SDK
百宝箱提供Java SDK,支持开发者集成其开放能力。需先发布应用,准备Java 8+及Maven环境,通过添加依赖安装SDK,并初始化客户端调用对话型或生成型智能体,实现会话管理、消息查询与文件上传等功能。
1262 0
百宝箱开放平台 ✖️ Java SDK
|
7月前
|
Web App开发 Linux 数据安全/隐私保护
Apple Safari 18.4 - macOS 专属浏览器 (独立安装包下载)
Apple Safari 18.4 - macOS 专属浏览器 (独立安装包下载)
355 3
Apple Safari 18.4 - macOS 专属浏览器 (独立安装包下载)
|
7月前
|
存储 监控 网络协议
AnaTraf全流量分析系统基本功能
全流量分析系统是一种强大的网络监控与分析工具,可捕获、分析并存储网络中的所有流量。AnaTraf系统支持多种部署方式(桥接、镜像、TAP),确保不干扰现有网络架构,同时提供SSL加密保障数据安全传输。系统具备虚拟链路分析、循环存储、过滤捕获等功能,支持数据包回放和协议解码识别,助力深入分析。丰富的统计功能涵盖TOP N仪表板、MAC/ARP/VLAN分析等,同时集成威胁情报检测和溯源能力,强化网络安全防护。通过用户管理和访问控制,系统实现精细化管理,为网络性能优化与安全保障提供关键支持。
|
9月前
|
算法 数据安全/隐私保护
基于ADRC自抗扰算法的UAV飞行姿态控制系统simulink建模与仿真
本课题基于ADRC自抗扰算法,使用MATLAB2022a在Simulink中建模与仿真UAV飞行姿态控制系统,分别对偏航(Yaw)、俯仰(Pitch)和滚转(Roll)进行控制。ADRC通过扩展状态观测器(ESO)实时估计并抵消扰动,结合非线性反馈控制策略,减少了对精确模型的依赖,增强了系统的鲁棒性和适应性。仿真结果显示该方法能有效实现UAV的姿态控制,确保其在复杂环境中的稳定飞行和精确操控。
|
9月前
|
人工智能 语音技术
首个可保留情感的音频LLM!Meta重磅开源7B-Spirit LM,一网打尽音频+文本多模态任务
Meta AI 研究团队提出了一种名为 SpiRit-LM 的新型多模态语言模型,该模型能够处理文本和音频,实现两者无缝融合。SpiRit-LM 通过“交织”方法训练,具备多模态融合、情感保留和多任务学习能力,在自动语音识别、文本转语音等任务上表现出色。它有 Base 和 Expressive 两个版本,后者能更好地捕捉情感表达。研究团队在多个基准上测试了其性能,并探索了其在语音助手、内容创作、教育和音频编辑等领域的应用前景。
282 1