Как отключить видео / голосовой вызов, когда приложение находится в состоянии переднего плана / фона / уничтожения iOS 13. То же, что и приложение WhatsApp - PullRequest
0 голосов
/ 28 апреля 2020

У меня есть функция отключения видео / голосового вызова, когда приложение находится в состоянии переднего плана / фона / уничтожения. То же, что и голосовой вызов в приложении WhatsApp

Я использовал Callkit для отображения экрана входящего вызова по умолчанию, который будет запускаться с помощью VOIP pu sh.

Сценарий:

  1. Устройство A вызовы к устройству B
  2. устройство A отключает вызов
  3. Устройство B будет отключаться на переднем плане, а не в фоновом режиме и отключать состояния, потому что DidReceiveRemoteNotification метод делегата сработает только на переднем плане, а не в другом состояния

Пробовал с Silent Pu sh Уведомления Content-Available = 1 и удалили значения в ключе Alert при отправке pu sh полезной нагрузки. Тем не менее, он не работал в фоновом режиме и состоянии убийства

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

Пожалуйста, сообщите ценные предложения и дайте мне знать, если вам нужна дополнительная информация.

1 Ответ

0 голосов
/ 02 мая 2020

Важно понимать, что CallKit не обрабатывает само соединение вызова, а также не все возможные состояния вызова, даже если он участвует во всем процессе инициации и завершения вызова. Так часто вы используете какую-то форму реализации SIP.

В любом случае, у вас должна быть некоторая реализация соединения вызова и потоковой передачи аудио / видео.
iOS и CallKit не может этого сделать тривиально для вас из коробки.

Пока ваше приложение уведомляется о входящем звонке через уведомление pu sh, ваше приложение уведомляется о том, что удаленная сторона зависает через SIP или подобное. Но он не должен уведомляться о прекращении вызова через уведомление pu sh . На самом деле не было бы особого смысла использовать уведомление pu sh, поскольку в любом случае у вас уже есть постоянное соединение для вызова. Это текущее соединение обычно используется для сигнализации о том, что локальная или удаленная сторона вешает трубку, что в любом случае является функцией SIP.

Причина использования уведомлений pu sh в начале для входящего вызова Уведомление вместо постоянного SIP-соединения заключается в том, что оно экономит заряд батареи, в то время как никакое такое преимущество не приведет к использованию уведомлений pu sh также для сигнализации об окончании вызова. Поэтому было бы лучше, если бы вы не пытались использовать уведомления pu sh для сигнализации об окончании вызова, а вместо этого сообщение BYE SIP .

Затем ваш код обработки SIP должен уведомить iOS через CallKit, сообщая об окончании вызова через reportCall(with UUID: UUID, endedAt dateEnded: Date?, reason endedReason: CXCallEndedReason) и обрабатывать само фактическое разъединение вызова .

Так как iOS / CallKit не может и не будет обрабатывать ваше соединение / разъединение вызова, вы всегда нужно делать это самостоятельно или использовать библиотеку SIP, такую ​​как PJSIP, которая сделает для вас большую часть этого.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...