2013-03-14 5 views
0

Есть ли способ отменить регистрацию из SIP и перерегистрироваться, когда я хочу в Linphone?Как отменить регистрацию из SIP в linphone?

Я не могу найти функцию отмены регистрации.

Должен ли я полностью уничтожить ядро ​​линофона?
Или есть более мягкое решение?

В настоящее время я пытаюсь реализовать его в iOS, но позже это потребуется для дополнительных платформ.

спасибо.

ответ

0

Отказ от регистрации точно не указан. Удалите расширение sip, а затем вызовите регистры обновления. Теперь ваш софтфон незарегистрированный от глотка

[[NSUserDefaults standardUserDefaults] setObject:@"" forKey:@"username_preference"]; 


if ([[UIDevice currentDevice] respondsToSelector:@selector(isMultitaskingSupported)] 
     && [UIApplication sharedApplication].applicationState == UIApplicationStateBackground 
     && [[NSUserDefaults standardUserDefaults] boolForKey:@"disable_autoboot_preference"]) { 
     // autoboot disabled, doing nothing 
     return; 
    } else if ([SipManager instance] == nil) { 
     [self startApplication:caldelegate]; 

    } 

    [[LinphoneManager instance] becomeActive]; 

    if (callCenter == nil) { 
     callCenter = [[CTCallCenter alloc] init]; 
     callCenter.callEventHandler = ^(CTCall* call) { 
      // post on main thread 
      [self performSelectorOnMainThread:@selector(handleGSMCallInteration:) 
            withObject:callCenter 
           waitUntilDone:YES]; 
     }; 
    } 
    // check call state at startup 
    [self handleGSMCallInteration:callCenter]; 

    LinphoneCore* lc = [SipManager getLc]; 
    LinphoneCall* call = linphone_core_get_current_call(lc); 
    if (call == NULL) 
     return; 

    SipManager* instance = [SipManager instance]; 
    if (call == instance->currentCallContextBeforeGoingBackground.call) { 
     const LinphoneCallParams* params = linphone_call_get_current_params(call); 
     if (linphone_call_params_video_enabled(params)) { 
      linphone_call_enable_camera(
             call, 
             instance->currentCallContextBeforeGoingBackground.cameraIsEnabled); 
     } 
     instance->currentCallContextBeforeGoingBackground.call = 0; 
    } 
7
// Get the default proxyCfg in Linphone 
LinphoneProxyConfig* proxyCfg = NULL; 
linphone_core_get_default_proxy([LinphoneManager getLc], &proxyCfg); 

// To unregister from SIP 
linphone_proxy_config_edit(proxyCfg); 
linphone_proxy_config_enable_register(proxyCfg, false); 
linphone_proxy_config_done(proxyCfg); 

// And re-register when want 
linphone_proxy_config_edit(proxyCfg); 
linphone_proxy_config_enable_register(proxyCfg, true); 
linphone_proxy_config_done(proxyCfg); 
0

есть способ, как отменить с помощью Linphone.

Получить LinphoneProxyConfig

LinphoneProxyConfig* proxyCfg = NULL; 
linphone_core_get_default_proxy([LinphoneManager getLc], &proxyCfg); 

Чтобы удалить из SIP

linphone_proxy_config_edit(proxyCfg); /*start editing proxy configuration*/ 
linphone_proxy_config_enable_publish(proxyCfg, TRUE); 
linphone_proxy_config_set_publish_expires(proxyCfg, 0); 
linphone_proxy_config_enable_register(proxyCfg,FALSE); /*de-activate registration for this proxy config*/ 
linphone_proxy_config_done(proxyCfg); /*initiate REGISTER with expire = 0*/ 


while(linphone_proxy_config_get_state(proxyCfg) != LinphoneRegistrationCleared){ 
    NSLog(@"state = %i",linphone_proxy_config_get_state(proxyCfg)); 
    linphone_core_iterate(lc); /*to make sure we receive call backs before shutting down*/ 
    ms_usleep(100000); 
} 

Но это работает только тогда, когда приложение на переднем плане. В фоновом режиме, если ОС убивает ваше приложение по какой-либо причине, оно убито. Уведомлений нет. Вы не можете поймать сигнал SIGKILL. Посмотрите на страницу man для убийства.

0
  • На самом деле, нет опции «отмена регистрации» для сервера sip. Сервер местоположений будет обновляться до новейшей информации о регистре (включая ваш новейший IP-адрес).

  • Если вы говорите о том, как остановить linphone итерации регистрации и перерегистрироваться на другой SIP-сервер. Затем следуйте инструкциям @Mun Chun

0
LinphoneCore *lc = [LinphoneManager getLc]; 
LinphoneProxyConfig *config = linphone_core_get_default_proxy_config(lc); 
linphone_proxy_config_edit(config); 
linphone_proxy_config_set_expires(config, 0); 
linphone_proxy_config_done(config); 
Смежные вопросы