iOS 上的通用 link 应用程序打开应用程序但不调用处理程序

Universal link on iOS app opens app but doesn't call handler

我有一个通用 link 的应用程序。当我在另一个应用程序中点击 link 时,它会打开我的应用程序(除了在 Safari 中,它会打开网页,但会在顶部显示一个小横幅以在应用程序中打开,点击“打开”会打开我的应用程序)。

我的问题是我的应用程序中没有执行任何代码。

我已经把示例代码从 Apple's documentation:

func application(_ application: UIApplication,
                 continue userActivity: NSUserActivity,
                 restorationHandler: @escaping ([UIUserActivityRestoring]?) -> Void) -> Bool
{
    // Get URL components from the incoming user activity.
    guard userActivity.activityType == NSUserActivityTypeBrowsingWeb,
        let incomingURL = userActivity.webpageURL,
        let components = NSURLComponents(url: incomingURL, resolvingAgainstBaseURL: true) else {
        return false
    }


    // Check for specific URL components that you need.
    guard let path = components.path,
    let params = components.queryItems else {
        return false
    }
    print("path = \(path)")


    if let albumName = params.first(where: { [=12=].name == "albumname" } )?.value,
        let photoIndex = params.first(where: { [=12=].name == "index" })?.value {


        print("album = \(albumName)")
        print("photoIndex = \(photoIndex)")
        return true


    } else {
        print("Either album name or photo index missing")
        return false
    }
}

我没有场景支持(所以只有 AppDelegate)。

现在我在 AppDelegate 中到处都设置了打印和断点(特别是在上面代码的函数中,以及在“应用程序 handleOpen url”中)。 当我在另一个应用程序中点击 URL 时,它会带到我的应用程序,但唯一执行的方法是 applicationDidBecomeActive.

换句话说,我无法从 URL 获取任何引导用户访问我的应用程序的信息...知道为什么吗?

这似乎是一个 apple bug。

获取调用方法的解决方案是在它之前添加:

@objc(application:continueUserActivity:restorationHandler:)