Branch.io Cordova API - init() 在 Android 设备上失败

Branch.io Cordova API - init() fails on Android Device

我在让 Branch.io 在 Cordova 驱动的 Android 应用程序中工作时遇到问题。我有一个着陆页,它解析来自 branch.io 深度 link 的数据并将用户转发到正确的页面。此页面我的 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
}

然后我在网络 api 中创建了一个 Branch.io 深 link 的着陆页,并在 chrome 中对其进行了测试。

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

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

但是当我尝试在我的 Android 设备上打开在 chrome 中工作的同一个 link 时,应用程序可以正确打开并加载登录页面,但我没有被转发.相反,我在 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,所以它可能是我忽略的一些小东西。

谢谢, 里夫

我的一位同事想通了:

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,转到资源选项卡,选择 "local storage" 和正确的 url,然后删除所有值。