我正在使用移动剪辑器。 在galery应用程序中,我希望能够将图片发送到我的应用程序。 在浏览器中,我希望能够将当前网址发送到我的应用。
注意:我已经知道我应该在plist文件中添加CFBundleDocumentTypes
,以便我的应用程序显示在我可以向其发送数据的应用列表中(另请参阅
How do I associate file types with an iPhone application?)
因此,当我的应用未启动时触发“分享”操作时,我可以收听application:didFinishLaunchingWithOptions
,然后从启动选项中提取数据。
但是当我的应用程序已经启动且处于后台时,我会分享图像或网址,显然didFinishLaunchingWithOptions
不会触发,所以我将无法获得一个字典可以得到我的数据。
在原始答案中查看已批准的评论:
应该注意的是-application:didFinishLaunchingWithOptions:只有当你的应用程序在打开处理文件时没有后台时,才会调用app delegate。
那么,我如何处理这两种情况:当我的应用程序处于后台并且处于活动状态时,以及何时启动我的应用程序?
很抱歉,如果这个问题很愚蠢,因为我根本不是iOS开发者,而是尝试使用我的第一个cordova插件。
我的应用应至少与iOS 7兼容。
答案 0 :(得分:1)
您可以使用以下应用程序委托方法
适用于IOS 9及更高版本
- (BOOL)应用程序:(UIApplication *)app openURL:(NSURL *)url选项:(NSDictionary *)选项
IOS 9以下
- (BOOL)应用程序:(UIApplication *)应用程序openURL:(NSURL *)url sourceApplication :( nullable NSString *)sourceApplication 注释:(ID)注释
答案 1 :(得分:1)
如果您仍需要支持iOS 7:
- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(nullable NSString *)sourceApplication annotation:(id)annotation;
答案 2 :(得分:1)
该过程在iOS Application Programming Guide
中描述具有自己的自定义网址方案的应用必须能够处理网址 传递给它。所有网址都会传递给您的应用代表 发布时间或应用程序运行时或后台运行时。至 处理传入的URL,您的委托应实现以下内容 方法:
- 使用
application:willFinishLaunchingWithOptions:
和 要检索的application:didFinishLaunchingWithOptions:
方法 有关URL的信息,并决定是否要打开它。如果 任何一种方法都返回NO,不会调用您应用的URL处理代码。- 使用
application:openURL:sourceApplication:annotation:
方法 打开文件。
如果您的应用在后台运行,则会调用第二种方法