React native 通知打开时的路由
Im通过wix使用react本机通知。React native 通知打开时的路由,react-native,push-notification,React Native,Push Notification,Im通过wix使用react本机通知。 当通知打开时,我无法路由到特定屏幕。我试过这样做。但这给了我一个错误 import React, { Component } from 'react'; import AppNavigator from './navigation/AppNavigator'; import NetInfo from "@react-native-community/netinfo"; import AppNavigator from './navigation/AppNa
当通知打开时,我无法路由到特定屏幕。我试过这样做。但这给了我一个错误
import React, { Component } from 'react';
import AppNavigator from './navigation/AppNavigator';
import NetInfo from "@react-native-community/netinfo";
import AppNavigator from './navigation/AppNavigator';
import { NavigationActions } from 'react-navigation';
let _navigator;
function setTopLevelNavigator(navigatorRef) {
_navigator = navigatorRef;
}
function navigate(routeName, params) {
_navigator.dispatch(
NavigationActions.navigate({
routeName,
params,
})
);
}
export default class App extends Component {
constructor(props) {
super(props)
const unsubscribe = NetInfo.addEventListener(state => {
console.log("Connection type", state.type);
console.log("Is connected?", state.isConnected);
navigate("Rating");
});
Notifications.events().registerNotificationOpened((notification, action,
completion) => {
console.log("Notification opened by device user",
notification.payload);
});
render() {
return (
<Provider store={store}>
<Root>
<AppNavigator ref={navigatorRef => {setTopLevelNavigator(navigatorRef)
}}/>
</Root>
</Provider>
);
}
}
import React,{Component}来自'React';
从“./navigation/AppNavigator”导入AppNavigator;
从“@react native community/NetInfo”导入NetInfo;
从“./navigation/AppNavigator”导入AppNavigator;
从“react navigation”导入{NavigationActions};
让"航海家",;
函数setTopLevelNavigator(navigatorRef){
_navigator=navigatorRef;
}
功能导航(routeName、params){
_导航器调度(
导航({
罗特奈,
params,
})
);
}
导出默认类应用程序扩展组件{
建造师(道具){
超级(道具)
const unsubscribe=NetInfo.addEventListener(状态=>{
日志(“连接类型”,state.type);
日志(“是否已连接?”,状态为.isConnected);
导航(“评级”);
});
Notifications.events().registerNotificationOpened((通知、操作、,
完成)=>{
console.log(“设备用户打开的通知”,
通知(有效载荷);
});
render(){
返回(
{setTopLevelNavigator(navigatorRef)
}}/>
);
}
}
第1步:首先创建一个变量来像这样保存navigator,将其放在导入下面的App.js顶部
let _navigator;
function setTopLevelNavigator(navigatorRef) {
_navigator = navigatorRef;
}
第2步:然后像这样向AppNavigator添加一个ref属性
ref={navigatorRef => { setTopLevelNavigator(navigatorRef); }}
步骤3:编写导航函数,您可以在OnNotificationReceived中调用该函数
function navigate(routeName, params) {
_navigator.dispatch(
NavigationActions.navigate({
routeName,
params,
})
);
}
步骤4:在收到通知时导航用户
constructor(props) {
super(props)
Notifications.events().registerNotificationOpened((notification, action, completion) => {
navigate("YOURSCREEN", { params:<date-from-notification-or-any-data> });
})
}
构造函数(道具){
超级(道具)
Notifications.events().registerNotificationOpened((通知、操作、完成)=>{
导航(“YOURSCREEN”{params:});
})
}
PS:别忘了从“react National”导入导航操作