如何在不渲染的情况下使用 react-native-share-menu mainInterface.storyboard

How to use react-native-share-menu without rendering mainInterface.storyboard

我刚刚将 react-native-share-menu 添加到我的项目中,一切都按预期进行。但我想从共享菜单打开我的应用程序而不显示对话框模式(附图)。它仅在 iOS 上显示。

我将 didSelectPost() 添加到 viewDidLoad() 之后它可以在模拟器上运行但不能在真实设备上运行。

   override func viewDidLoad() {
super.viewDidLoad()

if let hostAppId = Bundle.main.object(forInfoDictionaryKey: HOST_APP_IDENTIFIER_INFO_PLIST_KEY) as? String {
  self.hostAppId = hostAppId
} else {
  print("Error: \(NO_INFO_PLIST_INDENTIFIER_ERROR)")
}

if let hostAppUrlScheme = Bundle.main.object(forInfoDictionaryKey: HOST_URL_SCHEME_INFO_PLIST_KEY) as? String {
  self.hostAppUrlScheme = hostAppUrlScheme
} else {
  print("Error: \(NO_INFO_PLIST_URL_SCHEME_ERROR)")
}
didSelectPost() //call post function 

}

您需要制作自己的分享扩展,即使它只是您进入应用程序之前的一个占位符。确保您已完全按照这些说明进行操作:

https://github.com/meedan/react-native-share-menu/blob/master/SHARE_EXTENSION_VIEW.md

完成后,将显示您在 index.share.js 中注册的“MyShareComponent”,而不是您在 post 中提到的对话框模式。

AppRegistry.registerComponent(
  "ShareMenuModuleComponent",
  () => MyShareComponent
);

在该组件内,您可以显示自己的自定义共享对话框,或者在安装后直接重定向到主应用程序,如下所示:

useEffect(() => {
  ShareMenuReactView.data().then(({mimeType, data}) => {
    ShareMenuReactView.continueInApp({shareInfo: data});
  });
}, []);

我在自己的共享对话框和直接重定向到应用程序时使用此方法都取得了成功。

您可以通过自己修改 ShareViewController.swift 来绕过共享 window。

override func configurationItems() -> [Any]! {
      didSelectPost()
      return nil
    }