我想在手机上发生某些特定事件时弹出通知(并单击打开应用程序时)(在我的情况下,是接收具有预定格式或特定电话号码的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
您能帮我吗?即使关闭应用程序,也可以监听此类事件并触发通知吗?
p.s。我调查了flutter local notifications。但是,看起来此程序包仅计划显示通知。就我而言,我希望通知是事件驱动的。
答案 0 :(得分:1)
我面临100%相同的问题。我仍在寻找性能稳定但还没有运气的解决方案,但我正在写此答案以分享我的经验和发现,希望我们可以一起找到解决方案。
void my_printf(char * format, ...)
{
va_list ap;
va_start(ap, format);
if(!strcmp(format,"%p"))
{
void *address= va_arg (ap, void*);
char *arr=malloc(sizeof(address));
arr=address;
arr[strlen(arr)]='\0';
write(1,arr,strlen(arr));
}
va_end (ap);
//it has to print an address in hexadecimal format.
}
因此,我们必须找到一种通过flutter应用程序运行android后台服务的方法,这可以通过使用flutter程序包在后台运行服务来实现。
我对任何类型的App开发都是陌生的,我可能是错的,但这是我所发现的。如果您找到出路,请分享。祝你好运。