打开 iOS 应用程序后“continue userActivity:”方法未被调用 - Firebase 动态链接

Mah*_*dra 3 ios appdelegate swift firebase-dynamic-links

我已成功集成 Firebase 动态链接,当我点击动态链接时,我的应用程序正在打开。

我面临的问题是从动态链接打开应用程序后,continue userActivity:应该调用方法,但没有任何反应。

我已经检查了所有可能的事情,但没有意识到这个问题。

我已经为此搜索了 SO,但没有一个答案对我有帮助。

我的代码:

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

  GIDSignIn.sharedInstance().clientID = kGoogleSignInClientId
  FBSDKApplicationDelegate.sharedInstance().application(application, didFinishLaunchingWithOptions: launchOptions)

 // DynamicLinks.performDiagnostics(completion: nil)

  FirebaseApp.configure()

  return true
}

func application(_ app: UIApplication, open url: URL, options: [UIApplicationOpenURLOptionsKey : Any] = [:]) -> Bool {

  if url.absoluteString.contains(kFBAppId) {

    return FBSDKApplicationDelegate.sharedInstance().application(app, open: url, options: options)

  }

  if let dynamicLink = DynamicLinks.dynamicLinks().dynamicLink(fromCustomSchemeURL: url) {
    print(dynamicLink.url ?? URL(string: "test") as Any)
    return true
  }

    return GIDSignIn.sharedInstance().handle(url, sourceApplication: options[.sourceApplication] as? String, annotation: options[.annotation])

}

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

  //This method is not getting called
}
Run Code Online (Sandbox Code Playgroud)

Mah*_*dra 6

我不知道他们是否保留了他们的文件。是否是最新的。

我刚刚从 Google 的官方 Firebase 动态链接文档中复制粘贴了代码。

为什么continue userActivity:方法没有被调用?

原因是(见下面方法的区别)

从谷歌文档复制粘贴。- 错了

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

}

我写了这个(没有从谷歌文档复制粘贴。) - 更正一个

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

}

我已经做出了大胆的区别。

这是我尝试了好几个小时的方法。盲目相信google doc真的很让我沮丧。:-|

希望这可以帮助其他人。

  • 但即使xcode自动完成如下: func application(_ application: UIApplication, continue userActivity: NSUserActivity,restorationHandler: @escaping ([UIUserActivityRestoring]?) -> Void) -> Bool (2认同)

Meo*_*ute 5

除了 AppDelegate.swift 之外,使用单独的 SceneDelegate.swift 的其他答案:AppDelegate 中的此方法 >

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

}
Run Code Online (Sandbox Code Playgroud)

现在在 SceneDelegate >

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

}
Run Code Online (Sandbox Code Playgroud)

  • 我有点太兴奋了。SceneDelegate 方法似乎仅当应用程序已在后台运行时才会被触发。您是否知道在冷启动的情况下在哪里接收深层链接(不一定是在全新安装后)。如果有 SceneDelegate,AppDelegate 中的方法也不会再被调用。 (2认同)