TypeError Object не является конструктором (оценивает new_pubnubReact.default ') - PullRequest
0 голосов
/ 21 апреля 2020

Я новичок, чтобы реагировать на родной язык и пытаюсь создать уведомления pu sh для android.

Я использую следующий учебник из PubNub.

Учебник PubNub

Когда я запускаю свое приложение в эмуляторе android studio после завершения Учебное пособие Я получаю следующую ошибку.

error

Не совсем уверен, что это значит, как исправить это, как, когда я Google, проблема не возникает ничего.

Вот мой код

import React from 'react';
    import PushNotificationIOS from 'react-native';
    import PubNubReact from 'pubnub-react';

    const PushNotification = require('react-native-push-notification');

    export default class App extends React.Component {
    constructor(props) {
    super(props);
    this.pubnub = new PubNubReact({
        publishKey: 'YOUR_PUBNUB_PUBLISH_KEY_HERE',
        subscribeKey: 'YOUR_PUBNUB_SUBSCRIBE_KEY_HERE'
    });
    this.pubnub.init(this);
    PushNotification.configure({
      // Called when Token is generated.
      onRegister: function(token) {
          console.log( 'TOKEN:', token );
          if (token.os == "ios") {
            this.pubnub.push.addChannels(
            {
              channels: ['notifications'],
              device: token.token,
              pushGateway: 'apns'
            });
            // Send iOS Notification from debug console: {"pn_apns":{"aps":{"alert":"Hello World."}}}
          } else if (token.os == "android"){
            this.pubnub.push.addChannels(
            {
              channels: ['notifications'],
              device: token.token,
              pushGateway: 'gcm' // apns, gcm, mpns
            });
            // Send Android Notification from debug console: {"pn_gcm":{"data":{"message":"Hello World."}}}
          }  
      }.bind(this),
      // Something not working?
      // See: https://support.pubnub.com/support/solutions/articles/14000043605-how-can-i-troubleshoot-my-push-notification-issues-
      // Called when a remote or local notification is opened or received.
      onNotification: function(notification) {
        console.log( 'NOTIFICATION:', notification );
        // Do something with the notification.
        // Required on iOS only (see fetchCompletionHandler docs: https://reactnative.dev/docs/pushnotificationios)
        // notification.finish(PushNotificationIOS.FetchResult.NoData);
      },
      // ANDROID: GCM or FCM Sender ID
      senderID: "sender-id",
  });
}
    }

1 Ответ

0 голосов
/ 22 апреля 2020

pubnub-react библиотека полностью изменена в версии 2.0.0. Он больше не включает pubnub JavaScript SDK по умолчанию, поэтому его также необходимо установить.

Вот ссылка на новый репозиторий PubNub React и в README.md В файле вы можете найти примеры того, как его использовать.

Чтобы суммировать изменения, pubnub-react теперь использует Context и Hooks API для распространения экземпляра PubNub вглубь дочернего дерева.

Provider

Вам нужно включить провайдера где-то сверху в дереве компонентов.

import React from 'react'
import PubNub from 'pubnub'
import { PubNubProvider } from 'pubnub-react'

const pubnub = new PubNub({}) // PubNub configuration

export const App = () => {
    return <PubNubProvider client={pubnub}>
        <Child />
    </PubNubProvider>
}

Потребитель

Чтобы использовать экземпляр PubNub где-то еще, вы можете просто использовать usePubNub крючок.

import { usePubNub } from 'pubnub-react'

export const Child = () => {
    const pubnub = usePubNub()

    return <div>I am using PubNub!</div>
}
...