#react-native #notifications
#react-native #уведомления
Вопрос:
Я пытаюсь разработать проект с помощью React Native. Я хочу перейти на страницу сведений, которую я создал, когда я нажимаю на уведомление на главном экране. но он продолжает бросать меня на первую страницу. Как я могу это сделать?
Я установил этот пакет Push Notification.
Локальное уведомление
PushNotification.localNotification({
title: Hello ,
message: World,
channelId:"Example",
});
Я ввел структуру configure в index.js
index.js
import { NavigationContainer } from '@react-navigation/native';
import { createStackNavigator } from '@react-navigation/stack';
import {Detail} from "./src/pages"
const Stack = createStackNavigator();
PushNotification.configure({
onRegister: function (token) {
console.log('TOKEN:', token);
},
onNotification: function (notification) {
console.log('NOTIFICATION:', notification);
return (
<NavigationContainer>
<Stack.Navigator>
<Stack.Screen name="Detail" component={Detail} />
</Stack.Navigator>
</NavigationContainer>
);
},
permissions: {
alert: true,
badge: true,
sound: true,
},
popInitialNotification: true,
requestPermissions: Platform.OS === 'ios',
});
Ответ №1:
Я думаю, что есть 2 проблемы. 1- Ваша «onNotification» не должна возвращать навигационный контейнер, поскольку это не то, что вы хотите… вы просто хотите перенаправить пользователя на другую страницу.
2- Кроме того, вы должны запустить конфигурацию PushNotification, внутри компонента react вы неправильно управляете навигацией, если вы используете react-navigation 5.x, вы должны попробовать перемещаться с помощью перехватов, что-то вроде
import { useNavigation } from '@react-navigation/native';
import { NavigationContainer } from '@react-navigation/native';
import { createStackNavigator } from '@react-navigation/stack';
const navigation = useNavigation()
PushNotification.configure({
onRegister: function (token) {
console.log('TOKEN:', token);
},
onNotification: function (notification) {
console.log('NOTIFICATION:', notification);
navigation.navigate("Details")
},
permissions: {
alert: true,
badge: true,
sound: true,
},
popInitialNotification: true,
requestPermissions: Platform.OS === 'ios',
});
Если у вас возникли проблемы с навигацией, это может вам помочь https://reactnavigation.org/docs/navigating-without-navigation-prop /