как отправить push-уведомление при нажатии кнопки в реагировать родной - PullRequest
0 голосов
/ 05 октября 2019

Я пытаюсь отправить 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);
  }
});
...