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

Posted

技术标签:

【中文标题】branch.io:无法从 javascript 检测已安装的应用程序【英文标题】:branch.io: cannot detect installed app from javascript 【发布时间】:2017-09-21 12:12:11 【问题描述】:

我正在尝试制作一个基本的旅程应用横幅。没有深度链接(在这个阶段),只是一个基本的横幅,当用户访问我们的网站时,他可以获取我们的 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 的一些真正基本的东西,希望有人能提供帮助。 谢谢!

【问题讨论】:

【参考方案1】:

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

为克服此限制,Branch 为 Deepview 按钮后面的链接使用不同的域,以便访问的域与当前网页不同。 Deepview 按钮后面的链接使用格式为“-alternate.app.link”的域。

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

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

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

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

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

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

【讨论】:

谢谢你,你给的强制重置步骤成功了!可能是这个和 CTA 按钮更新延迟的组合。

以上是关于branch.io:无法从 javascript 检测已安装的应用程序的主要内容,如果未能解决你的问题,请参考以下文章

无法从 Branch io Url 获取数据

无法为 Branch.io 不同的深层链接测试我的 Facebook 广告

无法在 branch.io 上查看自定义事件

在 ionic 3 中,branch.io deeplink 无法按预期工作

branch.io loadRewards - 无法在未调用 Looper.prepare() 的线程内创建处理程序

Branch.io 统计