Flutter:从后台服务自动恢复应用程序
Posted
技术标签:
【中文标题】Flutter:从后台服务自动恢复应用程序【英文标题】:Flutter: automatically resume app from background service 【发布时间】:2020-12-09 18:54:16 【问题描述】:有没有办法通过后台服务从暂停或非活动的生命周期状态自动恢复 Flutter 应用?
类似于 WhatsApp 应用在暂停或不活动时接到电话。
【问题讨论】:
你做到了吗? 【参考方案1】:不,您不能简单地从服务中唤醒应用。这将为各种垃圾邮件应用程序和安全风险打开大门。您需要在 android 上使用 CallKit 或类似 SIP 之类的东西专门将其注册为 VOIP 应用程序以接收来电。
对于其他事情,您可以使用推送通知,但这不会启动您的应用程序。用户始终必须点击您显示的通知。
【讨论】:
感谢库恩罗亚尔。我搜索并找到了我将调查的这个链接:github.com/masashi-sutou/flutter_ios_voip_kit 是的,如果您想接听电话,这看起来是个不错的起点。【参考方案2】:你需要同时使用几个东西:
使用推送通知唤醒您的应用: https://pub.dev/packages/firebase_messaging 要使用推送通知启动您的应用程序,请参阅这篇文章: https://***.com/a/48405551/4335775 使用 CallKit (IOS) 或 ConnectionServices (Android) 显示即将到来的呼叫屏幕。到这个答案的那一天,只有几个包可以处理这些事情,这里有一个可以处理两个平台的包: https://pub.dev/packages/flutter_callkeep如果你想要一个完全不同的东西并且需要运行一些后台进程,那么你首先应该知道很多事情。 我建议从这里开始:https://flutter.dev/docs/development/packages-and-plugins/background-processes 这是一个有用的包,可以处理应该不断运行的后台进程: https://pub.dev/packages/background_fetch
只能通过显式命令唤醒应用。用户必须点击按钮。并且有处理输入的方法,消息可以传递参数,可以将之前的状态保存在数据库中或者共享首选项等。
【讨论】:
感谢 Racr0x 提供这些有用的链接。我使用 WebRTC 和 websocket 创建了一个颤振应用程序来发送信号,该应用程序仅在应用程序处于前台时才能正常工作。当应用程序暂停或不活动时,我观看了打印消息,甚至导航(使用全局键)和铃声都可以工作,但应用程序仍处于暂停或不活动的生命周期状态。我会看一下flutter_callkeep包,看看它是否会唤醒应用程序并将其移动到恢复状态。 应用只能通过显式命令唤醒。用户必须点击按钮。并且有处理输入的方法,消息可能会传递参数,可以将之前的状态保存在数据库中或共享首选项中。如果您发现任何困难,请告诉我,我很乐意为您提供帮助。 有人说,为了将我的应用程序带到前台,我必须从另一个上下文(Service 或 BroadcastReceiver)调用 startActivity()。 (***.com/questions/29766270/…) 如果我的活动在不同的任务上,他说我可以用这个把活动的任务带到前台: ActivityManager activityManager = (ActivityManager) getApplicationContext().getSystemService(Context.ACTIVITY_SERVICE); activityManager.moveTaskToFront(getTaskId(), ActivityManager.MOVE_TASK_NO_USER_ACTION);但这看起来像本机代码(java 或 iOS 类型代码)。我不知道如何在 Flutter 中做到这一点。是否有 Flutter 库或包来实现这个目标? 这是 Android 的原生 Java。以上是关于Flutter:从后台服务自动恢复应用程序的主要内容,如果未能解决你的问题,请参考以下文章
是否可以在flutter应用程序关闭时通过平台通道从android后台服务向flutter端发送消息
即使 Flutter 应用程序在后台,如何自动响应 Firebase Document Stream 更新? [关闭]
iPhone iOS如何在应用程序从后台恢复时添加密码/密码锁定屏幕?