work_caglar
bilgisayardan veya server uzerinden uygulamaya fcm ile bildirim gönderebilirsiniz. Firebase uzerinden projenizi oluşturup Cloud Messaging özelliğini aktif edip server token almalisiniz.
bu token ile http.post destekleyen herhangi bir platformdan uygulamaya bildirim gönderebilirsiniz.
fcm, cihazların bildirim alabilmesi icin token a ihtiyac duyar her cihaz icin.
// cihaza ait token i almak icin
Future<String> getNotificationToken() async {
return await firebaseMessaging.getToken();
}
gelen bildirimi islemek icin
FirebaseMessaging firebaseMessaging;
InitializeManager() {
firebaseMessaging = FirebaseMessaging();
if (Platform.isIOS) {
firebaseMessaging.requestNotificationPermissions(IosNotificationSettings(
sound: true,
badge: true,
alert: true,
));
}
firebaseMessaging.configure(
// program açıkken bildirim gönderilirse bu fonksiyon tetiklenir
onMessage: (Map<String, dynamic> message) async {
print("onMessage: $message");
},
// program kapalı iken bildirim gönderilirse bu fonksiyon tetiklenir
onLaunch: (Map<String, dynamic> message) async {
openScreen(message, true);
},
// program arka planda iken bildirim gönderilirse bu fonksiyon tetiklenir
onResume: (Map<String, dynamic> message) async {
openScreen(message, false);
},
);
}
bu fonksiyon ise uygulama icinden uygulamayı kullanan baska birine bildirim göndermek icin kullanılır. görüldüğü gibi http.post uzerinden yapilmakta. Telefona bildirim atmak icin bu yapıyı pc den fcm serverine yollamanız lazım.
Future<Map<String, dy
const String FCM_SERVER_TOKEN = 'kendi uygulamanızın server tokeni Firebase uzerinden otomatik oluşturuluyor';
namic>> sendAndRetrieveMessage(String token, String message) async {
await http.post(
'https://fcm.googleapis.com/fcm/send',
headers: <String, String>{
'Content-Type': 'application/json',
'Authorization': 'key=$FCM_SERVER_TOKEN',
},
body: jsonEncode(
<String, dynamic>{
'notification': <String, dynamic>{
'body': message,
'title': 'Root Message'
},
'priority': 'high',
'data': <String, dynamic>{
'click_action': 'FLUTTER_NOTIFICATION_CLICK',
'id': '1',
'status': 'done'
},
'to': token, // bu ise uygulamanın cihaz icin oluşturduğu firebaseMessaging.getToken(); ile alindigi token
// pc yi uygulama uzerinden kapatmak icin ise kendi server inize kapatma komutunu/verisini gönderip yapabilirsiniz.
},
),
);
final Completer<Map<String, dynamic>> completer =
Completer<Map<String, dynamic>>();
firebaseMessaging.configure(
onMessage: (Map<String, dynamic> message) async {
completer.complete(message);
},
);
return completer.future;
}