【发布时间】:2021-01-11 09:26:47
【问题描述】:
我有一个消息应用程序,它接收来自 Firebase Cloud Messaging 的推送通知,当它接收到时,它会将其推送到流中。为了跟踪不同的流,我有一个streamtable,它是一个全局变量。这就是我所拥有的
Map<String, StreamController<dynamic>> streamtable;
Future<dynamic> myBackgroundMessageHandler(Map<String, dynamic> message) async {
log('FCM onBackground: $message');
log('streamTable: $streamtable');
addToStream(message);
await showNotification(message);
return;
}
bool addToStream(Map<String, dynamic> message) {
var data;
if (Platform.isAndroid) {
data = message['data'];
} else if (Platform.isIOS) {
data = message;
}
bool status;
try {
switch (data['streamType']) {
case "Message":
streamtable['MessageStream'].add(message);
status = true;
break;
default:
log("streamType: ${data['streamType']}");
status = false;
break;
}
} catch (e) {
status = false;
log('addToStream: error($e)');
}
return status;
}
当应用程序处于前台时,一切正常。但是,当应用程序在后台时,streamtable 变为 null,并且没有任何作用。
- 首先,为什么会这样?如果我将应用程序带回前台,
streamtable不是null。 - 当应用在后台时如何存储收到的数据?
【问题讨论】:
标签: flutter dart push-notification firebase-cloud-messaging