Ios Firebase动态链接在应用程序启动时不起作用

Ios Firebase动态链接在应用程序启动时不起作用,ios,swift,firebase,firebase-dynamic-links,Ios,Swift,Firebase,Firebase Dynamic Links,我创建了一个动态链接,单击该链接可打开应用程序。该链接还包含打开特定页面的键。这是我的密码: func application(_ application: UIApplication, continue userActivity: NSUserActivity, restorationHandler: @escaping ([Any]?) -> Void) -> Bool { return self.handleFirebaseDynamicLink(userActivit

我创建了一个
动态链接
,单击该链接可打开应用程序。该链接还包含打开特定页面的键。这是我的密码:

func application(_ application: UIApplication, continue userActivity: NSUserActivity, restorationHandler: @escaping ([Any]?) -> Void) -> Bool {
    return self.handleFirebaseDynamicLink(userActivity: userActivity)
}
当应用程序在后台运行时,这一点就起作用了。但是我还需要动态链接来检查
URL
,并在第一次启动时打开指定的页面。我能做些什么来解决这个问题

我在这里找到了一个公认的答案:
但不幸的是,我无法理解这意味着什么,我无法对这个答案发表评论

您仅从
应用程序(uuuquo:continue:restorationHandler:)
调用您的
handleFirebaseDynamicClink
方法

发件人:

应用程序(继续:restorationHandler:)

应用程序在收到与用户活动关联的数据时调用此方法。使用存储在NSUserActivity对象中的数据重新创建用户的活动。此方法是您更新应用程序以使其能够执行相关任务的机会

因此,只有当您的应用程序被
挂起
并且由于
nsseractivity
再次变为
活动时,才会调用此方法。如果您想在应用程序启动时处理数据,则需要使用另一种方法,即当您的应用程序从
未运行时变为
活动时调用该方法。这是
应用程序(uquo:didfishlaunchingwithoptions:)
方法。您可以阅读有关应用程序生命周期的更多信息

发件人:

应用程序(使用选项完成启动)

使用此方法完成应用程序的初始化并进行任何最终调整。此方法在发生状态恢复后,但在显示应用程序的窗口和其他UI之前调用

这就是你提供的答案中所说的。您只需在
AppDelegate
中使用此方法处理初始数据。您可以使用以下代码从
launchOptions
提取您的
nsserActivity

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
    let activityKey = NSString(string: "UIApplicationLaunchOptionsUserActivityKey")
    if let userActivityDict = launchOptions?[.userActivityDictionary] as? [NSObject : AnyObject],
       let userActivity = userActivityDict[key] as? NSUserActivity {
        return self.handleFirebaseDynamicLink(userActivity: userActivity)
    }
    return true
}

希望它能对您有所帮助。

您只需从
应用程序(uu:continue:restorationHandler:)
调用您的
handleFirebaseDynamicLink
方法

发件人:

应用程序(继续:restorationHandler:)

应用程序在收到与用户活动关联的数据时调用此方法。使用存储在NSUserActivity对象中的数据重新创建用户的活动。此方法是您更新应用程序以使其能够执行相关任务的机会

因此,只有当您的应用程序被
挂起
并且由于
nsseractivity
再次变为
活动时,才会调用此方法。如果您想在应用程序启动时处理数据,则需要使用另一种方法,即当您的应用程序从
未运行时变为
活动时调用该方法。这是
应用程序(uquo:didfishlaunchingwithoptions:)
方法。您可以阅读有关应用程序生命周期的更多信息

发件人:

应用程序(使用选项完成启动)

使用此方法完成应用程序的初始化并进行任何最终调整。此方法在发生状态恢复后,但在显示应用程序的窗口和其他UI之前调用

这就是你提供的答案中所说的。您只需在
AppDelegate
中使用此方法处理初始数据。您可以使用以下代码从
launchOptions
提取您的
nsserActivity

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
    let activityKey = NSString(string: "UIApplicationLaunchOptionsUserActivityKey")
    if let userActivityDict = launchOptions?[.userActivityDictionary] as? [NSObject : AnyObject],
       let userActivity = userActivityDict[key] as? NSUserActivity {
        return self.handleFirebaseDynamicLink(userActivity: userActivity)
    }
    return true
}
希望对你有帮助