Как я могу перенаправить уведомление о щелчке на другую страницу в React Native?

#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 /