【问题标题】:Firebase Dynamic Links does not survive installation processFirebase 动态链接无法在安装过程中继续存在
【发布时间】:2017-05-05 10:20:39
【问题描述】:

我将 Firebase 动态链接 pod 更新为 1.4 版本。在这个版本中,我发现名为FIRDynamicLinkComponents 的非常有用的类。我决定用它来生成动态链接。但我有两个问题:

  1. Firebase 文档说动态链接可以在安装过程中继续存在,并在从 AppStore 安装后在动态链接中描述的内容上打开应用程序。这是行不通的。
  2. 当没有安装应用程序的用户点击动态链接时,他会看到带有“在应用程序中打开”按钮的奇怪屏幕。点击AppStore后出现。

我们可以跳过这个屏幕吗?

我的实现:

static func createDynamicLinks(forChallangeId challangeId: String, authorId: String, authorEmail: String, completion: @escaping (_ dynamicLink: String?, _ error: Error?) -> Void) {
    let link = URL(string: "https://CODE.app.goo.gl/challange/\(challangeId)/author/\(authorId)")!
    let domain = DOMAIN
    let components = FIRDynamicLinkComponents(link: link, domain: domain)

    //add iOS params
    let iOSParams = FIRDynamicLinkIOSParameters(bundleID: bundleId)
    iOSParams.appStoreID = APP_STORE_ID
    components.iOSParameters = iOSParams

    //add Android params
    let androidParams = FIRDynamicLinkAndroidParameters(packageName: PACKAGE_NAME)
    androidParams.minimumVersion = 19
    components.androidParameters = androidParams

    //add social meta tag params
    let socialParams = FIRDynamicLinkSocialMetaTagParameters()
    socialParams.title = "You got new challenge"
    socialParams.descriptionText = "\(authorEmail) sent the challenge to you."
    socialParams.imageURL = IMAGE_URL
    components.socialMetaTagParameters = socialParams

    //add options
    let options = FIRDynamicLinkComponentsOptions()
    options.pathLength = .short
    components.options = options

    //make link shorter
    components.shorten { (shortURL, warnings, error) in
        if let error = error {
            completion(nil, error)
            return
        }
        guard let shortLinkString = shortURL?.absoluteString else {
            completion(nil, error)
            return
        }

        completion(shortLinkString, error)
    }
}

编辑

第三个问题。

针对iOS10。句柄:

func application(_ application: UIApplication, continue userActivity: NSUserActivity, restorationHandler: @escaping ([Any]?) -> Void) -> Bool {
    guard let dynamicLinks = FIRDynamicLinks.dynamicLinks() else {
        return false
    }

    let handled = dynamicLinks.handleUniversalLink(userActivity.webpageURL!) { (dynamiclink, error) in
        if let url = dynamiclink?.url {
            DynamicLinksManager.handleDeepLink(link: url)
        }
    }

    return handled
}

handled 为真,但在结束时dynamiclinkerror 为零。

【问题讨论】:

  • 您能否编辑您的答案以包括您对 AppDelegate 应用程序(_ 应用程序:UIApplication,打开 url:URL)和/或应用程序(_ 应用程序:UIApplication,继续 userActivity:) 的实现?
  • 完成,现在检查
  • 我向问题添加了新信息。也许有帮助。
  • 谢谢!没有什么能立即引起我的注意。当您按照基本的 Firebase 生成的动态链接将您带到应用程序时,是否也会发生这种情况?尝试将其作为消除一些可能导致问题的变量的方法。另外,不调用openUrl也没关系。如果您使用的是 iOS 10,它只会调用 continueUserActivity。如果您不在 iOS 10 上,那么是的,我想这是个问题。
  • 我的目标是 iOS 10

标签: ios firebase firebase-dynamic-links


【解决方案1】:

很多解决方案都依赖于比您当前包含的更多上下文。我会尽可能更新这个答案。

  1. Dynamic Links 在大多数情况下绝对可以在安装过程中存活下来。但是,有很多边缘情况。您能否针对您用于测试的过程添加特定的复制步骤?
  2. 不,很遗憾,无法跳过此模式。 Apple 在 iOS 10.3 中进行了一些更改,使得这样的事情不可避免(read here 了解更多关于发生的事情,以及我们如何在 Branch 以稍微更优雅的方式处理同样的问题)
  3. 如果没有触发有效的动态链接,这可能是预期的。再次,您能否添加特定的复制步骤?

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-01-08
    • 2018-10-22
    • 2013-09-11
    • 1970-01-01
    • 2021-08-08
    • 2018-12-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多