FCM 테스트 코드

BBANG-JUN·2020년 10월 12일
0
import 'dart:convert';

import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:firebase_messaging/firebase_messaging.dart';
import 'package:vibration/vibration.dart';
import 'package:http/http.dart' as http;

void main() {
  runApp(MaterialApp(
    home: MyApp(),
  ));
}

class MyApp extends StatefulWidget {
  @override
  _MyAppState createState() => _MyAppState();
}

class _MyAppState extends State<MyApp> {
  final _url = "http://192.168.15.78:3000";
  String _homeScreenText = "토큰 메세지";
  String _messageText = "대기 메세지";
  String result = "결과";
  var tokenId = "";


  final FirebaseMessaging _firebaseMessaging = FirebaseMessaging();

  Future<String> fetch() async {
    http.Response _res = await http.get(_url + "/");
    String _resBody = json.decode(_res.body);
    print(_resBody);
    return _resBody;
  }

  @override
  void initState() {
    super.initState();
    firebaseCloudMessaging_Listeners();
    setState(() {});
  }

  void firebaseCloudMessaging_Listeners() {
    _firebaseMessaging.getToken().then((String token){
      print('token:'+token);
      tokenId = token;
    });

    _firebaseMessaging.configure(
      /** 앱이 실행중인 경우 **/
      onMessage: (Map<String, dynamic> message) async {
        Vibration.vibrate(duration: 1000, amplitude: 128);
        setState(() {
          _messageText = "Push Messaging message: $message";
        });
        print("onMessage: $message");
      },

      /** 앱이 완전히 종료된 경우 **/
      onLaunch: (Map<String, dynamic> message) async {
        Vibration.vibrate(duration: 1000, amplitude: 128);
        setState(() {
          _messageText = "Push Messaging message: $message";
        });
        print("onLaunch: $message");
      },

      /** 앱이 닫혀있지만 백그라운드로 동작중인 경우 **/
      onResume: (Map<String, dynamic> message) async {
        Vibration.vibrate(duration: 1000, amplitude: 128);
        setState(() {
          _messageText = "Push Messaging message: $message";
        });
        print("onResume: $message");
      },
    );

    _firebaseMessaging.requestNotificationPermissions(
        const IosNotificationSettings(sound: true, badge: true, alert: true)
    );

    _firebaseMessaging.onIosSettingsRegistered.listen((IosNotificationSettings settings) {
      Vibration.vibrate(duration: 1000, amplitude: 128);
      print("Settings registered: $settings");
    });
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(

      body: Column(
        mainAxisAlignment: MainAxisAlignment.spaceEvenly,
        children: <Widget>[
          Text(_homeScreenText),

          Text(_messageText),

          Text(result),

          RaisedButton(
            child: Text("메세지 보내기"),
            onPressed:() async{
              await http.post( _url + '/target', body: {
                "token" : tokenId
              });
            },
          ),


        ],
      )

    );
  }
}
profile
🔥 머릿속으로 생각하지만 말고, 행동으로 보여줘

0개의 댓글