Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/107.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios &引用;“继续用户活动”;方法未调用,尽管Firebase深层链接已成功打开应用程序_Ios_Swift_Firebase_Appdelegate_Firebase Dynamic Links - Fatal编程技术网

Ios &引用;“继续用户活动”;方法未调用,尽管Firebase深层链接已成功打开应用程序

Ios &引用;“继续用户活动”;方法未调用,尽管Firebase深层链接已成功打开应用程序,ios,swift,firebase,appdelegate,firebase-dynamic-links,Ios,Swift,Firebase,Appdelegate,Firebase Dynamic Links,我正在使用Firebase的深度链接,尝试在用户单击发送给他们的链接时在我的应用程序中提供某种功能。在Firebase web门户上正确设置了深层链接 单击发送给用户的链接会打开我的应用程序,但不会触发我的应用程序委托中的continue userActivity方法,因为其中包含的所有代码均未执行 我尝试了中建议的解决方案,但没有成功,即在方法声明中将[UIUserActivityRestoring]切换为[Any] 在Xcode中,我已将关联域设置为与我在Firebase上设置的匹配:app

我正在使用Firebase的深度链接,尝试在用户单击发送给他们的链接时在我的应用程序中提供某种功能。在Firebase web门户上正确设置了深层链接

单击发送给用户的链接会打开我的应用程序,但不会触发我的应用程序委托中的
continue userActivity
方法,因为其中包含的所有代码均未执行

我尝试了中建议的解决方案,但没有成功,即在方法声明中将[UIUserActivityRestoring]切换为[Any]

在Xcode中,我已将关联域设置为与我在Firebase上设置的匹配:
applinks:myappname.page.link
;我还添加了一个带有标识符“Bundle ID”的“URL类型”,以及带有角色编辑器的
ca.mycompany.myappname
的URL方案

当然,所有这些都是在设备上运行的,因为我不希望它在模拟器中工作

这是我的应用委托中应该调用的方法,但是不是

func application(_ application: UIApplication, continue userActivity: NSUserActivity, restorationHandler: @escaping ([Any]?) -> Void) -> Bool {
print ("The link worked")

}
我确保
didfishlaunchingwithoptions
始终返回true


我希望“链接工作”能够在调试控制台中实际打印出来,但事实并非如此。断点表示根本没有调用该方法,因为从未到达断点。

对于任何需要它的人:

您需要使用以下代码来处理从链接到已安装应用程序的深层链接(其他func应用程序用于不同的用途)

func应用程序(application:UIApplication,continue userActivity:NSUserActivity,
restorationHandler:@escaping([UIUserActivityRestoring]?)->Void->Bool{
让handle=DynamicLinks.DynamicLinks().handleuniversalink(userActivity.webpageURL!){(dynamiclink,error)在
// ...
}
退货处理
}


#6

有一个很好的变化,面对这个问题的人也会处理iOS13/SwiftUI。就像我一样

我发现这解决了我所有的问题


基本上,您必须知道,新SceneDelegate中的一些方法取代了IOS13之前在AppDelegate中调用的方法。此外,在一些边缘情况下,可能仍然需要来自AppDelegate的方法来处理深度链接处理。

对于场景应用程序,请尝试将您的逻辑添加为

func scene(_ scene: UIScene, continue userActivity: NSUserActivity) {
  let handled = DynamicLinks.dynamicLinks().handleUniversalLink(userActivity.webpageURL!) { (dynamiclink, error) in
    //...
  }
}

是否可以检查是否在链接单击应用程序:openURL:options:?上调用此方法??你点击的链接是什么?@m1sh0,我点击的链接是myappname.page.link,后面是链接的一部分,该部分应该向我的应用发出做事的信号,这将打开我的应用。我没有这个方法,但是在我的应用程序中实现它的时候,当我点击URL时,它也不会被调用……你明白了吗?我也有同样的问题…嗨,山姆,谢谢你的回复。我已经在方法声明中的[UIUserActivityRestoring]和[Any]中试过了,这个问题和原文章中提到的一样。您确认它在最新的iOS 13 Beta上有效吗?干杯