请求中都带设备名称,这样很方便根据日志定位问题,不但开发定位方便,运维也定位问题方便。技术型运维主要靠看日志和查询数据库来定位问题,运维能根据日志解决简单的用户操作错误问题,就是运维不能解决问题,也能根据日志和数据库中的信息定位出这个问题属于后台还是客户端的问题,这样可以减少定位是谁的问题的时间,这样能达到对开发尽量隔离的效果。客户端的很多问题很多和操作系统,设备型号有关,最好的是客户发送设备型号给服务器,由服务器解析是那种设备的常用名称,后台很容易更新数据库就能实时更新对应常用名称,而客户端更新对应关系要发版本到苹果商店的。你问用户你的手机是不是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
若有新的手机要增加新的设备名称和常用名称的对照关系的。