IOS - лучшая практика для отправки уведомлений о входящих звонках в VoIP-приложении

Первым решением, которое я могу придумать для уведомления о входящем вызове, является служба Apple Push Notification. Однако это не гарантируется.. существует относительно высокая вероятность того, что он может потеряться.. и в приложении VoIP уведомление о входящем звонке настолько важно, что я не могу позволить себе пропустить его слишком часто...

Таким образом, я последовал советам и включил фоновый режим, чтобы сохранить приложение в ожидании и прослушивать приглашение на входящий вызов. По правде, я должен просто показать локальное уведомление, когда приложение получит приглашение на входящий вызов. Это работает очень хорошо, когда приложение находится в фоновом режиме/неактивно. ОДНАКО, когда пользователь убивает приложение вручную, никакой код не будет выполнен, поэтому приложение не получит приглашение на входящий вызов в таком состоянии... И из-за этого конкретного сценария мне все равно придется полагаться на удаленное push-уведомление.

То, что я пытаюсь достичь, - это... преждевременное получение удаленного уведомления, если оно поступит, а затем больше не показывать локальное уведомление. Если он потерян, тогда вы увидите локальное уведомление, чтобы пользователь всегда получал уведомление.

Проблема в том, что... У меня нет способа узнать, прибыло ли удаленное уведомление.

Я хочу знать, что лучше всего обрабатывать уведомления о входящих звонках для VoIP-приложения?

Ответ 1

Из appleDoc Документы разработчика Apple. (Обновленная ссылка)

В iOS 8 и более поздних версиях приложения для передачи голоса по IP (VoIP) регистрируются для уведомлений UIRemoteNotificationTypeVoIP вместо использования этого метода. Использование push-уведомлений устраняет необходимость использования обработчика тайм-аута для регистрации в службе VoIP. Вместо этого, когда поступают вызовы для пользователя, служба VoIP отправляет VoIP-уведомление на устройство пользователя. После получения этого уведомления устройство запускает или пробуждает приложение по мере необходимости, чтобы оно могло обрабатывать входящий вызов.

Ответ 2

Просто играйте очень длинный звук, когда приходит APNS.