颤振:在应用关闭时通过接收短信来弹出通知



我想在手机上发生某些特定事件时弹出通知(并在单击打开应用程序时((在我的情况下收到具有预定格式或特定电话号码的短信(。目前我使用颤振短信包并在main((中构建一个SmsReceiver类的实例,如下所示,并尝试将短信正文打印到控制台:

void main() {
SmsReceiver receiver = new SmsReceiver();
receiver.onSmsReceived.listen((SmsMessage msg) => print(msg.body));
runApp(MyApp());
}

我在真实设备(三星Galaxy 8+(上测试代码。当应用程序正在运行或在后台运行时,我得到短信正文没有问题。但是,当我关闭应用程序并收到短信时,出现错误?打印在控制台中:

W/FlutterJNI(23977(:尝试向 Flutter 发送平台消息,但 FlutterJNI 已从本机C++分离。无法发送。通道:plugins.babariviere.com/recvSMS。响应 ID:0

你能帮我这个吗?是否可以侦听此类事件并在应用程序关闭时触发通知?

附言我查看了颤振本地通知。但是,看起来此包仅显示计划通知。就我而言,我希望通知由事件驱动。

>我面临着100%相同的问题。我仍在寻找性能稳定但还没有运气的解决方案,但我写这个答案是为了分享我的经验和发现,希望我们可以一起找到解决方案。

  1. 短信接收可以与这个包。
  2. 当应用程序关闭时,任何应用程序(即使是本机Android或iOS(都无法响应任何事件。
  3. 为了在应用程序关闭时回复短信,原生安卓应用程序运行一些服务。此服务就像一个应用程序,但在前台没有用户界面。即使应用关闭,服务也能够在后台运行。
  4. 在 Flutter 中,我们必须找到一种方法来运行后台服务,该服务将侦听传入的 SMS 事件。 即服务至少会有这段代码

SmsReceiver receiver = new SmsReceiver(); receiver.onSmsReceived.listen((SmsMessage msg){ // Do something to pop a notification and launch main application });

因此,我们必须找到一种方法通过 Flutter App 运行 Android 后台服务,这可以通过使用 Flutter 包在后台运行服务来实现。

我是任何类型的应用程序开发的新手,我可能是错的,但这是我刚刚发现的。如果您找到出路,请分享。祝你好运。

您可以使用Telephony包,只需使用backgrounMessageHandler类即可了解更多信息 访问 https://pub.dev/packages/telephony

最新更新