gpt4 book ai didi

ios - Branch 打不开 App Store 链接

转载 作者:行者123 更新时间:2023-11-28 15:25:48 25 4
gpt4 key购买 nike

我用 Branch创建深层链接。我添加了一个新的控制参数 ios_has_app_url 和 ios_url。安装应用程序时单击深层链接,然后一切正常,但是如果您在设备上未安装应用程序时单击深层链接,然后在启动期间,我看到浏览器而不是打开 ios_url(App Store 链接) ,它会尝试打开 ios_has_app_url。我该如何解决?

private func createDeepLink(_ card: CardModel) -> (branchUniversalObject: BranchUniversalObject, branchLinkProperties: BranchLinkProperties) {
let branchUniversalObject = BranchUniversalObject(canonicalIdentifier: ("cardId/\(card.id)"))
branchUniversalObject.title = card.title
branchUniversalObject.contentDescription = ""
branchUniversalObject.imageUrl = card.photoURLsProperties.originalURL

branchUniversalObject.addMetadataKey(CardKeys.cardID.rawValue, value: card.id)

branchUniversalObject.addMetadataKey("placeAvatarURLString", value: card.photoURLsProperties.originalURL)

branchUniversalObject.addMetadataKey("title", value: card.title)
branchUniversalObject.addMetadataKey("isAutoGeneratedCard", value: "false")

let fullLocationName = card.location.fullLocationName
branchUniversalObject.addMetadataKey("fullLocationName", value: fullLocationName)

branchUniversalObject.addMetadataKey(CardKeys.ownerID.rawValue, value: card.ownerID)
branchUniversalObject.addMetadataKey(ParametersKeywords.type.rawValue, value: ModeKeywords.shareCard.rawValue)

branchUniversalObject.addMetadataKey("availableSeats", value: card.peopleProperties.availableSeats.description)

let coordinate = card.location.coordinate
branchUniversalObject.addMetadataKey("latitude", value: coordinate.latitude.description)
branchUniversalObject.addMetadataKey("longitude",value: coordinate.longitude.description)

let linkProperties = BranchLinkProperties()
linkProperties.feature = "sharing"
linkProperties.addControlParam("$desktop_url", withValue: "http://www.appname.com")
linkProperties.addControlParam("$ios_has_app_url", withValue: "appname://")
linkProperties.addControlParam("$ios_url", withValue: "https://itunes.apple.com/app/idXXXXXXXXXXXXXXX")

return (branchUniversalObject: branchUniversalObject, branchLinkProperties: linkProperties)
}

更新:我的目标是,当点击深层链接时,如果安装了应用程序,则打开应用程序,如果没有,则打开应用商店链接。

更新 1:我像这样更改了我的代码,如果我只是单击链接,它会打开 App Store,如果我使用 3D Touch,那么我可以选择在哪里打开这个链接。如果安装了应用程序并单击链接立即打开应用程序(或至少浏览器中的一个链接,但有一个打开应用程序的选项)并且如果未安装应用程序,那么是否可以这样做点击链接,进入 App Store 应用页面。
let linkProperties = BranchLinkProperties()
linkProperties.feature = "sharing"
linkProperties.addControlParam("$desktop_url", withValue: "http://www.appname.com")
linkProperties.addControlParam("$ios_has_app_url", withValue: "https://appname.app.link/")
linkProperties.addControlParam("$ios_url", withValue: "itms-apps://itunes.apple.com/app/idXXXXXX")

最佳答案

来自 Branch.io 的 Alex 在这里:

好消息是这比您预期的要容易得多。但是,既然您做了如此完整的报告,我将详细介绍所有细节,以便您确切了解幕后发生的事情。

简短说明

要在安装后处理启动您的应用程序,您不需要手动将自定义 URI 方案设置为 $ios_has_app_url 的值 — Branch 和 iOS 通过设计为您实现此行为。

如果您的链接没有启动您的应用程序,则您的通用链接配置可能有问题。我建议查看 this troubleshooting guide .

长解释

我们的$ios_has_app_url控制参数依赖于 bool 值 has_app我们的服务器跟踪的值(value)。 has_app在典型的实际使用中相当准确的值(例如,足以在智能应用横幅上显示打开或安装标签之间切换按钮),但它是 不是 在所有情况下都 100% 准确。

这是 iOS 的一个限制:Apple 不允许网页查询设备上安装了哪些应用程序(出于明显的隐私原因),因此 Branch 必须依赖 cookie 匹配。这意味着如果我们无法匹配 cookie,或者最近没有看到用户,或者用户清除了他们的设备缓存,或者用户在 Branch 上次看到它们后卸载了应用程序,则 has_app 的值将是不正确的。当has_app值不正确,则 $ios_has_app_url行为也会出错。

然而,即使 Apple 不允许网页查询访问这些数据,iOS 本身仍然可以对其采取行动。通用链接正是这样做的——当用户打开一个通用链接(其中包括分支链接,假设您完成了所有配置)时,如果安装了应用程序,它将打开。如果未安装,用户将被发送到链接的 URL。
$ios_has_app_url 的预期用途

分行$ios_has_app_url参数适用于高级实现中非常具体的用例;我们的绝大多数合作伙伴从不使用它。以下是您可能需要的潜在情况:

你有一个边缘情况,Universal Links are not supported ,并且如果 Branch 知道他们已经安装了您的应用程序,而不是让他们选择打开它,您希望将用户发送到不同的网页。显然这是一种罕见的情况,通常只与企业级应用程序相关。

调试has_app
如果您在尝试调试 has_app 的情况时遇到困难。返回错误的值,您有几个选择:

  • 如果您收到 true你想要false , 在 Safari 中使用无痕浏览模式。这可以防止 Branch 进行 cookie 匹配,这意味着您将始终得到 false .
  • 或者,请按照以下步骤操作:
  • 确保正在测试的应用程序具有 setDebug enabled .
  • 将带有智能横幅代码的页面的链接粘贴到 Notes 中。
  • 卸载应用程序。
  • 设置 > 通用 > Safari > 清除历史记录和网站数据。
  • 设置 > 通用 > Safari > 高级 > 网站数据 > 向左滑动并删除每个条目。
  • 设置 > 通用 > 隐私 > 广告 > 重置广告标识符...
  • 单击 Notes 中的链接(从步骤 1 开始)。
  • 横幅应始终显示“下载”(如果没有,那是因为清除网站数据不成功)。
  • 点击下载。
  • 通过 Xcode 运行应用程序(用于安装它)。
  • 在 Xcode 中停止应用程序,然后从手机启动它。
  • 再次单击 Notes 中的链接 - 该按钮现在应显示“打开”并打开应用程序。
  • 关于ios - Branch 打不开 App Store 链接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45265931/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com