Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/flutter/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Flatter Firebase消息停用可见通知_Firebase_Flutter_Firebase Cloud Messaging - Fatal编程技术网

Flatter Firebase消息停用可见通知

Flatter Firebase消息停用可见通知,firebase,flutter,firebase-cloud-messaging,Firebase,Flutter,Firebase Cloud Messaging,如何停用Firebase消息中的可见通知,并使用Flatter_local_notifications包手动处理通知,使通知不会显示两次?我无法编辑服务器集成端,因为我正在使用wordpress插件()为我发送通知请求 有效载荷如下所示: String selectedNotificationPayload=“”; 最终颤振局部通知图京颤振局部通知图京= flatterLocalNotificationsPlugin(); 最终行为主体选择通知主体= 行为主体(); FirebaseMessag

如何停用Firebase消息中的可见通知,并使用Flatter_local_notifications包手动处理通知,使通知不会显示两次?我无法编辑服务器集成端,因为我正在使用wordpress插件()为我发送通知请求

有效载荷如下所示:

String selectedNotificationPayload=“”;
最终颤振局部通知图京颤振局部通知图京=
flatterLocalNotificationsPlugin();
最终行为主体选择通知主体=
行为主体();
FirebaseMessaging;
Future main()异步{
WidgetsFlutterBinding.ensureInitialized();
flatterLocalNotificationsPlugin flatterLocalNotificationsPlugin=
flatterLocalNotificationsPlugin();
常量AndroidInitializationSettings initializationSettingsAndroid=
AndroidInitializationSettings(“共享图标”);
最终IOS初始化设置初始化设置SIOS=
IOS初始化设置(
请求权限:false,
请求权限:false,
requestAlertPermission:false,
onDidReceiveLocalNotification:
(int-id、字符串标题、字符串正文、字符串有效负载)异步{});
最终初始化设置初始化设置=初始化设置(
android:initializationSettingsAndroid,
iOS:初始化设置SIOS,
);
通知ApplaunchDetails通知ApplaunchDetails=
等待LocalNotificationsPlugin.getNotificationAppLaunchDetails();
if(notificationAppLaunchDetails?.didNotificationLaunchApp??false){
selectedNotificationPayload=notificationAppLaunchDetails.payload;
}
等待LocalNotificationsPlugin.initialize(初始化设置,
onSelectNotification:(字符串负载)异步{
如果(有效负载!=null){
selectedNotificationPayload=有效载荷;
选择NotificationSubject.add(有效载荷);
}
});
FirebaseMessagingBackgroundMessage(_firebaseMessagingBackgroundHandler);
runApp(Start());
}
类开始扩展StatefulWidget{
@凌驾
_StartState createState()=>_StartState();
}
类_StartState扩展状态{
void initializeFlutterFire()异步{
试一试{
等待Firebase.initializeApp();
打印(“Firebase-已成功初始化”);
}捕获(e){
打印(“Firebase-初始化失败”);
}
messaging=firebasemsaging.instance;
}
void\u配置SelectNotificationSubject()异步{
选择NotificationSubject.stream.listen((字符串url)异步{
试一试{
等待未来。延迟(持续时间(毫秒:500),()异步{
wait Navigator.of(context.push)(新路由(_url,“”));
});
}捕获(e){
印刷品(“Fehler beimöffnen der网站”);
}
});
}
@凌驾
initState(){
super.initState();
初始化fLutterFire();
}
...
}
Future\u firebaseMessagingBackgroundHandler(RemoteMessage)异步{
等待Firebase.initializeApp();
地图数据=message.data;
字符串_title=数据['title'];
字符串_description=数据['message'];
发送通知(标题、说明);
}

send only data payload我无法更改发送到设备的内容,是否有方法在应用程序中执行此操作?
String selectedNotificationPayload = "";
final FlutterLocalNotificationsPlugin flutterLocalNotificationsPlugin =
    FlutterLocalNotificationsPlugin();
final BehaviorSubject<String> selectNotificationSubject =
    BehaviorSubject<String>();
FirebaseMessaging messaging;

Future<void> main() async {
  WidgetsFlutterBinding.ensureInitialized();

  FlutterLocalNotificationsPlugin flutterLocalNotificationsPlugin =
      FlutterLocalNotificationsPlugin();

  const AndroidInitializationSettings initializationSettingsAndroid =
      AndroidInitializationSettings('share_icon');

  final IOSInitializationSettings initializationSettingsIOS =
      IOSInitializationSettings(
          requestSoundPermission: false,
          requestBadgePermission: false,
          requestAlertPermission: false,
          onDidReceiveLocalNotification:
              (int id, String title, String body, String payload) async {});

  final InitializationSettings initializationSettings = InitializationSettings(
    android: initializationSettingsAndroid,
    iOS: initializationSettingsIOS,
  );

  NotificationAppLaunchDetails notificationAppLaunchDetails =
      await flutterLocalNotificationsPlugin.getNotificationAppLaunchDetails();
  if (notificationAppLaunchDetails?.didNotificationLaunchApp ?? false) {
    selectedNotificationPayload = notificationAppLaunchDetails.payload;
  }

  await flutterLocalNotificationsPlugin.initialize(initializationSettings,
      onSelectNotification: (String payload) async {
    if (payload != null) {
      selectedNotificationPayload = payload;
      selectNotificationSubject.add(payload);
    }
  });

  FirebaseMessaging.onBackgroundMessage(_firebaseMessagingBackgroundHandler);

  runApp(Start());
}
class Start extends StatefulWidget {
  @override
  _StartState createState() => _StartState();
}

class _StartState extends State<Start>{
  void initializeFlutterFire() async {
    try {
      await Firebase.initializeApp();
      print("Firebase - initialzed successfully");
    } catch (e) {
      print("Firebase - initialzed FAILED");
    }
    messaging = FirebaseMessaging.instance;
  }

  void _configureSelectNotificationSubject() async {
    selectNotificationSubject.stream.listen((String _url) async {
      try {
        await Future.delayed(Duration(milliseconds: 500), () async {
          await Navigator.of(context).push(new Route(_url, ""));
        });
      } catch (e) {
        print("Fehler beim öffnen der Website");
      }
    });
  }

  @override
  initState() {
    super.initState();

    initializeFlutterFire();
  }

...

}
Future<void> _firebaseMessagingBackgroundHandler(RemoteMessage message) async {
  await Firebase.initializeApp();

  Map<String, dynamic> data = message.data;

  String _title = data['title'];
  String _description = data['message'];

  sendNotification(_title, _description);
}