【问题标题】:Dynamic link is not cleared after retrieving动态链接检索后不清除
【发布时间】:2019-04-24 09:55:06
【问题描述】:

在我的颤振应用中,我使用的是firebase dynamic links plugin

在主函数中调用retrieveDynamicLink 并处理链接,并且每次应用程序恢复时,生命周期侦听器都会再次调用retrieveDynamicLink 并处理链接。

插件调用 android 方法:getDynamicLink(registrar.activity().getIntent()),文档指出此方法应清除意图以使任何其他调用返回 null,直到应用程序从另一个链接打开/恢复。

但事实并非如此,至少并非总是如此。

如果我从动态链接打开应用程序,切换到另一个应用程序,然后返回应用程序,retrieveDynamicLink 调用会再次返回该链接。 如果我最初从它的图标打开应用程序,那不会发生。

有人有什么建议吗?

我正在使用firebase_dynamic_links: ^0.1.0+1 关于颤振0.11.7

【问题讨论】:

  • 是的,我也有同样的问题,我记得当我进行测试时 firebase_dynamic_link 正在使用这个库: com.google.firebase:firebase-invites:16.0.1 ,但现在它已更新为 api 'com.google.firebase:firebase-dynamic-links:16.1.2' ,也许那个版本有问题。我将打开一个新的颤振问题
  • 好吧,我看到有一个未解决的问题:github.com/flutter/flutter/issues/20944@Dario lelardi,你能在 iOS 上重新解决这个问题吗?还是只发生在安卓上?
  • 新问题在这里打开:github.com/flutter/flutter/issues/24629

标签: android firebase flutter firebase-dynamic-links


【解决方案1】:

我已经在我的 repo 中解决了这个问题,你能尝试在pubspec.yaml 中使用这个配置吗:

firebase_dynamic_links:
   git: 
     url: https://github.com/diegoveloper/plugins
     path: packages/firebase_dynamic_links

让我知道它是否有效

【讨论】:

  • 不幸的是,该错误仍然存​​在。当我最初从链接打开应用程序时,每次调用retrieveDynamicLink 都会再次返回链接。
  • 是的,看起来这是当前 android firebase 动态链接库的问题。
【解决方案2】:

不是一个合适的解决方案,但我注意到在恢复事件和实际获取动态链接之间添加延迟似乎可以解决问题。

作为临时解决方法可能有用。

我正在使用 500 毫秒。

必须涉及某种竞争条件。

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 插件错误报告的创建者。 所以,谢谢!

【讨论】:

    猜你喜欢
    • 2018-06-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-24
    • 2011-10-16
    • 2019-03-24
    • 2023-01-04
    相关资源
    最近更新 更多