Я использую набор для звонков и VoIP-звонки.У меня есть случай, когда пользователь находится в состоянии вызова, и пользователь завершает приложение из фона, затем я хотел выполнить некоторые небольшие операции, такие как выход из вызывающего канала, сохранение вызова и т. Д.
Я попытался выполнить следующее, но, похоже, у меня не работает,
var backgroundTask: UIBackgroundTaskIdentifier = .invalid
func applicationWillTerminate(_ application: UIApplication) {
// Called when the application is about to terminate. Save data if appropriate. See also applicationDidEnterBackground:.
// Saves changes in the application's managed object context before the application terminates.
self.saveContext()
if self.status == .inCall {
self.backgroundTask = UIApplication.shared.beginBackgroundTask(expirationHandler: {[unowned self] in
NSLog("BACKGROUND TIME REMAINING %f", UIApplication.shared.backgroundTimeRemaining)
UIApplication.shared.endBackgroundTask(self.backgroundTask)
self.backgroundTask = .invalid
})
if let topVC = UIApplication.shared.topMostViewController as? CallingController {
DispatchQueue.main.asyncAfter(deadline: .now() + 2, execute: {// this line for just testing
topVC.sendText(string: Constants.ChannelMessages.endCall)
DispatchQueue.main.asyncAfter(deadline: .now() + 2, execute: {// after two seconds leave the channel and save record
topVC.leaveChannelSaveRecord(completion: {
AppDelegate.shared.callManager.endCall(call: topVC.call)
// Let's wait for 2 seconds and end background task
// DispatchQueue.main.asyncAfter(deadline: .now() + 2, execute: {
UIApplication.shared.endBackgroundTask(self.backgroundTask)
self.backgroundTask = .invalid
// })
})
})
})
}
}
}
Я уже включил следующее
Буду признателен за любую помощь или предложение
спасибо ваванс