chenqiyang
2022-09-02 6a99d9bf65aa5878cb409945ed2bdbdcb916d047
HDLLinPhoneSDK£¨OC£©/HDLLinPhoneSDK/HDLLinphoneManager.m
@@ -268,7 +268,7 @@
       name:AVAudioSessionRouteChangeNotification
       object:nil];
      NSString *path = [[NSBundle mainBundle] pathForResource:@"msg" ofType:@"wav"];
      NSString *path = [[NSBundle mainBundle] pathForResource:@"msg" ofType:@"caf"];
      self.messagePlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:[NSURL URLWithString:path] error:nil];
      _sounds.vibrate = kSystemSoundID_Vibrate;
@@ -423,7 +423,8 @@
                 withDefault:@"sip.linphone.org"]
               .UTF8String) != 0) {
//            LOGI(@"Migrating proxy config to use AVPF");
            linphone_proxy_config_enable_avpf(proxy, TRUE);
//            linphone_proxy_config_enable_avpf(proxy, TRUE);
                linphone_proxy_config_set_avpf_mode(proxy,LinphoneAVPFEnabled);
         }
         proxies = proxies->next;
      }
@@ -521,11 +522,12 @@
    NSError *err = nil;
    
    if (![audioSession setActive:NO error:&err] && err) {
        NSLog(@"audio启动失败");
        err = nil;
    }
    if (!bAudioInputAvailable) {
        NSLog(@"设备不支持audio");
    }
}
@@ -705,6 +707,7 @@
    // set transport
    NSString *type = @"UDP";
//    NSString *type = @"TCP";
    linphone_proxy_config_set_route(
                                    config,
                                    [NSString stringWithFormat:@"%s;transport=%s", domain.UTF8String, type.lowercaseString.UTF8String]
@@ -767,12 +770,12 @@
#pragma mark Debug functions
+ (void)dumpLcConfig {
   if (theLinphoneCore) {
      LpConfig *conf = HDLLinphoneManager.instance.configDb;
      char *config = lp_config_dump(conf);
//      LOGI(@"\n%s", config);
      ms_free(config);
   }
//   if (theLinphoneCore) {
//      LpConfig *conf = HDLLinphoneManager.instance.configDb;
//      char *config = lp_config_dump(conf);
////      LOGI(@"\n%s", config);
//      ms_free(config);
//   }
}
#pragma mark - Logs Functions handlers
@@ -853,8 +856,10 @@
//   NSString *address = [FastAddressBook displayNameForAddress:addr];
    NSString *address=@"";
   if (state == LinphoneCallIncomingReceived) {
        HDLLinPhoneSDK.instance.IsIncomingReceivedCallState=true;
        [HDLLinphoneManager.instance enableMicro:true];
//      LinphoneCallLog *callLog = linphone_call_get_call_log(call);
//      NSString *callId = [NSString stringWithUTF8String:linphone_call_log_get_call_id(callLog)];
//      int index = [(NSNumber *)[_pushDict objectForKey:callId] intValue] - 1;
@@ -1011,7 +1016,7 @@
    if (state==LinphoneCallStateOutgoingProgress) {
        NSLog(@"禁止麦克风");
        [HDLLinphoneManager.instance enableMicro:false];
//        [HDLLinphoneManager.instance enableMicro:false];
    }
   // Disable speaker when no more call
   if ((state == LinphoneCallEnd || state == LinphoneCallError)) {
@@ -2134,18 +2139,26 @@
   linphone_core_cbs_set_user_data(cbs, (__bridge void *)(self));
//    NSLog(@"Creating linphonecore1:%@",_configDb);
    
    lp_config_set_int(_configDb, [@"app" UTF8String], [@"random_port_preference" UTF8String], 1);
//    lp_config_set_int(_configDb, [@"app" UTF8String], [@"random_port_preference" UTF8String], 1);
    linphone_config_set_int(_configDb, [@"app" UTF8String], [@"random_port_preference" UTF8String], 1);
    
   theLinphoneCore = linphone_factory_create_core_with_config_3(factory, _configDb, NULL);
   linphone_core_add_callbacks(theLinphoneCore, cbs);
   linphone_core_start(theLinphoneCore);
//   linphone_core_start(theLinphoneCore);
    //设置为随机端口
    LinphoneSipTransports transportValue = {-1, -1, -1, -1};
    // will also update the sip_*_port section of the config
    if (linphone_core_set_sip_transports(theLinphoneCore, &transportValue)) {
        LOGE(@"cannot set transport");
        NSLog(@"cannot set transport");
    }
    //
    linphone_core_set_network_reachable(theLinphoneCore,TRUE);
//
//    AudioStream*stream=audio_stream_new(ms_factory_new(), -1, -1, TRUE);
//    audio_stream_enable_gain_control(stream, TRUE);
    linphone_core_start(theLinphoneCore);
    
    [self removeAllAccounts];
   // Let the core handle cbs
@@ -2196,6 +2209,16 @@
   // start scheduler
   mIterateTimer =
      [NSTimer scheduledTimerWithTimeInterval:0.02 target:self selector:@selector(iterate) userInfo:nil repeats:YES];
//    //自动启动和接收video
//    NSLog(@"设置自动设置");
//    LinphoneVideoPolicy policy;
//    policy.automatically_initiate = true;
//    policy.automatically_accept =true;
//    linphone_core_set_video_policy(theLinphoneCore, &policy);
//    LinphoneVideoActivationPolicy policy;
//    linphone_video_activation_policy_set_automatically_accept(&policy,true);
}
//-(void)appWillTerminate{
@@ -2586,10 +2609,15 @@
}
- (void)migrateImportantFiles {
    if ([HDLLinphoneManager copyFile:[HDLLinphoneManager documentFile:@"linphonerc"] destination:[HDLLinphoneManager preferenceFile:@"linphonerc"] override:TRUE ignore:TRUE])
        [NSFileManager.defaultManager
         removeItemAtPath:[HDLLinphoneManager documentFile:@"linphonerc"]
         error:nil];
//    if ([HDLLinphoneManager copyFile:[HDLLinphoneManager documentFile:@"linphonerc"] destination:[HDLLinphoneManager preferenceFile:@"linphonerc"] override:TRUE ignore:TRUE])
//        [NSFileManager.defaultManager
//         removeItemAtPath:[HDLLinphoneManager documentFile:@"linphonerc"]
//         error:nil];
    //不使用配置文件的配置
    NSFileManager *fileManager = NSFileManager.defaultManager;
    NSError *error = nil;
    [fileManager removeItemAtPath:[HDLLinphoneManager preferenceFile:@"linphonerc"] error:&error];
    
    if ([HDLLinphoneManager copyFile:[HDLLinphoneManager documentFile:@"linphone_chats.db"] destination:[HDLLinphoneManager dataFile:@"linphone_chats.db"] override:TRUE ignore:TRUE])
        [NSFileManager.defaultManager
@@ -2621,7 +2649,7 @@
         LOGW(@"%@ already exists, simply removing %@ %@", dst, src,
              fileError ? fileError.localizedDescription : @"successfully");
      } else {
         [fileManager moveItemAtPath:src toPath:dst error:&fileError];
//         [fileManager moveItemAtPath:src toPath:dst error:&fileError];
         LOGI(@"%@ moving to %@ %@", dst, src, fileError ? fileError.localizedDescription : @"successfully");
      }
   }
@@ -2634,7 +2662,7 @@
      src = srcIpad;
   }
   NSString *dst = [HDLLinphoneManager preferenceFile:@"linphonerc"];
   [HDLLinphoneManager copyFile:src destination:dst override:FALSE ignore:FALSE];
//   [HDLLinphoneManager copyFile:src destination:dst override:FALSE ignore:FALSE];
}
- (void)overrideDefaultSettings {
@@ -2644,7 +2672,9 @@
//      factory = factoryIpad;
//   }
   NSString *confiFileName = [HDLLinphoneManager preferenceFile:@"linphonerc"];
   _configDb = lp_config_new_with_factory([confiFileName UTF8String], [factory UTF8String]);
    _configDb = linphone_config_new_with_factory([confiFileName UTF8String], [factory UTF8String]);
}
#pragma mark - Audio route Functions
@@ -2897,7 +2927,8 @@
      }
   }
   linphone_address_destroy(addr);
   linphone_call_params_destroy(lcallParams);
//   linphone_call_params_destroy(lcallParams);
    linphone_call_params_unref(lcallParams);
    
   return TRUE;
}
@@ -3089,19 +3120,33 @@
}
- (void)configureVbrCodecs {
   PayloadType *pt;
   int bitrate = lp_config_get_int(
               _configDb, "audio", "codec_bitrate_limit",
               kLinphoneAudioVbrCodecDefaultBitrate); /*default value is in linphonerc or linphonerc-factory*/
   const MSList *audio_codecs = linphone_core_get_audio_codecs(theLinphoneCore);
   const MSList *codec = audio_codecs;
   while (codec) {
      pt = codec->data;
      if (linphone_core_payload_type_is_vbr(theLinphoneCore, pt)) {
         linphone_core_set_payload_type_bitrate(theLinphoneCore, pt, bitrate);
      }
      codec = codec->next;
   }
//   PayloadType *pt;
//   int bitrate = linphone_config_get_int(
//               _configDb, "audio", "codec_bitrate_limit",
//               kLinphoneAudioVbrCodecDefaultBitrate); /*default value is in linphonerc or linphonerc-factory*/
//   const MSList *audio_codecs = linphone_core_get_audio_codecs(theLinphoneCore);
//   const MSList *codec = audio_codecs;
//   while (codec) {
//      pt = codec->data;
//      if (linphone_core_payload_type_is_vbr(theLinphoneCore, pt)) {
//         linphone_core_set_payload_type_bitrate(theLinphoneCore, pt, bitrate);
//      }
//      codec = codec->next;
//   }
    PayloadType *pt;
    int bitrate = linphone_config_get_int(
                    _configDb, "audio", "codec_bitrate_limit",
                    kLinphoneAudioVbrCodecDefaultBitrate); /*default value is in linphonerc or linphonerc-factory*/
    const MSList *audio_codecs = linphone_core_get_audio_payload_types(theLinphoneCore);
    const MSList *codec = audio_codecs;
    while (codec) {
        pt = codec->data;
        if (linphone_core_payload_type_is_vbr(theLinphoneCore, pt)) {
            linphone_core_set_payload_type_bitrate(theLinphoneCore, pt, bitrate);
        }
        codec = codec->next;
    }
}
+ (id)getMessageAppDataForKey:(NSString *)key inMessage:(LinphoneChatMessage *)msg {
@@ -3145,7 +3190,9 @@
- (void)lpConfigSetString:(NSString *)value forKey:(NSString *)key inSection:(NSString *)section {
   if (!key)
      return;
   lp_config_set_string(_configDb, [section UTF8String], [key UTF8String], value ? [value UTF8String] : NULL);
//   lp_config_set_string(_configDb, [section UTF8String], [key UTF8String], value ? [value UTF8String] : NULL);
    linphone_config_set_string(_configDb, [section UTF8String], [key UTF8String], value ? [value UTF8String] : NULL);
}
- (NSString *)lpConfigStringForKey:(NSString *)key {
   return [self lpConfigStringForKey:key withDefault:nil];
@@ -3159,7 +3206,8 @@
- (NSString *)lpConfigStringForKey:(NSString *)key inSection:(NSString *)section withDefault:(NSString *)defaultValue {
   if (!key)
      return defaultValue;
   const char *value = lp_config_get_string(_configDb, [section UTF8String], [key UTF8String], NULL);
//   const char *value = lp_config_get_string(_configDb, [section UTF8String], [key UTF8String], NULL);
    const char *value = linphone_config_get_string(_configDb, [section UTF8String], [key UTF8String], NULL);
   return value ? [NSString stringWithUTF8String:value] : defaultValue;
}
@@ -3169,7 +3217,7 @@
- (void)lpConfigSetInt:(int)value forKey:(NSString *)key inSection:(NSString *)section {
   if (!key)
      return;
   lp_config_set_int(_configDb, [section UTF8String], [key UTF8String], (int)value);
    linphone_config_set_int(_configDb, [section UTF8String], [key UTF8String], (int)value);
}
- (int)lpConfigIntForKey:(NSString *)key {
   return [self lpConfigIntForKey:key withDefault:-1];
@@ -3183,7 +3231,7 @@
- (int)lpConfigIntForKey:(NSString *)key inSection:(NSString *)section withDefault:(int)defaultValue {
   if (!key)
      return defaultValue;
   return lp_config_get_int(_configDb, [section UTF8String], [key UTF8String], (int)defaultValue);
   return linphone_config_get_int(_configDb, [section UTF8String], [key UTF8String], (int)defaultValue);
}
- (void)lpConfigSetBool:(BOOL)value forKey:(NSString *)key {