Я пытаюсь отправить push-уведомление в реагировать на родную при нажатии кнопки.
Я создал сервер node.js для отправки push-уведомлений.
Мне нужно запустить сервер node.js при нажатии кнопки внутри приложения. Не в терминале (пример; узел serverFileName.js) - Как я могу это сделать?
Я пытался этот документ для связи node.js и реагировать на собственный, но не поддерживается в Windows.
ОШИБКА: Неподдерживаемая операционная система для собственных сборок nodejs-mobile: Windows 10
- Я новичок в реагировании на нативную. Как я могу решить эту проблему?
ФАЙЛ: App.js
import PushNotification from 'react-native-push-notification';
import firebase from 'react-native-firebase';
import nodejs from 'nodejs-mobile-react-native';
import React, {Component} from 'react';
import {Button, PushNotificationIOS, Alert} from 'react-native';
export default class App extends Component {
componentDidMount() {
nodejs.start('./server.js');
nodejs.channel.addListener(
'message',
msg => {
//alert('From node: ' + msg);
Alert.alert('From node: ' + msg);
},
this,
);
}
onclick() {}
render() {
return <Button title="Gönder" />;
}
}
const messaging = firebase.messaging();
messaging
.hasPermission()
.then(enable => {
if (enable) {
messaging
.getToken()
.then(token => {
console.log('token degeri: ' + token);
})
.catch(error => {});
} else {
messaging
.requestPermission()
.then(() => {})
.catch(error => {});
}
})
.catch(error => {});
firebase.notifications().onNotification(notification => {
const {title, body} = notification;
PushNotification.localNotification({
title: title,
message: body,
});
});
PushNotification.configure({
// (optional) Called when Token is generated (iOS and Android)
onRegister: function(token) {
console.log('TOKEN:', token);
},
// (required) Called when a remote or local notification is opened or received
onNotification: function(notification) {
console.log('NOTIFICATION:', notification);
// process the notification
// required on iOS only (see fetchCompletionHandler docs: https://github.com/react-native-community/react-native-push-notification-ios)
notification.finish(PushNotificationIOS.FetchResult.NoData);
},
// ANDROID ONLY: GCM or FCM Sender ID (product_number) (optional - not required for local notifications, but is need to receive remote push notifications)
senderID: '463384531365',
// IOS ONLY (optional): default: all - Permissions to register.
permissions: {
alert: true,
badge: true,
sound: true,
},
// Should the initial notification be popped automatically
// default: true
popInitialNotification: true,
/**
* (optional) default: true
* - Specified if permissions (ios) and token (android and ios) will requested or not,
* - if not, you must call PushNotificationsHandler.requestPermissions() later
*/
requestPermissions: true,
});
ФАЙЛ: server.js
const fcm = require('fcm-notification');
const FCM = new fcm('./bildirim8-4090c-firebase.json');
const token =
'exe-079BQlU:APA91bEI0UFim_Sl4G8mZbfbQ84obrkaXQ47bUlmx_Po5ntkh5hp1BbiNSP_lh28cmUEvUaW5VSe765_yRSVuFyPv5wqgFhh0Jat-Lj3kGZGB-I37lCvg8Ab3q9TRNdOpPBiolS10tmJ';
var message = {
data: {
//This is only optional, you can send any data
score: '850',
time: '2:45',
},
notification: {
title: 'inside node.js server',
body: 'message sent!',
},
token: token,
};
FCM.send(message, function(err, response) {
if (err) {
console.log('error found', err);
} else {
console.log('response here', response);
}
});