Firebase 动态链接未打开 iOS 应用程序

Posted

技术标签:

【中文标题】Firebase 动态链接未打开 iOS 应用程序【英文标题】:Firebase dynamic link not opening iOS app 【发布时间】:2020-01-16 07:22:06 【问题描述】:

不得不提一下这个动态链接以前可以工作,但由于某种原因突然停止工作。

这是动态链接: autobavaria1491911550production.page.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 是我希望打开动态链接的包名称,它在应用关联中可用,但没有发生,是的,App Store ID 和团队 ID 已添加到 firebase 控制台中,知道为什么会这样吗?

【问题讨论】:

删除您的应用并重新启动您的设备...然后检查。 观看此视频:youtube.com/watch?v=KLBjAg6HvG0 从 8:00 开始获取调试帮助。 谢谢@MohitKumar。这太奇怪了,卸载应用程序并重新启动手机并重新安装后,重新开始工作。知道为什么会这样吗? 根据 Firebase,下载与您的域关联的 apple-app-site-association 文件时有时会出现错误。这就是它发生的原因。如果可行,请接受我的回答。谢谢。 在我的例子中,我们在 firebase 中有 2 个不同的项目用于沙盒和生产,并且它下面的应用程序具有相同的包名称。在我的情况下,我猜当 TestFlight 中具有相同包名的沙盒应用程序被从 AppStore(生产版本)安装的应用程序覆盖时,就会出现问题。和操作系统对此感到困惑。 【参考方案1】:

步骤:

    删除您的应用 重启您的设备。 重新安装您的应用并进行测试。

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

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

从开始设置动态链接: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
    

处理动态链接常用方法:

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

【讨论】:

您是否有解释为什么/如何发生这种情况的来源/参考(文档)?突然之间,我的 staging/dev 构建的 Firebase 动态链接中断(没有更改),但我在 prod 上的 AppStore 实时版本仍然正常工作。整个星期都在扯我的头发…… 通过 Firebase 团队查看视频:youtube.com/watch?v=KLBjAg6HvG0 在此视频中,您将看到 iOS 中发生这种情况的几个场景。

以上是关于Firebase 动态链接未打开 iOS 应用程序的主要内容,如果未能解决你的问题,请参考以下文章

IOS10 Firebase 动态链接显示带有打开按钮的空白页面。但为啥?

如果应用程序未以编程方式安装 firebase 动态链接,则重定向到 iOS App Store

未启动应用程序时 Firebase 动态链接不起作用

Flutter - Firebase 动态链接没有被 onLink 捕获,而是在 iOS 上打开应用

应用程序:openURL:选项:从 Firebase 动态链接安装应用程序后首次打开应用程序时未调用

Firebase 动态链接未打开应用