iOS 13 не получает VoIP Push-уведомления в фоновом режиме - PullRequest
3 голосов
/ 26 сентября 2019

Я разрабатываю программный телефон в Swift, используя CallKit и PushKit.До iOS 13 уведомления VoIP работали отлично.Но после обновления iOS 13 мое приложение не получает push-уведомление VoIP, когда оно в фоновом режиме.На переднем плане didReceiveIncomingPushWith вызывается, но на заднем плане он не вызывается.

Как я могу решить эту проблему?

Код

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
    // Override point for customization after application launch.
    print("\(#function)")
    let voipPushResgistry = PKPushRegistry(queue: nil)
    voipPushResgistry.delegate = self
    voipPushResgistry.desiredPushTypes = [PKPushType.voIP]

    return true
}

func pushRegistry(_ registry: PKPushRegistry, didInvalidatePushTokenFor type: PKPushType) {
    print("\(#function) token invalidated")
}

func pushRegistry(_ registry: PKPushRegistry, didUpdate credentials: PKPushCredentials, for type: PKPushType) {
    let deviceToken = credentials.token.reduce("", {$0 + String(format: "%02X", $1) })
    print("\(#function) token is: \(deviceToken)")
}

func pushRegistry(_ registry: PKPushRegistry, didReceiveIncomingPushWith payload: PKPushPayload, for type: PKPushType, completion: @escaping () -> Void) {
    print("\(#function)")
    print("It worked..")
    if type == .voIP {
        print("Uygulama aktif")
    }
}

Спасибо.

Ответы [ 4 ]

3 голосов
/ 26 сентября 2019

Если вы создаете приложение с Xcode 11 (и iOS 13 SDK), PushKit больше не будет работать, если вам не удастся сообщить об этом в CallKit.

В iOS 13.0 и более поздних версиях, если вы потерпите неудачучтобы сообщить о звонке в CallKit, система завершит работу вашего приложения.Неудачный отчет о вызовах может привести к тому, что система прекратит доставку push-уведомлений VoIP в ваше приложение.Если вы хотите инициировать вызов VoIP без использования CallKit, зарегистрируйтесь для push-уведомлений, используя платформу UserNotifications вместо PushKit.

https://developer.apple.com/documentation/pushkit/pkpushregistrydelegate/2875784-pushregistry

3 голосов
/ 26 сентября 2019

Вы больше не можете получать уведомления VoIP и не сообщать о новом входящем звонке через CallKit при компиляции с iOS 13 SDK .

Проверить этот другой вопрос Я объяснил параметры, которые вы можете использовать для уведомлений, которые не должны оповещать о новых входящих вызовах.

1 голос
/ 27 сентября 2019

Ответ @mudassirzulfiqar на Github (Спасибо ему).После деинсталляции и повторной установки приложения я получил VoIP push-уведомление.Теперь я позвоню reportNewIncomingCall через didReceiveIncomingPushWith.

. Я выяснил проблему, так как на официальных форумах Apple было заявлено, что не завершение вызова приведет к блокировке вашего приложения после 3до 5 попыток, я думаю.Поэтому я думаю, что когда приложение блокируется с 2-3 попытками, оно перестает получать voip.

Вариант использования: я переустанавливал свое приложение и помещал свое приложение в фоновый режим и вызывался didReceiveIncomingPushWith.Но так как я не использую завершение завершения в нужное время, вероятно, снова я не собираюсь получать voip в следующий раз.И это всегда хорошо работает, когда приложение находится на переднем плане.

1 голос
/ 26 сентября 2019

Документация гласит:

Как правило, вы сохраняете объект push-реестра на время работы вашего приложения.

Попробуйте объявитьvoipPushResgistry как свойство AppDelegate вместо переменной функции application(didFinishLaunchingWithOptions).Может быть, это может помочь.

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