Вопрос по objective-c, ios – CTCallCenter - обработчик события вызова - в фоновом режиме

3

Что касается документации Apple, нет способа обработать состояние телефона, пока приложение приостановлено: http://developer.apple.com/library/ios/#DOCUMENTATION/NetworkingInternet/Reference/CTCallCenter/Reference/Reference.html

"While it is suspended, your application does not receive call events"

Это также верно для & quot; фона & quot; государство? (Поскольку фоновое состояние не совпадает с состоянием «приостановлено» приложения в отношении состояний, описанных в документации Apple)

http://developer.apple.com/library/ios/#DOCUMENTATION/iPhone/Conceptual/iPhoneOSProgrammingGuide/ManagingYourApplicationsFlow/ManagingYourApplicationsFlow.html

Я обрабатываю состояние телефона, используя следующий код:


CTCallCenter *callCenter = [[CTCallCenter alloc] init];

callCenter.callEventHandler=^(CTCall* call)
{

  //call state

};

Я добавил локальные уведомления в блок callEventHandler, чтобы проверить, будут ли получены события вызова, пока мое приложение находится в фоновом состоянии, но показывает, что блок не выполняется (мое приложение имеет фоновую поддержку и все полученные события (через TCP) обрабатываются правильно, пока приложение находится в фоновом режиме)

Любая помощь приветствуется!

Спасибо

Любой комментарий по этому поводу? Спасибо Daniel V
Я уже ответил на тот же вопрос, проверьте это:stackoverflow.com/questions/38696151/… presscorp

Ваш Ответ

3   ответа
1

in the background с использованиемcallEventHandler...

However, в соответствии сэта тема на форумах Apple DevВы можете проверитьcurrentCalls периодически в фоновом режиме, чтобы определить, выполняются ли вызовы.

Вот код, который вы должны использовать (чтобы проверять каждую секунду):

- (void)viewDidLoad {  
    [super viewDidLoad];

    _timer = [NSTimer scheduledTimerWithTimeInterval:1.0 target:self selector:@selector(phoneDetection) userInfo:nil repeats:YES];  
}  

- (void)phoneDetection {
    _callCenter = [[CTCallCenter alloc] init]; // Here is the important part : instanciating a call center each time you want to check !  

    [_callCenter setCallEventHandler:^(CTCall *call) {  
        NSLog(@"Call detected");  
    }];  

    NSLog(@"%@", _callCenter.currentCalls);  
}
4

callEventHandler когда приложение находится в фоновом режиме. Но когда приложение находится на переднем плане, все хорошо работает.

Сокет работает, потому что iOS обрабатывает его для вашего приложения и доставляет пакеты соответственно. Но для этого вам нужно создать VoIP-сокет и добавитьvoip вUIBackgroundModes на вашApp-Info.plist.

Error: User Rate Limit Exceeded
Error: User Rate Limit Exceeded
0

что некоторые приложения запускают беззвучные аудиофайлы в фоновом режиме, чтобы их нельзя было закрыть после 10 минут бездействия.

Bluetooth, местоположение и звук могут предотвратить полное уничтожение приложения.

Мое приложение может обнаруживать входящие и исходящие вызовы в фоновом режиме, потому что приложение остается в курсе обновлений местоположения. Мы использовали аудио / Bluetooth в прошлом.

Без какого-либо метода & quot; keepAlive & quot; ОС будет приостанавливать ваше приложение до тех пор, пока какой-либо внешний стимул не активирует его (push-уведомление, запуск пользователя и т. д.)

Error: User Rate Limit Exceeded
Error: User Rate Limit Exceeded

Похожие вопросы