метод приложения (... continue userActivity ...), не вызванный в ios 13 - PullRequest
4 голосов
/ 03 октября 2019

Привет, я создаю приложение ios с помощью UniversalLink.

Universal Link работает нормально, но метод обратного вызова не вызывается.

Мой AppDelegate.swift находится ниже.

import UIKit

@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {

    var window: UIWindow?


    func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
        // Override point for customization after application launch.
        return true
    }


    func application(_ application: UIApplication,
                     willFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey : Any]? = nil) -> Bool {
        return true
    }

    // this method not called!!
    func application(_ application: UIApplication, continue userActivity: NSUserActivity, restorationHandler: @escaping ([UIUserActivityRestoring]?) -> Void) -> Bool {
        print("called")
        return true
    }
}

Метод вызывается в симуляторе iOS 12.

Итак, проблема возникает только в iOS 13.

Только в iOS13 эта ошибка печатается в консоли.

Не удается завершить BackgroundTask: фоновая задача с идентификатором 1 (0x1) не существует, или она может быть уже завершена. Перерыв в UIApplicationEndBackgroundTaskError () для отладки.

Итак, это может быть причиной проблемы.

Я бы очень признателен за помощь

1 Ответ

1 голос
/ 17 октября 2019

В моем случае я запустил новый проект на Xcode 11, который использует SceneDelegate, а также AppDelegate

Похоже, UniversalLinks (и, возможно, несколько других API) используют этот обратный вызов на SceneDelegate:

func scene(_ scene: UIScene, continue userActivity: NSUserActivity) { }

Вместо этого обратного вызова на AppDelegate:

func application(_ application: UIApplication, continue userActivity: NSUserActivity, restorationHandler: @escaping ([UIUserActivityRestoring]?) -> Void) -> Bool { }

Как только я реализовал один на SceneDelegate, все снова заработало как ожидалось. Я не пробовал, но я предполагаю, что если вы ориентируетесь на iOS 12 и ниже, вам может понадобиться реализовать оба метода.

Надеюсь, это поможет

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