繁体   English   中英

将来自 Firebase 云消息传递控制台的自定义数据显示到 Flutter 应用程序?

[英]Display Custom Data from Firebase Cloud Messaging console to Flutter app?

嗨,有什么方法可以使用我在 Firebase Cloud Messaging 控制台中设置的keyvalue ,将通知推送到我的 Flutter 应用程序中的显示的Additional Options

我很难完成这项工作 tbh,例如,我在 FCM 控制台中使用了密钥的url和值的链接。

我真正想要的是这样的:当我发送推送通知时,它会显示到我的应用程序中的自定义屏幕/url_launcher/widget 并且该屏幕/url_launcher/widget 显示我使用KEYVALUE在 FCM 控制台中输入的数据我在发送推送通知时设置的。

问题是如何在我的应用程序中显示这些数据? 我如何使用这些键和值? 我有点迷失了如何编码 tbh

下面是我的代码:

import 'dart:async';
import 'dart:io';
import 'dart:math';
import 'package:firebase_messaging/firebase_messaging.dart';
import 'package:flutter/material.dart';
import 'package:webview_flutter/webview_flutter.dart';
import 'package:url_launcher/url_launcher.dart';

class HomePage extends StatefulWidget {
  HomePage({Key key}) : super(key: key);

  @override
  _HomePageState createState() => _HomePageState();
}

class _HomePageState extends State<HomePage> {

  final FirebaseMessaging _firebaseMessaging = FirebaseMessaging();


@override
void initState() {
  super.initState();
  firebaseCloudMessagingListeners();
}
void firebaseCloudMessagingListeners() {
  if (Platform.isIOS) iOSPermission();

  _firebaseMessaging.getToken().then((token){
    print(token);
  });

  _firebaseMessaging.configure(
    onMessage: (Map<String, dynamic> message) async {
      print('on message $message');

    },
    onResume: (Map<String, dynamic> message) async {
      print('on resume $message');
    },
    onLaunch: (Map<String, dynamic> message) async {
      print('on launch $message');
    },
  );
}

void iOSPermission() {
  _firebaseMessaging.requestNotificationPermissions(
      IosNotificationSettings(sound: true, badge: true, alert: true)
  );
  _firebaseMessaging.onIosSettingsRegistered
      .listen((IosNotificationSettings settings)
  {
    print("Settings registered: $settings");
  });
}



  WebViewController _myController;
      final Completer<WebViewController> _controller =
      Completer<WebViewController>();
  @override
  Widget build(BuildContext context) {
    return SafeArea(
            child: Scaffold(
                  body: WebView(
                  initialUrl: 'https://syncshop.online/en/',
                  javascriptMode: JavascriptMode.unrestricted,
                  onWebViewCreated: (controller) {
                  _controller.complete(controller);
                },
          onPageFinished: (controller) async {
          (await _controller.future).evaluateJavascript("document.getElementsByClassName('footer-container')[0].style.display='none';");
            (await _controller.future).evaluateJavascript("document.getElementById('st_notification_1').style.display='none';");
            (await _controller.future).evaluateJavascript("document.getElementById('sidebar_box').style.display='none';");
          },
          ),
    floatingActionButton: FutureBuilder<WebViewController>(
        future: _controller.future,
        builder: (BuildContext context, AsyncSnapshot<WebViewController> controller) {
          if (controller.hasData) {
            return FloatingActionButton(
            onPressed: () {
              controller.data.reload();
            },
            child: Icon(Icons.refresh),
          );
          }
          return Container();
        }
        ),
          ),
      );
    }
}

这是您应该如何从控制台发送自定义数据,

在此处输入图片说明

你可以收到这样的通知,

   _firebaseMessaging.configure(
      onMessage: (Map<String, dynamic> message) async {
        print("$message");

输出

{notification: {title: rrakkk, body: wer}, data: {url: stackoverflow}}

如何从上面获取url值?

 print("${message['data']['url']}");

输出

堆栈溢出

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM