javascript - branch.io:无法从 javascript 检测已安装的应用程序

标签 javascript ios iphone branch.io

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

我看过Branch.io: javascript detect whether mobile app is installed和其他类似问题没有任何帮助。

我已经运行了通用链接验证器和 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] ?? {})
            }
        })

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

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

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

最佳答案

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

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

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

对于“在应用程序中获取/打开”CTA 按钮更新:

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

要强制重置 has_app 变量以将 Journey 的横幅 CTA 从“下载”更改为“打开”,请执行以下步骤:

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

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

关于javascript - branch.io:无法从 javascript 检测已安装的应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46343617/

相关文章:

iphone - 创建一个饼图并传递一些值

ios - 如何检索和显示存储在数组中的 UIIMage?

ios - 我如何通过带有非字母字符的名字过滤 NSMutableArray

javascript - 如何在 jQuery 中选中单选按钮时触发事件

javascript - 为什么我在 vue 中传递回调时不会丢失上下文?

Javascript:用标题替换 anchor

html - 带有 HTML : How to display image in local 的 UITextView

javascript - Javascript 的粘性侧边栏问题

javascript - 使用 Phonegap 访问文件

iphone - 对于某些纹理尺寸,glFramebufferTexture2D 在 iPhone 上失败