Fcm 背景 颤振中的通知



我已经在后台使用Firebase消息传递实现了通知。但是,问题是这个;如何将数据从函数 myBackgroundMessageHandler 返回到 FirebaseNotification?

Future<dynamic> myBackgroundMessageHandler(Map<String, dynamic> message) {
return Future<void>.value();
}
class FirebaseNotifications {
FirebaseMessaging _firebaseMessaging;
FlutterLocalNotificationsPlugin flutterLocalNotificationsPlugin;
void setUpFirebase() {
_firebaseMessaging = FirebaseMessaging();
}
void fcmListeners() {
_firebaseMessaging.configure(
onMessage: (Map<String, dynamic> message) async {
print("OnMessage");
processNotification(message);
return;
},
onBackgroundMessage: myBackgroundMessageHandler,
onLaunch: (Map<String, dynamic> message) async {
print("onLaunch");
processNotification(message);
return;
},
onResume: (Map<String, dynamic> message) async {
print("onResume");
processNotification(message);
return;
},
);
}
processNotification(message) {}
}

目前Fireflutter库中存在一个错误。 不能从代码访问变量,即使使用了静态变量或全局变量也是如此。

看看这里:

https://github.com/FirebaseExtended/flutterfire/issues/1878

我写了一个小程序,它可以允许在您的应用程序在后台或终止时侦听后台消息推送通知(仅在Android上测试,因为我没有iOS帐户(。

这是指向存储库的链接 点击这里!

您必须使用共享首选项来保存来自通知的任何数据并在应用程序中访问它。 由于函数在其自己的隔离上运行,因此它无法访问应用中的任何静态或全局变量。 下面是一个演示:

Future<void> firebaseMessagingBackgroundHandler(
RemoteMessage remoteMessage,
) async {
String logicFlow = remoteMessage.data['logic_flow'];
if (logicFlow != null) {
if (logicFlow.isNotEmpty) {
final prefs = await SharedPreferences.getInstance();
await prefs.setString('required_string', logicFlow);
}
}
}

在此之后:您可以使用用于存储 .i.e 的相同密钥从应用内的任何位置访问字符串。

final prefs = await SharedPreferences.getInstance();
String requiredString  = await prefs.getString('required_string');

相关内容

  • 没有找到相关文章

最新更新