【问题标题】:Chirp Losing messages bug啁啾丢失消息错误
【发布时间】:2019-08-05 15:59:50
【问题描述】:

我在使用 SDK 时遇到了一个奇怪的问题,无论是在 Android 还是在 iOS 上。

问题是这样的:在使用 sdk 并通过转换到前台/后台后,有时我实现的应用程序通过 sdk 收到一条消息,但无法解码数据。

直到那时一切正常,它只是失败了,我们能够跟踪它。然而,有时,一旦无法解码有效载荷后,收到的所有进一步消息都会产生解码错误。

我在 Android 上的解决方案是重新实例化客户端并解决了那里的问题。

但是在 iOs 上,sdk 似乎更可靠(这意味着更难重现错误)我找不到强制杀死客户端以重新实例化它的方法。

只需调用 stop 然后将指向它的指针设为 null 就足够了吗?

如何在 iO 上强制重启客户端?

我在最佳实践中找不到重启客户端的方法。

【问题讨论】:

  • 您是否遵循developers.chirp.io/docs/using-chirp/best-practices 的前景/背景最佳实践?您不需要重新启动。另请确保您使用的是最新版本的 SDK。
  • 是的,我遵循了启动和停止 sdk 并将其集中化的最佳实践文档。我真的无法解释为什么会出现问题,我只知道在 Android 上我至少能够通过重置客户端来打破解码错误的模式。但我无法在 iOs 上实现同样的目标。在 iOs 上,我没有重置 Sdk,而是尝试停止并重新启动,但这并没有像我预期的那样工作。
  • 您能列出发生这种情况的设备和操作系统版本吗?我们可以在这里尝试重现该问题。
  • 在 iOs 上,我已经很长时间无法重现了,但是,在 Android 上,在三星 S7 Android 8 上,如果我反复尝试在前台和后台之间切换,它最终会发生,我对此的解决方案一直在重启sdk,到目前为止一直运行良好,但我无法确定具体触发它的原因。

标签: chirp


【解决方案1】:

这当然不应该发生,但是您收到因失败而触发的回调这一事实表明音频 I/O 并未完全损坏。

虽然不建议这样做,但回答您的问题,一旦没有更多对 SDK 的引用,即调用 dealloc 方法,则 SDK 被销毁并释放内存。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多