Сокет в фоновом состоянии iOS - PullRequest
0 голосов
/ 29 ноября 2018

Может быть, кто-нибудь когда-нибудь решит проблему со стабильным подключением к серверу, когда приложение находится в фоновом режиме?Мне нужно перенести аудио данные с сервера на клиентское приложение.Я знаю обо всех хакерских операциях для iOS, как поддерживать работоспособность приложения, но мне нужны легальные методы для решения этой проблемы.Может быть, у вас есть идеи?Я обнаружил, что могу отправить VoIP push-сообщение на устройство, которое активирует мое приложение, а затем установить tcp-соединение с моим сервером, но этот сокет будет работать примерно 30 секунд (как я вижу в журнале, каждые 3 секунды в приложении iOS запускается таймерданные на сервер) мне этого мало.

1 Ответ

0 голосов
/ 30 ноября 2018

Может быть, этот проект https://github.com/SmallSharpToolsOpenSource/Speakerbox кому-нибудь пригодится.И это видео https://www.youtube.com/watch?v=lXJ1LDjL4Os

И официальный ответ службы технической поддержки Apple:

PushKit - это то, как приложения voip могут надежно получать тихие уведомления, в то время как CallKit - это в основном фреймворк для приложений пользовательского интерфейса, приложения для VoIP могутиспользовать для уведомления пользователя о звонках.Обратите внимание, что в API нет НИКАКОГО прямого соединения - например, приложение voip может генерировать локальное уведомление (вместо использования CallKit) или просто ничего не делать и «полностью игнорировать» уведомление.Точно так же приложение voip может «подделать» вызов в любое время, просто сообщив CallKit, что произошел входящий вызов (наш пример кода для CallKit сделал именно это).

Все, что ваше приложение могло ранее сделать, когда оно получило трафик сокета VoIP, оно могло бы также сделать, когда оно получило уведомление PushKit.

Стандартные приложения VoIP фактически работают в двух совершенно не связанных друг с другом «режимах»:

1) Во время ожидания входящего вызова приложение приостанавливается до тех пор, пока «что-то» (PushKit ИЛИ VoIP-сокет) не разбудит приложение, чтобы сообщить ему о вызове.

2) Однаждывызов запущен, приложение имеет активный аудио сеанс и использует стандартное «фоновое аудио» поведение iOS, как и множество других аудио приложений (например, любое приложение потоковой музыки).

...