From 442c7bca7acdf3a0aedfea957f7b46c4bb2dc927 Mon Sep 17 00:00:00 2001 From: Gautier Pelloux-Prayer Date: Mon, 9 May 2016 14:24:40 +0200 Subject: [PATCH] Utils: use device name instead of identifier in user-agent --- Classes/LinphoneManager.m | 11 ++-- Classes/Utils/Utils.h | 2 +- Classes/Utils/Utils.m | 111 +++++++++++++++++++++++++++++++++++++- 3 files changed, 116 insertions(+), 8 deletions(-) diff --git a/Classes/LinphoneManager.m b/Classes/LinphoneManager.m index 3a4af019d..f08633039 100644 --- a/Classes/LinphoneManager.m +++ b/Classes/LinphoneManager.m @@ -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; diff --git a/Classes/Utils/Utils.h b/Classes/Utils/Utils.h index 2f337533c..f0ed72d63 100644 --- a/Classes/Utils/Utils.h +++ b/Classes/Utils/Utils.h @@ -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; diff --git a/Classes/Utils/Utils.m b/Classes/Utils/Utils.m index e29bdcccb..3ad1371c2 100644 --- a/Classes/Utils/Utils.m +++ b/Classes/Utils/Utils.m @@ -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 {