2016-11-17 4 views
0

Я использую этот код для включения режима фона для моего приложения VOIP.Невозможно получить вызов, когда приложение находится в фоновом режиме

- (void)applicationDidEnterBackground:(UIApplication *)application{ 

[NSTimer timerWithTimeInterval:60.0 target:self selector:@selector(sipRegisterEveryTime) userInfo:nil repeats:YES]; 
[self performSelectorOnMainThread:@selector(keepAlive) withObject:nil waitUntilDone:YES]; 
[application setKeepAliveTimeout:KEEP_ALIVE_INTERVAL handler: 
^{ 
    [self performSelectorOnMainThread:@selector(keepAlive) withObject:nil waitUntilDone:YES]; 
}];} 

и код для KeepAlive является:

- (void)keepAlive{ 
int i; 
if (!pj_thread_is_registered()) 
{ 
    pj_thread_register("ipjsua", a_thread_desc, &a_thread); 
} 
/* Since iOS requires that the minimum keep alive interval is 600s,  * application needs to make sure that the account's registration  
* timeout is long enough.  */ 
for (i = 0; i < (int)pjsua_acc_get_count(); ++i) 
{ 
    if (pjsua_acc_is_valid(i)) 
    { 
     pjsua_acc_set_registration(i, PJ_TRUE); 
    } 
} 
pj_thread_sleep(15000);} 

Но я не получаю мое приложение будить если VOIP вызов прибыл в то время как мое приложение в фоновом режиме. info.plist имеют настройки для фона VOIP, установив «Приложение предоставляет услуги передачи голоса по IP» внутри «Необходимые фоновые режимы». Выполнены внутренние настройки параметров для VOIP. Есть ли еще одна вещь, которую мне нужно сделать? Я использую PJSIP-библиотеку для своего приложения VOIP.

+0

Проверьте, если транспорт использует протокол TCP, это только один будет работать в фоновом режиме. – azimov

ответ

0

Попробуйте добавить эти строки в ваших info.plist файлов

enter image description here

и относятся к этому StackOverFlow Answer

Смежные вопросы