React Native Expo通知不响应(Firebase)

时间:2019-12-02 19:19:27

标签: javascript firebase react-native push-notification expo

我正在使用React Native,Expo和Firebase开发一个应用程序。目前,我正在尝试使通知正常运行(在应用程序外部以及在IOS和Android上)。 docs说,您应该能够将Notifications.addListener(listener)listener一起用作回调函数来实现通知,但这是行不通的。任何帮助将不胜感激,因为此功能对我的项目至关重要!下面的代码不会出错,但不会收到任何通知。

App.js

import { createAppContainer, createSwitchNavigator } from 'react-navigation';
import { createStackNavigator } from 'react-navigation-stack';

import KeyScreen from './src/screens/KeyScreen';
import AdminScreen from './src/screens/AdminScreen';
import HomeScreen from './src/screens/HomeScreen';
import ConfirmScreen from './src/screens/ConfirmScreen';
import ChatScreen from './src/screens/ChatScreen';
import MapScreen from './src/screens/MapScreen';

import firebase from 'firebase';
import { firebaseConfig } from './config';

import Database from './src/screens/components/Database';
const db = new Database();

import { Notifications } from 'expo';

firebase.initializeApp(firebaseConfig);

const MainStack = createStackNavigator({
  Home: { 
    screen: HomeScreen // The main screen of the app. Has all the buttons
  },
  Chat: {
    screen: ChatScreen // Used to chat between Principal and teachers
  },
  Map: {
    screen: MapScreen
  },
  Admin: {
    screen: AdminScreen // Principal ONLY screen used to edit database
  },
}, {
  initialRouteName: 'Home',
  headerMode: 'none',
})

const LoginStack = createStackNavigator({
  Key: { 
    screen: KeyScreen // Users type in special key to login
  },
  Confirm: {
    screen: ConfirmScreen // Confirms the User's credentials
  },
}, {
  initialRouteName: 'Key',
  headerMode: 'none',
})


const RootStack = createSwitchNavigator ({
  Login: {
    screen: LoginStack
  },
  Main: {
    screen: MainStack
  }
}, {
  initialRouteName: 'Login',
  headerMode: 'none',
  defaultNavigationOptions: {
    gesturesEnabled: false,
  },
}
);

// Here is the listner for notifications. This does not error out but gives no response.
Notifications.addListener(db.mapOn)

// Disables Yellow text on the Virtural Device
console.disableYellowBox = true;

const App = new createAppContainer(RootStack);
console.disableYellowBox = true;
export default App;

地图回调函数

mapOn = callback => {
    firebase.database().ref('alerts/emergency/')
        .on('child_added', snapshot => {
            callback(this.edit(snapshot))
        })
}

0 个答案:

没有答案