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',请执行以下步骤:
- 点击“下载”按钮 - 这应该会重定向到 Play 或 App Store
- 安装应用程序
- Return 到带有 Journeys 横幅的网页,该网页仍应显示下载按钮
- 再次点击“下载”按钮 - 应用程序应该打开(一旦您更新权利文件以包含
-alternate.app.link
)并且应用程序应该可以使用 Journeys 配置中指定的数据
- 关闭并重新打开带有 Journeys 横幅的网页 - 横幅现在应该有一个 "Open" 按钮
- 点击 "Open" 按钮
请注意,上述步骤仅在开发模式下出于测试目的才需要。在生产环境中,用户不会看到这个问题。另外请注意,CTA 按钮可能需要一些时间才能更新。高峰时段可能长达 30 分钟。
我正在尝试让基本的旅程应用横幅发挥作用。没有深入的 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',请执行以下步骤:
- 点击“下载”按钮 - 这应该会重定向到 Play 或 App Store
- 安装应用程序
- Return 到带有 Journeys 横幅的网页,该网页仍应显示下载按钮
- 再次点击“下载”按钮 - 应用程序应该打开(一旦您更新权利文件以包含
-alternate.app.link
)并且应用程序应该可以使用 Journeys 配置中指定的数据 - 关闭并重新打开带有 Journeys 横幅的网页 - 横幅现在应该有一个 "Open" 按钮
- 点击 "Open" 按钮
请注意,上述步骤仅在开发模式下出于测试目的才需要。在生产环境中,用户不会看到这个问题。另外请注意,CTA 按钮可能需要一些时间才能更新。高峰时段可能长达 30 分钟。