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',
  }
});