所以我已经按照本教程: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正确传递。有什么想法吗?
亚历