gpt4 book ai didi

android - 一种在 flutter 中将最小化的应用程序置于前台的方法

转载 作者:行者123 更新时间:2023-12-01 15:20:09 27 4
gpt4 key购买 nike

我有一个包含 WebRTC 视频通话的 flutter 应用程序。 Flutter 中有没有办法让应用程序在接到电话时显示自己或最大化自己?

最佳答案

所以最后我能够解决它,一般有两种情况,如果应用程序在后台,如果它被终止。

iOS

当应用程序进入后台时,iOS 会在几秒钟后立即将其杀死,因此 flutter 断开连接,我们必须使用推送通知。

在 iOS 中,你不能将一个违反 Apple 政策的应用程序带到前台,并且没有公共(public) API。
See here .

唯一的异常(exception)是电话,这是我的情况。我不得不使用苹果 VoIP 通知,有两个单独的 flutter 包来处理
flutter_voip_push_notificationflutter_call_kit

安卓:

如果是终止的应用程序,我必须 fork fire_flutter 代码才能添加我的代码。 see here
当与调用相关的通知到达时,它通过调用应用程序的相同启动 Intent 来显示主要 Activity

如果应用程序在后台, flutter 将连接到信令服务,所以我不使用 FCM。我发送一条 FCM 消息给 flutter 以接听电话。在 flutter 方面,我写了一个包,只是为了在 flutter see it here 调用时将应用程序带到前台。

这真的很简单。你从飞镖调用一个静态函数,它会被带到前台

关于实现的旁注:

  • 响应 voip 通知时,您应该在收到通知的那一刻显示 callkit see here .
    由于任何原因(甚至是异常,或停止调试器几秒钟)未能使用调用工具包 3 次,客户端设备上的 iOS 将开始忽略您的 voip 通知,这应该是真正的即时。 Apple 支持在某处说(我不记得在哪里):如果您想从服务器获取一些数据,只需显示一个虚拟调用套件,然后当响应到达时,您可以使用调用者信息更新它。当系统禁止应用程序接收 Voip 通知时,我不得不在我的 iPhone 6 上恢复出厂设置以取消禁止我的应用程序(如果您找到其他方法,请分享!)
    如果您被封禁,您可以使用 Mac 上的控制台确认
  • 我无法将 firebase 用于 voip 通知,因为它需要客户端证书。我必须使用相同的 WebRtc 信令 NodeJS 服务器
  • 在 iPhone 上接听会打开你的 Flutter 应用所以你必须尽快处理来电 否则用户会看到你的主屏幕而不是来电者的声音
  • 一些安卓厂商,比如小米,会阻止你的应用服务将 Activity 带到前台,所以你必须告诉用户:去设置,启用一些设置,这因供应商而异
  • Android 10 (Q) 对从后台服务运行 Activity 也有一些限制。
  • 从后台在 android 中启动相同的启动 Intent 将重新启动 Activity ,而不是仅仅启动它,我不得不玩一点 launchModeAndroidManifest.xml为了使它工作
  • 关于android - 一种在 flutter 中将最小化的应用程序置于前台的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58534450/

    27 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com