Flutter: 当应用程序关闭时,通过接收短信弹出通知

9

我希望在手机上发生特定事件时(例如收到预定格式的短信或来自特定电话号码的短信),弹出通知(并在单击后打开应用程序)。目前,我使用flutter SMS package,在main()中构建SmsReceiver类的实例,并尝试将短信正文打印到控制台:

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

我在真实设备(三星Galaxy 8+)上测试了代码。当应用程序在前台或后台运行时,我可以轻松获取短信内容。然而,当我关闭应用程序并收到短信时,控制台会打印以下错误信息:W/FlutterJNI(23977): Tried to send a platform message to Flutter, but FlutterJNI was detached from native C++. Could not send. Channel: plugins.babariviere.com/recvSMS. Response ID: 0。你能帮我解决这个问题吗?即使应用程序已关闭,是否有可能监听此类事件并触发通知?附注:我查看了flutter local notifications。但是,看起来该软件包仅安排通知出现。在我的情况下,我希望通知是事件驱动的。

你找到解决方案了吗? - Shazad Maved
2个回答

2

1
你的回答可以通过添加更多支持信息来改进。请编辑以添加进一步的细节,例如引用或文档,以便他人可以确认你的答案是正确的。您可以在帮助中心找到有关如何编写良好答案的更多信息。 - Community

2
我遇到了完全相同的问题。我一直在寻找稳定性好的解决方案,但是还没有成功,但我写下这个答案是为了分享我的经验和发现,希望我们能一起找到解决方案。
  1. 此包可以正常接收短信。
  2. 当应用程序关闭时,没有任何应用程序(甚至是原生Android或iOS)可以响应任何事件。
  3. 为了在应用程序关闭时响应文本消息,本机Android应用程序运行某些服务。该服务就像一个应用程序,但没有前台用户界面。服务具有在应用程序关闭时在后台运行的能力。
  4. 在Flutter中,我们必须找到一种方法来运行后台服务,以便监听传入的SMS事件。即服务将至少具有以下代码:

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

因此,我们必须找到一种通过Flutter应用程序运行Android后台服务的方法,这可以通过使用Flutter包来实现在后台运行服务。
我对任何类型的应用程序开发都很陌生,我可能是错误的,但这就是我目前所发现的。如果您找到出路,请分享。祝好运。

你找到解决方案了吗? - Shazad Maved
@ShazadMaved 你找到解决方案了吗?当应用程序在运行或后台运行时,我可以使其正常工作,但在重新启动或关闭应用程序后无法使用。 - Magnus

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接