Can';t在swift中获取firebase动态链接
我已经为我的firebase项目设置了动态链接,每个帖子都有一个动态链接。我可以将链接复制到Safari中,它会向我显示标题和所有正确的信息,然后我可以从链接打开应用程序,但由于某些原因,我无法在单击链接时显示某个控制器,也无法从下面的函数打印出任何内容。接收链接时遇到严重问题 ViewController-创建(运行良好!) AppDelegate-接收Can';t在swift中获取firebase动态链接,swift,firebase,firebase-dynamic-links,Swift,Firebase,Firebase Dynamic Links,我已经为我的firebase项目设置了动态链接,每个帖子都有一个动态链接。我可以将链接复制到Safari中,它会向我显示标题和所有正确的信息,然后我可以从链接打开应用程序,但由于某些原因,我无法在单击链接时显示某个控制器,也无法从下面的函数打印出任何内容。接收链接时遇到严重问题 ViewController-创建(运行良好!) AppDelegate-接收 func handleIncomingDynamicLink(_ dynamicLink: DynamicLink) { g
func handleIncomingDynamicLink(_ dynamicLink: DynamicLink) {
guard let url = dynamicLink.url else { return }
print("Incoming link is \(url.absoluteString)")
guard let components = URLComponents(url: url, resolvingAgainstBaseURL: false) else { return }
guard let queryItems = components.queryItems else { return }
if components.path == "/posts" {
//Load a specific event
if let postIdQueryItem = queryItems.first(where: {$0.name == "postId"}) {
guard let postId = postIdQueryItem.value else { return }
let homeController = HomeController()
homeController.presentAlert()
}
}
}
func application(_ application: UIApplication, contuine userActivity: NSUserActivity, restorationHandler: @escaping ([Any]?) -> Void) -> Bool {
if let incomingUrl = userActivity.webpageURL {
print("Incoming URL is \(incomingUrl)")
let linkHandled = DynamicLinks.dynamicLinks().handleUniversalLink(incomingUrl) { (dynamicLink, error) in
if let error = error {
return
}
if let dynamicLink = dynamicLink {
self.handleIncomingDynamicLink(dynamicLink)
}
}
return linkHandled
}
return false
}
func application(_ app: UIApplication, open url: URL, options: [UIApplicationOpenURLOptionsKey : Any] = [:]) -> Bool {
if let dynamicLink = DynamicLinks.dynamicLinks().dynamicLink(fromCustomSchemeURL: url) {
self.handleIncomingDynamicLink(dynamicLink)
return true
} else {
return false
}
}
这可能意味着动态链接中的
url
对象为nil,如果它仅发生在iOS 13中,则此问题可能会有所帮助:另外,请确保您正在将Firebase吊舱更新到最新版本
func handleIncomingDynamicLink(_ dynamicLink: DynamicLink) {
guard let url = dynamicLink.url else { return }
print("Incoming link is \(url.absoluteString)")
guard let components = URLComponents(url: url, resolvingAgainstBaseURL: false) else { return }
guard let queryItems = components.queryItems else { return }
if components.path == "/posts" {
//Load a specific event
if let postIdQueryItem = queryItems.first(where: {$0.name == "postId"}) {
guard let postId = postIdQueryItem.value else { return }
let homeController = HomeController()
homeController.presentAlert()
}
}
}
func application(_ application: UIApplication, contuine userActivity: NSUserActivity, restorationHandler: @escaping ([Any]?) -> Void) -> Bool {
if let incomingUrl = userActivity.webpageURL {
print("Incoming URL is \(incomingUrl)")
let linkHandled = DynamicLinks.dynamicLinks().handleUniversalLink(incomingUrl) { (dynamicLink, error) in
if let error = error {
return
}
if let dynamicLink = dynamicLink {
self.handleIncomingDynamicLink(dynamicLink)
}
}
return linkHandled
}
return false
}
func application(_ app: UIApplication, open url: URL, options: [UIApplicationOpenURLOptionsKey : Any] = [:]) -> Bool {
if let dynamicLink = DynamicLinks.dynamicLinks().dynamicLink(fromCustomSchemeURL: url) {
self.handleIncomingDynamicLink(dynamicLink)
return true
} else {
return false
}
}