在现有项目中启动 React Native 后返回本机应用程序

Go back to native app after launch of react native in existing project

我成功了integrated react native in existing project。在我的本机应用程序中,我有一个带有启动 react-native 屏幕按钮的屏幕。

Android 中,我可以在 BackAndroid.exitApp() 的帮助下返回到上一个屏幕。如何在 iOS 中实现相同的功能?

当我在本机和 RN 之间进行流集成时,我只需在我的本机应用程序中添加一个挂钩,然后从 RN 调用它。所以在你的例子中我会做类似

的事情
onBackButtonPress() {
  if (Platform.OS === 'ios') {
    NativeModules.SomeController.backPressed()
  }
  else {
    BackAndroid.exitApp()
  }
}

然后在您的控制器中定义 backPressed(),以便可以将逻辑放在那里

RCT_EXPORT_METHOD(backPressed) {
    // logic to go back e.g. pop view controller or dismiss modal
}

这可以通过关闭应用程序的顶部呈现视图控制器来完成。为了在您的 RCTBridge 实现中获得顶视图控制器,您可以使用此代码。

- (UIViewController *)currentTopViewController
{
    UIViewController *topVC = [[[[UIApplication sharedApplication] delegate] window] rootViewController];
    while (topVC.presentedViewController)
    {
        topVC = topVC.presentedViewController;
    }
    if ([topVC isKindOfClass:[UINavigationController class]]) {
        return [(UINavigationController *)topVC topViewController];
    }
    return topVC;
}

然后你可以关闭这个视图控制器

[topViewController dismissViewControllerAnimated:YES completion:nil];

我开发了一个小的 npm 包来实现这一点。 Find it here