如何避免在cordova android应用程序上处理两次深层链接?

Posted

技术标签:

【中文标题】如何避免在cordova android应用程序上处理两次深层链接?【英文标题】:how to avoid handling a deep link twice on cordova android application? 【发布时间】:2017-08-17 11:10:04 【问题描述】:

我在分支 io 深度链接方面遇到问题。

环境:我正在使用 android Marshmallow SDK,平台:25 科尔多瓦 7.0.1 和 分支 SDK “io.branch.sdk”:“~2.2.3” "branch-cordova-sdk": "^2.2.5",

以下是我面临问题的场景:

场景一:在 OnResume 回调函数中调用 Branch.InitSession。 失败案例: 步骤:

第一次安装该应用程序。 (没有打开应用程序) 点击 Branch IO Deep Link, 它会在我的手机上打开应用程序,但不会重定向到 Deep Link 参数中指定的 url,因为 InitSession 被调用了两次。 a) 在 OnDeviceReady 回调函数中。 b)在 OnResume 函数中(这是因为,由于我的应用程序是第一次打开,它会向用户请求权限,当用户拒绝/批准调用 onresume 方法的权限时,它会暂停应用程序并恢复)。 第二次从 OnResume 回调调用 InitSession 时,它会从 Deep Link 接收空参数,并且应用程序不会按预期重定向到 URL。 场景 2:如果我删除 OnResume 中的 Branch.InitSession 回调函数。 成功案例:上述场景效果很好,如果去掉 OnResume 函数中的 InitSession 失败案例:

安装了应用程序。 打开应用程序,让应用程序在后台运行。 单击了 Branch IO 深层链接。 应用程序不接收深度链接数据或处理信息的参数,因为 initsession 在 onresume 方法中不可用。 您能否让我知道如何处理这种情况,让我知道是否需要发布任何进一步的信息,这可能会帮助您发现我是否以错误的方式实施它。

感谢和问候, 乔蒂。

【问题讨论】:

【参考方案1】:

来自Branch.io 的Amruta。正如我们的 Cordova 专家在 Github 问题上所评论的那样 here

您似乎安装了 2 个版本的 Branch:

"io.branch.sdk": "~2.2.3" "branch-cordova-sdk": "^2.2.5",

io.branch.sdk 是我们过时的 Branch SDK,不再受支持。我们建议您遵循此guide 以确保您只运行一个版本的 Branch SDK。您还可以在我们的 Github 存储库上关注 integration guide,获取 Cordova SDK。

【讨论】:

以上是关于如何避免在cordova android应用程序上处理两次深层链接?的主要内容,如果未能解决你的问题,请参考以下文章

如何在使用 Cordova 的 Phaser 游戏中避免高内存使用?

使用cordova防止android编辑栏

如何在cordova android上连接PushPlugin + Parse

在 Android 4.4+ 上运行时如何忽略 Cordova App 的字体大小设置更改?

如何在cordova项目中异步打开inappbrowser

如何在 android 中远程更新我的 cordova/phonegap 移动应用程序?