从 iOS 中的共享按钮启动应用程序 - Objective C 和 React Native
Posted
技术标签:
【中文标题】从 iOS 中的共享按钮启动应用程序 - Objective C 和 React Native【英文标题】:Launch app from share button in iOS - Objective C and React Native 【发布时间】:2018-01-26 22:47:50 【问题描述】:当用户在照片中选择任何图像并点击共享 -> MyApp 时,我正在尝试启动 MyApp。
现在(UIView*) shareView
已成功启动,但我需要进入MyApp 中的正常流程,我的意思是,启动所有带有反应本机视图的应用程序,而不是shareView
。
- (UIView*) shareView
NSURL *jsCodeLocation;
jsCodeLocation = [[RCTBundleURLProvider sharedSettings] jsBundleURLForBundleRoot:@"src/components/share/share" fallbackResource:nil];
RCTRootView *rootView = [[RCTRootView alloc] initWithBundleURL:jsCodeLocation
moduleName:@"Share"
initialProperties:nil
launchOptions:nil];
UILabel *myLabel = [[UILabel alloc]initWithFrame:CGRectMake(10, 50, 200, 40)];
[myLabel setBackgroundColor:[UIColor clearColor]];
[myLabel setText:@"THIS IS A LABEL FOR TEST"];
[rootView addSubview:myLabel];
rootView.backgroundColor = UIColor.whiteColor;
return rootView;
(如果从这里调用,react native 组件将不起作用,永远不会被调用或渲染)
所有权限都在工作,共享按钮出现在活动操作表中。
我想知道这是否是一项不可能完成的任务(根据苹果的指导方针,活动表中的共享应该是发送数据的简单任务,可能使用NSUserDefaults
)但我不知道是否以编程方式或在 ios 应用的生命周期中这是被禁止的。
我尝试使用 NSURL
调用应用程序并添加方案标识符,但这不起作用。
感谢您的帮助。
【问题讨论】:
【参考方案1】:我想您可能会谈论应用共享扩展。你应该知道的一件事,扩展不能直接访问容器应用程序的资源和数据。如果要共享资源,则必须使用扩展程序和容器应用程序进行应用程序组配置。然后使用共享资源空间。 NSUserDefault 和 NSFileManager 都有访问共享空间的方法。您的代码直接访问容器 App 的资源空间,而不是通过共享空间。这就是你失败的原因,我想。
【讨论】:
感谢您的回答,我们再次检查并在共享扩展中使用 shareViewController 中的 didSelectPost 工作,扩展范围是问题所在。谢谢。以上是关于从 iOS 中的共享按钮启动应用程序 - Objective C 和 React Native的主要内容,如果未能解决你的问题,请参考以下文章
有没有办法使用 worklight 6.2 或 phonegap 混合应用程序从 android 和 ios 中的另一个应用程序启动一个应用程序?