React Navigation 4 深度链接不起作用
React Navigation 4 Deep Linking is not working
我正在使用 react-navigation-4。我当时在 expo
并使用简单的工作流程从中退出。
现在我想使用深层链接,这样当我想点击通知时,它会转到我应用程序中的某个屏幕。
我按照 https://reactnavigation.org/docs/4.x/deep-linking 中的说明操作,但是当我使用 Linking.openURL("rnfarmer://submitrating/dd");
打开屏幕时,没有任何反应。
这是我的 App.js :
import React from "react";
import MyNavigator from "./navigation/MyNavigator";
export default function App() {
const prefix = 'rnfarmer://';
return <MyNavigator uriPrefix={prefix} />;
}
这是 MyNavigator.js 文件:
...
export default createAppContainer(createStackNavigator({SubmitRating: {
screen: SubmitRatingScreen,
path: 'submitrating/:orderId'
}}));
而且我已经将这些行添加到 AndroidManifest.xml :
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data android:scheme="rnfarmer" />
</intent-filter>
终于找到答案了
我正在使用 DrawerNavigator,所以我有一个嵌套导航,因此我应该将路径添加到父导航器,然后再添加到子导航器。
编辑
示例:
这是您的主导航器:
const MainNavigator = createDrawerNavigator({
MainNav: {
screen: FarmerNavigator,
path: "main"
} ,
ProfileNav: FillProfileNavigator,
MyOrdersNav: MyOrdersNavigator,
RatingNav: RatingNavigator,
RulesNav: RulesNavigator,
AboutAppNav: AbouAppNavigator
}, {
drawerPosition: "right",
contentComponent: DrawerContent,
contentOptions: {
activeTintColor: FarmerColors.colorPrimary,
itemsContainerStyle: {
marginVertical: 0,
},
iconContainerStyle: {
opacity: 1
}
}
});
这是您的 Farmer Navigator:
const AsanZeraatNavigator = createStackNavigator({
ShowLand: ShowLandScreen,
ShowOrder: {
screen: ShowOrderScreen,
path: 'showorder/:params'
},
SubmitRating: {
screen: SubmitRatingScreen,
path: 'submitrating/:params',
}
});
我正在使用 react-navigation-4。我当时在 expo
并使用简单的工作流程从中退出。
现在我想使用深层链接,这样当我想点击通知时,它会转到我应用程序中的某个屏幕。
我按照 https://reactnavigation.org/docs/4.x/deep-linking 中的说明操作,但是当我使用 Linking.openURL("rnfarmer://submitrating/dd");
打开屏幕时,没有任何反应。
这是我的 App.js :
import React from "react";
import MyNavigator from "./navigation/MyNavigator";
export default function App() {
const prefix = 'rnfarmer://';
return <MyNavigator uriPrefix={prefix} />;
}
这是 MyNavigator.js 文件:
...
export default createAppContainer(createStackNavigator({SubmitRating: {
screen: SubmitRatingScreen,
path: 'submitrating/:orderId'
}}));
而且我已经将这些行添加到 AndroidManifest.xml :
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data android:scheme="rnfarmer" />
</intent-filter>
终于找到答案了
我正在使用 DrawerNavigator,所以我有一个嵌套导航,因此我应该将路径添加到父导航器,然后再添加到子导航器。
编辑
示例: 这是您的主导航器:
const MainNavigator = createDrawerNavigator({
MainNav: {
screen: FarmerNavigator,
path: "main"
} ,
ProfileNav: FillProfileNavigator,
MyOrdersNav: MyOrdersNavigator,
RatingNav: RatingNavigator,
RulesNav: RulesNavigator,
AboutAppNav: AbouAppNavigator
}, {
drawerPosition: "right",
contentComponent: DrawerContent,
contentOptions: {
activeTintColor: FarmerColors.colorPrimary,
itemsContainerStyle: {
marginVertical: 0,
},
iconContainerStyle: {
opacity: 1
}
}
});
这是您的 Farmer Navigator:
const AsanZeraatNavigator = createStackNavigator({
ShowLand: ShowLandScreen,
ShowOrder: {
screen: ShowOrderScreen,
path: 'showorder/:params'
},
SubmitRating: {
screen: SubmitRatingScreen,
path: 'submitrating/:params',
}
});