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

问题描述 投票:3回答:1

我想在电话上发生某些特定事件时弹出通知(并在单击打开应用程序后发出通知)(在我的情况下,是接收具有预定格式或特定电话号码的SMS)。当前,我使用flutter SMS package并如下所示在main()中构建SmsReceiver类的实例,然后尝试将sms正文打印到控制台:

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]

您能帮我吗?即使关闭应用程序,也可以监听此类事件并触发通知吗?

ps.s。我调查了flutter local notifications。但是,看起来该程序包仅计划显示通知。就我而言,我希望通知是事件驱动的。

android flutter android-notifications flutter-dependencies
1个回答
0
投票

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

  1. 此软件包可以接收短信。
  2. 关闭应用程序后,任何应用程序(甚至本机Android或iOS)都无法响应任何事件。
  3. 为了在应用程序关闭时响应短信,本机android应用程序会运行某些服务。该服务就像一个应用程序一样,但是前台没有用户界面。即使关闭应用程序,服务也可以在后台运行。
  4. 在混乱中,我们必须找到一种运行后台服务的方法,该方法将侦听传入的SMS事件。即服务将至少具有此代码

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

因此,我们必须找到一种通过flutter应用程序运行android后台服务的方法,这可以通过使用flutter包在后台运行服务来实现。

我对任何类型的应用程序开发都是陌生的,我可能是错的,但这是我所发现的。如果您有出路,请分享。祝你好运。

© www.soinside.com 2019 - 2024. All rights reserved.