0

我在让 Branch.io 在 Cordova 支持的 Android 应用程序中工作时遇到问题。我有一个登录页面,它解析来自 branch.io 深层链接的数据并将用户转发到正确的页面。我的这个页面的 javascript 包含:

function onDeviceReady() {
  console && console.log("Device Ready");
  initBranch();
}

function initBranch() {
  branch.init(<branchKey>, function(err, data) {

    console && console.log("branch init error: " + err);

    //then the parsing and forwarding follows - omitted here
}

然后,我在 web api 中创建了指向此登录页面的 Branch.io 深层链接,并在 chrome 中对其进行了测试,该链接有效。

然后我尝试转到 Cordova 应用程序...

我按照本指南为 branch.io 准备应用程序: https ://dev.branch.io/recipes/quickstart_guide/cordova/ (我安装了插件并调整了 Manifest 文件。)

但是,当我尝试在我的 Android 设备上打开在 chrome 中工作的相同链接时,应用程序会正确打开并加载登录页面,但我没有被转发。相反,我在 logcat 中看到以下错误:

I/chromium(19382): [INFO:CONSOLE(22)] "Device Ready"
[...]
I/chromium(19382): [INFO:CONSOLE(29)] "branch init error: Error: API request /v1/open missing parameter device_fingerprint_id"

谁能告诉我我做错了什么?我刚开始了解 Cordova 和 Branch.io,所以它可能是我忽略的一些小东西。

谢谢, 利夫

4

1 回答 1

0

我的一个同事想通了:

Branch.io 在 android 设备的本地存储中创建一个入口 branch_session。在我的设备上,此会话以某种方式损坏,并且 device_fingerprint_id 为空:

{"session_id":"198413861345316824","identity_id":"198398707320770300","device_fingerprint_id":null,"browser_fingerprint_id":null,"link":"<link>","data":"{\"+is_first_session\":false,\"+clicked_branch_link\":false}"}

清除本地存储后*新创建了会话,现在看起来像这样:

{"session_id":"198413861345316824","identity_id":"198398707320770300","device_fingerprint_id":"118176839880411216","browser_fingerprint_id":null,"link":<link>,"data":"{\"+is_first_session\":false,\"+clicked_branch_link\":false}"}

现在深度链接有效。

氪,利夫

*要清除本地存储,我使用 chrome://inspect --> 检查 webview,转到资源选项卡,选择“本地存储”和正确的 url,然后删除所有值。

于 2015-11-26T13:37:02.927 回答