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
如何使用Firebase云消息传递_Firebase_Flutter_Firebase Cloud Messaging - Fatal编程技术网

如何使用Firebase云消息传递

如何使用Firebase云消息传递,firebase,flutter,firebase-cloud-messaging,Firebase,Flutter,Firebase Cloud Messaging,我找不到任何关于新版本的文档。版本7和版本6有大量文档,而版本9几乎不存在。不仅是我,而且大多数人都找不到它。 我只是想把简单的通知发送到后台。如果有人分享关于新版本的文档,我会非常高兴。 还是应该使用旧版本?我创建了一个示例应用程序,演示如何在版本9上使用FCM实现通知系统 如果你需要更多的信息,我会编辑这个答案 我创建了一个示例应用程序,展示了如何在版本9上使用FCM实现通知系统 如果你需要更多的信息,我会编辑这个答案 我想你知道如何将firebase添加到你的应用程序中。如果没有: 将fi

我找不到任何关于新版本的文档。版本7和版本6有大量文档,而版本9几乎不存在。不仅是我,而且大多数人都找不到它。 我只是想把简单的通知发送到后台。如果有人分享关于新版本的文档,我会非常高兴。
还是应该使用旧版本?

我创建了一个示例应用程序,演示如何在版本9上使用FCM实现通知系统


如果你需要更多的信息,我会编辑这个答案

我创建了一个示例应用程序,展示了如何在版本9上使用FCM实现通知系统


如果你需要更多的信息,我会编辑这个答案

我想你知道如何将firebase添加到你的应用程序中。如果没有:

将firebase添加到应用程序后,我会这样做:

void main() async {
  WidgetsFlutterBinding.ensureInitialized();
  await Firebase.initializeApp();

  runApp(
    MaterialApp(
      debugShowCheckedModeBanner: false,
      routes: {
      '/': (context) =>  AppStarter(),
      '/message': (context) => NotificationDetails(),
      },
     ),
    );
   }



class AppStarter extends StatefulWidget{
   @override
   _AppStarterState createState() => _AppStarterState();
  }



class _AppStarterState extends State<AppStarter>
   {

     FirebaseMessaging messaging = FirebaseMessaging.instance;

    Future<void> showMeMyToken()
    async {
      var myToken = await messaging.getToken();
      print("My Token is: " + myToken.toString());
    }


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

       showMeMyToken();

      FirebaseMessaging.instance.getInitialMessage().then((value) {
       if(value != null)
        {
          Navigator.push(context,
          MaterialPageRoute(
              builder: (context){return NotificationDetails();},
          settings: RouteSettings(arguments: value.data,),
         ),
        );
       }
     });


     FirebaseMessaging.onMessage.listen((RemoteMessage message) {


        if (message.notification != null) {
           print('Message on Foreground: ${message.notification}');
              }
         });


      FirebaseMessaging.onMessageOpenedApp.listen((RemoteMessage message)
       {
         Navigator.push(
           context,
           MaterialPageRoute(
               builder: (context) {return NotificationDetails();},
               settings: RouteSettings(arguments: message.data,)
          ),
        );
     });

     FirebaseMessaging.onBackgroundMessage(firebaseMessagingBackgroundHandler);
   }


   @override
    Widget build(BuildContext context) {

      return MaterialApp(
        debugShowCheckedModeBanner: false,
        title: 'Just a Test',
        
        home: AppHome(),
       );
      }
   }




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

      print("Handling a background message :-): ${message.data}");
      //Here you can do what you want with the message :-)
     }
void main()异步{
WidgetsFlutterBinding.ensureInitialized();
等待Firebase.initializeApp();
runApp(
材料聚丙烯(
debugShowCheckedModeBanner:false,
路线:{
“/”:(上下文)=>AppStarter(),
“/message”:(上下文)=>NotificationDetails(),
},
),
);
}
类AppStarter扩展StatefulWidget{
@凌驾
_AppStarterState createState()=>\u AppStarterState();
}
类_AppStarterState扩展了状态
{
FirebaseMessaging=FirebaseMessaging.instance;
未来秀Memytoken()
异步的{
var myToken=wait messaging.getToken();
打印(“我的令牌是:“+myToken.toString());
}
@凌驾
void initState(){
super.initState();
showMeMyToken();
FirebaseMessaging.instance.getInitialMessage().then((值){
if(值!=null)
{
Navigator.push(上下文,
材料路线(
生成器:(上下文){return NotificationDetails();},
设置:路由设置(参数:value.data,),
),
);
}
});
FireBaseMessage.onMessage.listen((远程消息){
if(message.notification!=null){
打印('前台消息:${Message.notification}');
}
});
FirebaseMessaging.onMessageGeoPenedApp.listen((远程消息)
{
导航器。推(
上下文
材料路线(
生成器:(上下文){return NotificationDetails();},
设置:路由设置(参数:message.data)
),
);
});
onBackgroundMessage(firebaseMessagingBackgroundHandler);
}
@凌驾
小部件构建(构建上下文){
返回材料PP(
debugShowCheckedModeBanner:false,
标题:“只是一个测试”,
home:AppHome(),
);
}
}
未来firebaseMessagingBackgroundHandler(远程消息)异步{
等待Firebase.initializeApp();
打印(“处理背景消息:-):${message.data}”);
//在这里,您可以对消息执行任何操作:-)
}

我想你知道如何将firebase添加到你的应用程序中。如果没有:

将firebase添加到应用程序后,我会这样做:

void main() async {
  WidgetsFlutterBinding.ensureInitialized();
  await Firebase.initializeApp();

  runApp(
    MaterialApp(
      debugShowCheckedModeBanner: false,
      routes: {
      '/': (context) =>  AppStarter(),
      '/message': (context) => NotificationDetails(),
      },
     ),
    );
   }



class AppStarter extends StatefulWidget{
   @override
   _AppStarterState createState() => _AppStarterState();
  }



class _AppStarterState extends State<AppStarter>
   {

     FirebaseMessaging messaging = FirebaseMessaging.instance;

    Future<void> showMeMyToken()
    async {
      var myToken = await messaging.getToken();
      print("My Token is: " + myToken.toString());
    }


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

       showMeMyToken();

      FirebaseMessaging.instance.getInitialMessage().then((value) {
       if(value != null)
        {
          Navigator.push(context,
          MaterialPageRoute(
              builder: (context){return NotificationDetails();},
          settings: RouteSettings(arguments: value.data,),
         ),
        );
       }
     });


     FirebaseMessaging.onMessage.listen((RemoteMessage message) {


        if (message.notification != null) {
           print('Message on Foreground: ${message.notification}');
              }
         });


      FirebaseMessaging.onMessageOpenedApp.listen((RemoteMessage message)
       {
         Navigator.push(
           context,
           MaterialPageRoute(
               builder: (context) {return NotificationDetails();},
               settings: RouteSettings(arguments: message.data,)
          ),
        );
     });

     FirebaseMessaging.onBackgroundMessage(firebaseMessagingBackgroundHandler);
   }


   @override
    Widget build(BuildContext context) {

      return MaterialApp(
        debugShowCheckedModeBanner: false,
        title: 'Just a Test',
        
        home: AppHome(),
       );
      }
   }




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

      print("Handling a background message :-): ${message.data}");
      //Here you can do what you want with the message :-)
     }
void main()异步{
WidgetsFlutterBinding.ensureInitialized();
等待Firebase.initializeApp();
runApp(
材料聚丙烯(
debugShowCheckedModeBanner:false,
路线:{
“/”:(上下文)=>AppStarter(),
“/message”:(上下文)=>NotificationDetails(),
},
),
);
}
类AppStarter扩展StatefulWidget{
@凌驾
_AppStarterState createState()=>\u AppStarterState();
}
类_AppStarterState扩展了状态
{
FirebaseMessaging=FirebaseMessaging.instance;
未来秀Memytoken()
异步的{
var myToken=wait messaging.getToken();
打印(“我的令牌是:“+myToken.toString());
}
@凌驾
void initState(){
super.initState();
showMeMyToken();
FirebaseMessaging.instance.getInitialMessage().then((值){
if(值!=null)
{
Navigator.push(上下文,
材料路线(
生成器:(上下文){return NotificationDetails();},
设置:路由设置(参数:value.data,),
),
);
}
});
FireBaseMessage.onMessage.listen((远程消息){
if(message.notification!=null){
打印('前台消息:${Message.notification}');
}
});
FirebaseMessaging.onMessageGeoPenedApp.listen((远程消息)
{
导航器。推(
上下文
材料路线(
生成器:(上下文){return NotificationDetails();},
设置:路由设置(参数:message.data)
),
);
});
onBackgroundMessage(firebaseMessagingBackgroundHandler);
}
@凌驾
小部件构建(构建上下文){
返回材料PP(
debugShowCheckedModeBanner:false,
标题:“只是一个测试”,
home:AppHome(),
);
}
}
未来firebaseMessagingBackgroundHandler(远程消息)异步{
等待Firebase.initializeApp();
打印(“处理背景消息:-):${message.data}”);
//在这里,您可以对消息执行任何操作:-)
}

非常感谢您。我试图添加您的代码,但我无法管理。我基本了解flifter。感觉很复杂,就像一部诺兰电影。我想我应该试着只发送本地通知。旧版本只发送了几行代码的通知。这太难了。再次感谢。您好,您的示例只显示后台处理程序,在版本9中没有任何问题,但是FirebaseMessaging.onMessage.listen呢?看来新的插件版本9已经和未解决的问题非常感谢你。我试图添加您的代码,但我无法管理。我基本了解flifter。感觉很复杂,就像一部诺兰电影。我想我应该