启用或禁用通知抖动

Moh*_*hat 6 push-notification dart flutter firebase-cloud-messaging

我想借助一个按钮来启用/禁用通知服务,当启用此按钮时,用户会收到通知,而当它被禁用时,他将不会收到任何通知。

import 'dart:io';

import 'package:firebase_messaging/firebase_messaging.dart';

class FirebaseNotifications {
  FirebaseMessaging _firebaseMessaging;

  void setUpFirebase() {
    _firebaseMessaging = FirebaseMessaging();
    firebaseCloudMessaging_Listeners();

  }

  void firebaseCloudMessaging_Listeners() {
    if (Platform.isIOS) iOS_Permission();

    _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 iOS_Permission() {
    _firebaseMessaging.requestNotificationPermissions(
        IosNotificationSettings(sound: true, badge: true, alert: true));
    _firebaseMessaging.onIosSettingsRegistered
        .listen((IosNotificationSettings settings) {
      print("Settings registered: $settings");
    });
  }
}
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

edw*_*opú 4

你应该做的是,在实现通知时,让用户订阅一个主题

FirebaseMessaging.instance.subscribeToTopic ('news');
Run Code Online (Sandbox Code Playgroud)

如果该用户想要停用通知,您只需使用以下命令取消订阅该主题

FirebaseMessaging.instance.unsubscribeFromTopic ('news');
Run Code Online (Sandbox Code Playgroud)

显然,当您从后端或控制台发送通知时,您必须指定该主题“新闻”或您决定放置它的名称