我正在使用react-navigation和react-native-push- notification。如何StackNavigator's在onNotification回调中打开某个屏幕?应在以下情况下工作:
react-navigation
react-native-push- notification
StackNavigator's
onNotification
我现在只需要它在Android中工作即可。
我试图将回调函数传递给组件中的通知:
_handleClick() { PushNotification.localNotification({ foreground: false userInteraction: false message: 'My Notification Message' onOpen: () => { this.props.navigation.navigate("OtherScreen") }, }) }
并onOpen在PushNotification配置中触发:
onOpen
PushNotification
onNotification: function(notification) { notification.onOpen() }
但是似乎函数不能传递给通知,除非值是一个字符串,它会被忽略,从而导致onOpen未定义。
好的,好像我要发布自己的解决方案了:)
// src/services/push-notification.js const PushNotification = require('react-native-push-notification') export function setupPushNotification(handleNotification) { PushNotification.configure({ onNotification: function(notification) { handleNotification(notification) }, popInitialNotification: true, requestPermissions: true, }) return PushNotification } // Some notification-scheduling component import {setupPushNotification} from "src/services/push-notification" class SomeComponent extends PureComponent { componentDidMount() { this.pushNotification = setupPushNotification(this._handleNotificationOpen) } _handleNotificationOpen = () => { const {navigate} = this.props.navigation navigate("SomeOtherScreen") } _handlePress = () => { this.pushNotification.localNotificationSchedule({ message: 'Some message', date: new Date(Date.now() + (10 * 1000)), // to schedule it in 10 secs in my case }) } render() { // use _handlePress function somewhere to schedule notification } }