Utils: use device name instead of identifier in user-agent

This commit is contained in:
Gautier Pelloux-Prayer 2016-05-09 14:24:40 +02:00
parent 9689a0f12e
commit 442c7bca7a
3 changed files with 116 additions and 8 deletions

View file

@ -1360,13 +1360,14 @@ static LinphoneCoreVTable linphonec_vtable = {
NSString *zrtpSecretsFileName = [LinphoneManager documentFile:@"zrtp_secrets"];
NSString *chatDBFileName = [LinphoneManager documentFile:kLinphoneInternalChatDBFilename];
NSMutableString *device = [[NSMutableString alloc]
NSString *device = [[NSMutableString alloc]
initWithString:[NSString
stringWithFormat:@"%@_%@_iOS%@",
[NSBundle.mainBundle objectForInfoDictionaryKey:@"CFBundleDisplayName"],
[LinphoneUtils deviceName], UIDevice.currentDevice.systemVersion]];
[device stringByReplacingOccurrencesOfString:@"," withString:@"."];
[device stringByReplacingOccurrencesOfString:@" " withString:@"."];
[LinphoneUtils deviceModelIdentifier],
UIDevice.currentDevice.systemVersion]];
device = [device stringByReplacingOccurrencesOfString:@"," withString:@"."];
device = [device stringByReplacingOccurrencesOfString:@" " withString:@"."];
linphone_core_set_user_agent(theLinphoneCore, device.UTF8String, LINPHONE_IOS_VERSION);
_contactSipField = [self lpConfigStringForKey:@"contact_im_type_value" withDefault:@"SIP"];
@ -1399,7 +1400,7 @@ static LinphoneCoreVTable linphonec_vtable = {
if (strcmp(FRONT_CAM_NAME, cam) == 0) {
_frontCamId = cam;
// great set default cam to front
linphone_core_set_video_device(theLinphoneCore, cam);
linphone_core_set_video_device(theLinphoneCore, _frontCamId);
}
if (strcmp(BACK_CAM_NAME, cam) == 0) {
_backCamId = cam;

View file

@ -30,7 +30,7 @@
+ (void)buttonFixStates:(UIButton*)button;
+ (void)buttonMultiViewAddAttributes:(NSMutableDictionary*)attributes button:(UIButton*)button;
+ (void)buttonMultiViewApplyAttributes:(NSDictionary*)attributes button:(UIButton*)button;
+ (NSString *)deviceName;
+ (NSString *)deviceModelIdentifier;
+ (LinphoneAddress *)normalizeSipOrPhoneAddress:(NSString *)addr;

View file

@ -332,11 +332,118 @@
return nil;
}
+ (NSString *)deviceName {
+ (NSString *)deviceModelIdentifier {
struct utsname systemInfo;
uname(&systemInfo);
return [NSString stringWithCString:systemInfo.machine encoding:NSUTF8StringEncoding];
NSString *machine = [NSString stringWithCString:systemInfo.machine encoding:NSUTF8StringEncoding];
if ([machine isEqual:@"iPad1,1"])
return @"iPad";
else if ([machine isEqual:@"iPad2,1"])
return @"iPad 2";
else if ([machine isEqual:@"iPad2,2"])
return @"iPad 2";
else if ([machine isEqual:@"iPad2,3"])
return @"iPad 2";
else if ([machine isEqual:@"iPad2,4"])
return @"iPad 2";
else if ([machine isEqual:@"iPad3,1"])
return @"iPad 3";
else if ([machine isEqual:@"iPad3,2"])
return @"iPad 3";
else if ([machine isEqual:@"iPad3,3"])
return @"iPad 3";
else if ([machine isEqual:@"iPad3,4"])
return @"iPad 4";
else if ([machine isEqual:@"iPad3,5"])
return @"iPad 4";
else if ([machine isEqual:@"iPad3,6"])
return @"iPad 4";
else if ([machine isEqual:@"iPad4,1"])
return @"iPad Air";
else if ([machine isEqual:@"iPad4,2"])
return @"iPad Air";
else if ([machine isEqual:@"iPad4,3"])
return @"iPad Air";
else if ([machine isEqual:@"iPad5,3"])
return @"iPad Air 2";
else if ([machine isEqual:@"iPad5,4"])
return @"iPad Air 2";
else if ([machine isEqual:@"iPad6,7"])
return @"iPad Pro 12.9";
else if ([machine isEqual:@"iPad6,8"])
return @"iPad Pro 12.9";
else if ([machine isEqual:@"iPad6,3"])
return @"iPad Pro 9.7";
else if ([machine isEqual:@"iPad6,4"])
return @"iPad Pro 9.7";
else if ([machine isEqual:@"iPad2,5"])
return @"iPad mini";
else if ([machine isEqual:@"iPad2,6"])
return @"iPad mini";
else if ([machine isEqual:@"iPad2,7"])
return @"iPad mini";
else if ([machine isEqual:@"iPad4,4"])
return @"iPad mini 2";
else if ([machine isEqual:@"iPad4,5"])
return @"iPad mini 2";
else if ([machine isEqual:@"iPad4,6"])
return @"iPad mini 2";
else if ([machine isEqual:@"iPad4,7"])
return @"iPad mini 3";
else if ([machine isEqual:@"iPad4,8"])
return @"iPad mini 3";
else if ([machine isEqual:@"iPad4,9"])
return @"iPad mini 3";
else if ([machine isEqual:@"iPad5,1"])
return @"iPad mini 4";
else if ([machine isEqual:@"iPad5,2"])
return @"iPad mini 4";
else if ([machine isEqual:@"iPhone1,1"])
return @"iPhone";
else if ([machine isEqual:@"iPhone1,2"])
return @"iPhone 3G";
else if ([machine isEqual:@"iPhone2,1"])
return @"iPhone 3GS";
else if ([machine isEqual:@"iPhone3,1"])
return @"iPhone3,2 iPhone3,3 iPhone 4";
else if ([machine isEqual:@"iPhone4,1"])
return @"iPhone 4S";
else if ([machine isEqual:@"iPhone5,1"])
return @"iPhone5,2 iPhone 5";
else if ([machine isEqual:@"iPhone5,3"])
return @"iPhone5,4 iPhone 5c";
else if ([machine isEqual:@"iPhone6,1"])
return @"iPhone6,2 iPhone 5s";
else if ([machine isEqual:@"iPhone7,2"])
return @"iPhone 6";
else if ([machine isEqual:@"iPhone7,1"])
return @"iPhone 6 Plus";
else if ([machine isEqual:@"iPhone8,1"])
return @"iPhone 6s";
else if ([machine isEqual:@"iPhone8,2"])
return @"iPhone 6s Plus";
else if ([machine isEqual:@"iPhone8,4"])
return @"iPhone SE";
else if ([machine isEqual:@"iPod1,1"])
return @"iPod touch";
else if ([machine isEqual:@"iPod2,1"])
return @"iPod touch 2G";
else if ([machine isEqual:@"iPod3,1"])
return @"iPod touch 3G";
else if ([machine isEqual:@"iPod4,1"])
return @"iPod touch 4G";
else if ([machine isEqual:@"iPod5,1"])
return @"iPod touch 5G";
else if ([machine isEqual:@"iPod7,1"])
return @"iPod touch 6G";
// none matched: cf https://www.theiphonewiki.com/wiki/Models for the whole list
LOGW(@"%s: Oops, unknown machine %@... consider completing me!", __FUNCTION__, machine);
return machine;
}
+ (LinphoneAddress *)normalizeSipOrPhoneAddress:(NSString *)value {