作为动作扩展(IOS)的React-native应用程序

时间:2018-02-11 17:50:05

标签: ios objective-c reactjs react-native native

所以我已经按照本教程:https://www.promptworks.com/blog/building-ios-app-extensions-with-react-native

一切正常,有效。当我在Safari中的动作扩展名单中单击该应用程序时,我会显示我的React Native视图。但是,现在我试图将输入道具从我的Obj C代码传递到我的视图。我希望能传递一个URL。

我有以下用于处理扩展名的ObjC代码:

 (void)loadView {
  NSURL *jsCodeLocation;

  jsCodeLocation = [[RCTBundleURLProvider sharedSettings] jsBundleURLForBundleRoot:@"index.ios" fallbackResource:nil];

  NSExtensionItem *item = self.extensionContext.inputItems;

  NSDictionary *initialProps =  @{ @"isActionExtension" : @(YES), @"args" : item };

  RCTRootView *rootView = [[RCTRootView alloc] initWithBundleURL:jsCodeLocation
                                                      moduleName:@"mobileapp"
                                               initialProperties:initialProps
                                                   launchOptions:nil];
  rootView.backgroundColor = [[UIColor alloc] initWithRed:1.0f green:1.0f blue:1.0f alpha:1];
  self.view = rootView;
  actionViewController = self;
}

无论我设置为item(inputItems,inputItems.firstObject) - 我已经使用了很多动作扩展帖子作为参考,它总是作为NULL传递给我的反应原生视图。

我的开场观点很简单:

export default class App extends Component {
  render() {
    const { isActionExtension, args } = this.props;

    if (isActionExtension) {
      return <Text style={{ marginTop: 50 }}>{JSON.stringify(args)}</Text>;
    }

    return (
      <MenuProvider>
        <Root />
      </MenuProvider>
    );
  }
}

App.propTypes = {
  isActionExtension: PropTypes.bool,
  args: PropTypes.any
};

App.defaultProps = {
  isActionExtension: false
};

注意:我的isActionExtension prop正确传递。有什么想法吗?

亚历

0 个答案:

没有答案