Мое приложение - это прежде всего клиент для сервера, который действительно не имеет подключения к Интернету. Он подключается к кодеку Polycom и управляет видеовызовами между 2 конечными точками. Поэтому мое приложение может отправлять команды, такие как завершение вызова, увеличение громкости и т. Д.
Однако моя проблема заключается в следующем. Мне нужно какое-то уведомление, когда происходит входящий звонок и приложение не на переднем плане.
Так как на сервере нет доступа в интернет, APNS / push-уведомления для меня не подойдут. Я хотел сделать что-то вроде this . Который, кажется, поддерживает мой клиент, однако я не могу сделать предупреждение, так как мое приложение находится в фоновом режиме.
Итак, кроме основ того, как решить мою проблему, у меня есть следующие вопросы:
Могу ли я вывести свое приложение на передний план, используя технику, указанную в ссылке (что-то вроде того, что я делаю ниже). Из журналов видно, что этот код поддерживает мой код в рабочем состоянии. Я знаю, что мой цикл while неправильный, и, в конце концов, мне понадобится KVO, но независимо от этого это не должно повлиять на ответ. (Единственное, чего я не понимаю, так это то, что все мое приложение работает, а не только класс, который у меня есть в bcClient?)
- (void)applicationDidEnterBackground:(UIApplication *)application
{
[bcClient connect];
bgTask = [app beginBackgroundTaskWithExpirationHandler:expirationHandler];
// Start the long-running task and return immediately.
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
while(1) {
sleep(3);
NSLog(@"held join %d",bcClient.heldjoin);
if (bcClient.heldjoin == 602 || bcClient.heldjoin == 604 || bcClient.heldjoin == 513) {
NSLog(@"incoming call");
}
}
});
}
Если я не могу вывести свое приложение на передний план, то есть ли в любом случае push-уведомление локально (без необходимости в сервере APNS)?
У меня такое чувство, что все это невозможно, но я решил спросить.