Асинхронная задача после DidReceiveIncomingPushWithPayload и перед reportNewIncomingCallIOS

Программируем под IOS
Ответить
Anonymous
 Асинхронная задача после DidReceiveIncomingPushWithPayload и перед reportNewIncomingCall

Сообщение Anonymous »

Когда я получаю уведомление PushKit, мне нужно немедленно вызвать CXProvider().reportNewIncomingCall, иначе приложение будет закрыто с сообщением ниже.
Killing app because it never posted an incoming call
to the system after receiving a PushKit VoIP push.

Есть ли способ запустить асинхронную задачу после получения уведомления и вызвать CXProvider().reportNewIncomingCall, когда асинхронная задача будет выполнена? Я пытался использовать фоновую задачу, чтобы избежать закрытия приложения, но это не сработало. Вот что я пробовал:
var backgroundTaskID: UIBackgroundTaskIdentifier = .invalid

func pushRegistry(_ registry: PKPushRegistry, didReceiveIncomingPushWith payload: PKPushPayload, for type: PKPushType, completion: @escaping () -> Void) {
// Start a background task to extend execution time
backgroundTaskID = UIApplication.shared.beginBackgroundTask(withName: "HandleVoIPPush") {
// End task if time expires
UIApplication.shared.endBackgroundTask(self.backgroundTaskID)
self.backgroundTaskID = .invalid
}

// Start your async task
asyncTask { _ in
provider.reportNewIncomingCall(with: callUUID, update: update) { _ in }

// End the background task
UIApplication.shared.endBackgroundTask(self.backgroundTaskID)
self.backgroundTaskID = .invalid

// Call the completion handler to let the system know you're done
completion()
}
}


Подробнее здесь: https://stackoverflow.com/questions/793 ... newincomin
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «IOS»