branch.io:无法从 javascript 中检测到已安装的应用

branch.io: cannot detect installed app from javascript

我正在尝试让基本的旅程应用横幅发挥作用。没有深入的 links(在这个阶段),只有一个基本的横幅,当用户访问我们的网站时,允许他获取我们的 iOS-app,或者如果已经安装则启动它。 问题是横幅始终显示 "get in app store" 选项,即使该应用已安装在设备上也是如此。

我在没有任何帮助的情况下查看了 和其他类似问题。

我有 运行 通用 links 验证器和 ulv_script.sh,它没有显示任何问题。

在我做的网页中:

branch.init('My_key_live_xxx', null, function(err, data) {
    console.log('init...');
    console.dir(data);
});

调试时数据属性如下所示:

{data: "", data_parsed: {}, has_app: null, identity: null, referring_identity: null, …}

在 ios-app 的 AppDelegate 中,除了以下内容我什么都不做:

let branch: Branch = Branch.getInstance()
        branch.initSession(launchOptions: launchOptions, andRegisterDeepLinkHandler: {params, error in
            if error == nil {
                // params are the deep linked params associated with the link that the user clicked -> was re-directed to this app
                // params will be empty if no data found
                // ... insert custom logic here ...
                print("params: %@", params as? [String: AnyObject] ?? {})
            }
        })

我认为在我真正想要 link 到应用程序中的特定位置之前,这里不需要特殊代码。现在我只想打开应用程序(或者实际上只是被检测到,因为打开按钮需要检测才能显示...)

半功能,始终指向应用商店,版本已上线以防有人想提前看到问题:https://www.papereed.com/player

我想我错过了关于 branch.io 的一些真正基本的东西,希望有人能提供帮助。 谢谢!

由于 Apple 方面的限制,当用户在网络浏览器(即 Safari)上点击通用 link 时,如果 link 与当前网页具有相同的域它不使用 Universal linking 打开应用程序,而是在 Safari 中打开 link。您可以阅读有关此行为的更多信息 here.

为了克服这个限制,Branch为Deepview按钮后面的link使用了不同的域,这样被访问的域就不同于当前网页。 Deepview 按钮后面的 link 使用格式为 '-alternate.app.link' 的域。

请确保您已在权利文件中为您的应用程序添加 -alternate.app.link 域。您可以在此处查看提供有关如何添加域的信息的文档。

对于 'Get/Open in App' CTA 按钮更新:

这在开发过程中很常见。由于该应用程序经常在设备上重新安装,因此 Branch 用于确定该应用程序是否已安装在设备上的标志 has_app 处于故障状态。

要强制重置 has_app 变量以将 Journey 的横幅 CTA 从 'Download' 更改为 'Open',请执行以下步骤:

  1. 点击“下载”按钮 - 这应该会重定向到 Play 或 App Store
  2. 安装应用程序
  3. Return 到带有 Journeys 横幅的网页,该网页仍应显示下载按钮
  4. 再次点击“下载”按钮 - 应用程序应该打开(一旦您更新权利文件以包含 -alternate.app.link)并且应用程序应该可以使用 Journeys 配置中指定的数据
  5. 关闭并重新打开带有 Journeys 横幅的网页 - 横幅现在应该有一个 "Open" 按钮
  6. 点击 "Open" 按钮

请注意,上述步骤仅在开发模式下出于测试目的才需要。在生产环境中,用户不会看到这个问题。另外请注意,CTA 按钮可能需要一些时间才能更新。高峰时段可能长达 30 分钟。