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

问题描述 投票:0回答:2

我已成功集成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
}
ios swift appdelegate firebase-dynamic-links
2个回答
1
投票

要在应用程序中处理通用链接,首先必须在应用程序中添加带有支持URL的权利文件。

为此,打开Xcode,选择您的项目,转到功能并找到关联域部分。

enter image description here

启用此功能,并为您的应用支持的每个域添加一个条目,前缀为applinks:

现在,您必须在AppDelegate文件中实现应用程序(_:continue:restorationHandler :)。当用户点击您支持的链接时,将调用此方法。


1
投票

谷歌的失误。

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

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

为什么不调用continue userActivity:方法?

原因是(见以下方法的差异)

从谷歌文档粘贴的副本。 - 错了

func应用程序(_应用程序:UIApplication,继续userActivity:NSUserActivity,restorationHandler:@escaping([UIUserActivityRestoring]?) - > Void) - > Bool {

}

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

func应用程序(_ application:UIApplication,continue userActivity:NSUserActivity,restorationHandler:@escaping([Any]?) - > Void) - > Bool {

}

我大胆地区别了。

这就是我多次尝试的原因。盲目信任谷歌文档对我来说真是非常令人沮丧: - |

希望这可能有助于其他人。

© www.soinside.com 2019 - 2024. All rights reserved.