Исходное изображение iOS не работает
Сейчас я пишу приложение VoIP для iOS, но когда приложение находится в фоновом режиме, оно перестает принимать вызовы. Когда приложение снова активируется, все сообщения в очереди начинают обрабатываться.
Следующее - это то, что я сделал.
При создании приложения я добавляю Voice to IP, а также Audio и AirPlay в файл plist. Затем я отмечаю соединение с websocket с NetworkServiceTypeVoIP
, как вы можете видеть здесь.
Я не установил обработчик тайм-аута keep keep keep, потому что регистрация не имеет значения, если приложение не проснется, чтобы ответить на вызов. Любая помощь будет принята с благодарностью.
Следует отметить, что это мой первый проект Swift, и я не очень хорошо знаком с платформой iOS.
Ответы
Ответ 1
Чтобы разрешить работу вашего приложения в фоновом режиме, вам нужно включить флаг Voice over IP ON (Путь: Перейти к цели → возможности → Режимы фона). как показано ниже.
![enter image description here]()
И добавьте следующий код в свой проект для поддержки в фоновом режиме:
Шаг 1: Объявить __block UIBackgroundTaskIdentifier bgTask как глобальную переменную.
Шаг 2: Чтобы добавить следующий код в applicationDidEnterBackground.
- (void)applicationDidEnterBackground:(UIApplication *)application {
bgTask = [application beginBackgroundTaskWithExpirationHandler:^{
bgTask = UIBackgroundTaskInvalid;
}];
}
Шаг 3: Остановите обработчик фоновых задач, когда приложения заходят в режим переднего плана.
- (void)applicationWillEnterForeground:(UIApplication *)application {
// Called as part of the transition from the background to the active state; here you can undo many of the changes made on entering the background.
[[UIApplication sharedApplication] endBackgroundTask:bgTask];
}
Ответ 2
Взгляните на Apple documentation, вас, вероятно, интересует UIBackgroundModes=voip
.
UPD:
Из документации:
Чтобы настроить приложение VoIP, вы должны сделать следующее:
- Включить поддержку Voice over IP в разделе "Режимы фона" вкладку "Возможности" в вашем проекте Xcode. (Вы также можете включить это поддержки, включив ключ
UIBackgroundModes
с значением voip в файл приложений Info.plist.) - Настройте один из сокетов приложений для Использование VoIP.
- Перед тем, как перейти на задний план, вызовите
setKeepAliveTimeout:handler:
метод установки обработчика выполняются периодически. Ваше приложение может использовать этот обработчик для сервисное соединение. - Настройка сеанса аудио для обработки переходов от активного использования.
Ответ 3
Вы можете найти свой ответ или какой-нибудь ключ → здесь < -
Собственно, нужно исследовать следующее:
applicationDidEnterBackground
beginBackgroundTaskWithExpirationHandler