iOS,通用链接,Swift。 continueUserActivity不调用

时间:2016-12-16 19:45:10

标签: ios swift ios-universal-links

我正在开发iOS应用的通用链接实现。

这是我的一小部分AppDelegate:

private func application(_ application: UIApplication, openURL url: URL, sourceApplication: String?, annotation: AnyObject) -> Bool {
    DeepLinkHelpers.handleUniversalLink(url.absoluteString)
    return true
}

private func application(application: UIApplication, continueUserActivity userActivity: NSUserActivity, restorationHandler: ([AnyObject]?) -> Void) -> Bool {
    DeepLinkHelpers.handleUniversalLink(userActivity.webpageURL?.absoluteString)
    return true
}

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {

    signalRConnector.launch()

    NotificationCenter.default.addObserver(self, selector: #selector(AppDelegate.processRestartSignalRNotification(_:)), name: NSNotification.Name(rawValue: "restartSignalR"), object: nil)

    NotificationCenter.default.addObserver(self,                            selector: #selector(AppDelegate.reachabilityChanged(_:)),
                                           name: ReachabilityChangedNotification,
                                           object: reachability)

    do {
        try reachability.startNotifier()
    } catch {
        Logger.save(text: "Unable to start notifier")
    }
    return true
}

我已经处理了通用链接集成的所有其他步骤:

  1. 在我们的网络应用程序中发布了apple-app-site-association文件
  2. 在developers.apple.com
  3. 上切换关联域功能
  4. xcode中指定的关联域
  5. 检查目标成员资格的权利文件
  6. 说xcode要等到应用程序将手动启动(而不是 自动启动)
  7. 我正在做以下调试:

    1. 连接ipad
    2. 在xcode中启动项目
    3. 在ipad中打开日历并单击某个事件中包含的链接。 链接具有以下格式:app.domain.com /#/ 123456789
    4. Ipad打开app但是continueUserActivity没有调用,我不能 处理来自网址的代码,以便导航到应用内的精确状态。
    5. 根据文档,应该执行continueUserActivity。当应用程序在后台运行且应用程序未运行时,它不会同时执行。

      提前谢谢!任何帮助表示赞赏。

3 个答案:

答案 0 :(得分:5)

从iOS 12,Swift 4.2和Xcode 10开始,Apple再次将方法签名(restoreHandler的类型)更改为

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

答案 1 :(得分:0)

我怀疑这是因为您已将continueUserActivity功能标记为private。我从未见过这一点,事实上,当我尝试时,Swift 3实际上会出错。似乎没有任何以on all of GitHub方式构建的代码示例。

我建议删除private范围。

答案 2 :(得分:0)

在2019年,这对我有所帮助(来自本指南:SHGetKnownFolderPath()):

func application(_ application: UIApplication, continue userActivity: NSUserActivity, restorationHandler: @escaping ([Any]?) -> Void) -> Bool {
    print("Continue User Activity called: ")
    if userActivity.activityType == NSUserActivityTypeBrowsingWeb {
        let url = userActivity.webpageURL!
        print(url.absoluteString)
        //handle url and open whatever page you want to open.
    }
    return true
}