在Flutter应用中,我正在使用firebase dynamic links plugin。
在主要功能中,调用retrieveDynamicLink
并处理链接,以及每次恢复应用程序时,生命周期侦听器都会再次调用retrieveDynamicLink
并处理链接。
该插件调用android方法:getDynamicLink(registrar.activity().getIntent())
,文档说明该方法应清除意图,以使其他任何调用都返回null,直到从另一个链接打开/恢复该应用为止。
但这不是正在发生的事情,至少并非总是如此。
如果我从动态链接打开应用程序,请切换到另一个应用程序,然后再返回到该应用程序,则retrieveDynamicLink
调用将再次返回该链接。
如果我最初是从其图标打开该应用程序的,则不会发生。
有人有什么建议吗?
我正在使用firebase_dynamic_links: ^0.1.0+1
在Flutter 0.11.7
答案 0 :(得分:0)
我已经在我的仓库中解决了该问题,您可以尝试在pubspec.yaml
中使用此配置吗?
firebase_dynamic_links:
git:
url: https://github.com/diegoveloper/plugins
path: packages/firebase_dynamic_links
让我知道它是否有效
答案 1 :(得分:0)
这不是一个适当的解决方案,但是我注意到在恢复事件和实际获取动态链接之间添加延迟似乎可以解决问题。
作为临时解决方法可能会有用。
我正在使用500ms。
必须涉及某种比赛条件。
iOS实施实际上在以下之前遇到过相同(相似)的问题: https://medium.com/@diegoveloper/flutter-firebase-dynamic-link-6f1b79278ce0
链接中存在示例代码。
但基本上:
if (state == AppLifecycleState.resumed) {
_timerLink = new Timer(const Duration(milliseconds: 500), () {
_retrieveDynamicLink();
});
}
编辑:刚刚注意到@diegoveloper是文章+解决方法+ iOS修复程序以及新的Android flutter插件错误报告的创建者。 所以,谢谢你!