我正在使用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))
})
}