Отображать пользовательские данные из консоли Firebase Cloud Messaging в приложение Flutter? - PullRequest
0 голосов
/ 06 января 2020

Привет, есть ли способ использовать key и value, которые я установил в моей консоли Firebase Cloud Messaging, Additional Options для pu sh Уведомление для отображения в моем приложении Flutter?

Мне трудно заставить эту работу, например, я использовал url для ключа и ссылку для моего значения в консоли FCM.

Что я точно хочу примерно так: когда я отправляю уведомление pu sh, оно отображается на пользовательском экране / url_launcher / widget в моем приложении, и этот экран / url_launcher / widget показывает данные, которые я ввел в консоль FCM с помощью KEY и VALUE , которые я установил при отправке уведомления pu sh.

Проблема заключается в том, как отобразить эти данные в моем приложении? как использовать эти ключ и значение? Я немного заблудился с тем, как его кодировать.

ниже мой код:

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();
        }
        ),
          ),
      );
    }
}

1 Ответ

1 голос
/ 06 января 2020

Это то, как вы должны отправлять пользовательские данные с консоли,

enter image description here

Вы можете получить уведомление, как это,

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

Вывод

{уведомление: {title: rrakkk, body: wer}, данные: {url: stackoverflow}}

Как получить url значение сверху?

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

Выход

stackoverflow

...