import FirebaseConstants from "./FirebaseConstants"; import { Platform, Alert } from "react-native"; const API_URL = "https://fcm.googleapis.com/fcm/send"; class FirebaseClient { constructor() { this.sendData = this.sendData.bind(this); this.sendNotification = this.sendNotification.bind(this); this.sendNotificationWithData = this.sendNotificationWithData.bind(this); } sendNotification(token) { let body; if(Platform.OS === 'android'){ body = { "to": token, "data":{ "custom_notification": { "title": "Simple FCM Client", "body": "This is a notification with only NOTIFICATION.", "sound": "default", "priority": "high", "show_in_foreground": true } }, "priority": 10 } } else { body = { "to": token, "notification":{ "title": "Simple FCM Client", "body": "This is a notification with only NOTIFICATION.", "sound": "default" }, "priority": 10 } } this._send(JSON.stringify(body), "notification"); } sendData(token) { let body = { "to": token, "data":{ "title": "Simple FCM Client", "body": "This is a notification with only DATA.", "sound": "default" }, "priority": "normal" } this._send(JSON.stringify(body), "data"); } sendNotificationWithData(token) { let body = { "to": token, "notification":{ "title": "Simple FCM Client", "body": "This is a notification with NOTIFICATION and DATA (NOTIF).", "sound": "default" }, "data":{ "hello": "there" }, "priority": "high" } this._send(JSON.stringify(body), "notification-data"); } async _send(body, type) { if(FirebaseClient.KEY === 'YOUR_API_KEY'){ Alert.alert('Set your API_KEY in app/FirebaseConstants.js') return; } let headers = new Headers({ "Content-Type": "application/json", "Authorization": "key=" + FirebaseConstants.KEY }); try { let response = await fetch(API_URL, { method: "POST", headers, body }); console.log(response); try{ response = await response.json(); if(!response.success){ Alert.alert('Failed to send notification, check error log') } } catch (err){ Alert.alert('Failed to send notification, check error log') } } catch (err) { Alert.alert(err && err.message) } } } let firebaseClient = new FirebaseClient(); export default firebaseClient;