Firebase 动态 link 未打开 iOS 应用

Firebase dynamic link not opening iOS app

不得不提一下这个动态 link 之前工作正常,但由于某种原因突然停止工作。

这是动态的link: autobavaria1491911550production.page.link

并且这是 link 添加到关联域的能力:applinks:autobavaria1491911550production.page.link

apple-app-site-association 测试后结果是:

{
  "applinks": {
    "apps": [],
    "details": [
      {
        "appID": "K9B6CPM5NB.com.whipmobility.ios.operation",
        "paths": [
          "NOT /_/*",
          "/*"
        ]
      },
      {
        "appID": "S5Q34K6U59.com.autobavaria.ios.customer",
        "paths": [
          "NOT /_/*",
          "/*"
        ]
      }
    ]
  }
}

com.autobavaria.ios.customer 是我希望动态 link 打开的包名,它在应用程序关联中可用,但它没有发生,是的,在 firebase 控制台中添加了 App Store ID 和团队 ID ,知道为什么会这样吗?

步骤:

  1. 删除您的应用程序
  2. 重新启动您的设备。
  3. 重新安装您的应用并进行测试。

根据 firebase,有时在下载与您的域关联的“apple-app-site-association”文件时会出错。这就是它发生的原因。

观看此视频:https://youtu.be/KLBjAg6HvG0?t=483 以获得调试帮助。

设置 Dynaminc link 从开始:https://www.youtube.com/watch?v=KLBjAg6HvG0

如果您已完成上述步骤,请检查您的 AppDelegate 文件中是否实现了正确的方法。

方法一:

    func application(_ app: UIApplication, open url: URL, options: [UIApplication.OpenURLOptionsKey : Any] = [:]) -> Bool {
        if DynamicLinks.dynamicLinks().shouldHandleDynamicLink(fromCustomSchemeURL: url) {
            let dynamicLink = DynamicLinks.dynamicLinks().dynamicLink(fromCustomSchemeURL: url)
            self.handleDynamicLink(dynamicLink)
            return true
        }
        
        return true
    }

方法二:

    func application(_ application: UIApplication, continue userActivity: NSUserActivity, restorationHandler: @escaping ([UIUserActivityRestoring]?) -> Void) -> Bool {
        if let incomingURL = userActivity.webpageURL {
            print(incomingURL)
            
            let linkHandled = DynamicLinks.dynamicLinks().handleUniversalLink(incomingURL) { (dynamicLink, error) in
                guard error == nil else {
                    print("Found an error! \(error!.localizedDescription)")
                    return
                }
                
                if let dynamicLink = dynamicLink {
                    self.handleDynamicLink(dynamicLink)
                }
            }
            
            if linkHandled {
                return true
            } else {
                //May be do other things with our incoming URL?
                return false
            }
        }
        
        return false
    }

处理动态Link常用方法:

    func handleDynamicLink(_ dynamicLink: DynamicLink?) {
        guard let dynamicLink = dynamicLink else { return }
        guard let deepLink = dynamicLink.url else { return }
        
    }