首页 文章

Firebase动态链接无法在安装过程中生效

提问于
浏览
0

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

  • Firebase文档说,动态链接可以在安装过程中存活,并在从AppStore安装后在动态链接中描述的内容上打开应用程序 . 这不行 .

  • 当没有安装app的用户点击动态链接时,他会看到带有按钮"Open in App"的奇怪屏幕 . 点击AppStore后出现 .

enter image description here
我们可以跳过此屏幕吗?

我的实施:

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 是零 .

1 回答

  • 0

    许多解决方案依赖于拥有比您目前包含的更多上下文 . 我将尽可能地使用更新来编辑此答案 .

    • 动态链接绝对可以在大多数情况下继续安装过程 . 但是,有很多边缘情况 . 您是否可以为您正在测试的过程添加特定的复制步骤?

    • 不,遗憾的是这个模态不能被跳过 . Apple在iOS 10.3中做了一些改变,使得这样的事情变得不可避免(read here了解更多关于发生的事情,以及我们如何以更优雅的方式在Branch处理同样的问题)

    • 如果未触发有效的动态链接,则可能会出现这种情况 . 再次,你能添加特定的复制步骤吗?

相关问题