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