[英]Open file / content of other app into my own iOS app, when my app was in background
我正在研究移动式飞剪机。 在galery应用程序中时,我希望能够将图片发送到我的应用程序。 在浏览器中时,我希望能够将当前URL发送到我的应用程序。
注意 :我已经知道我应该将CFBundleDocumentTypes
添加到plist文件中,以便我的应用程序出现在可以向其发送数据的应用程序列表中(另请参阅如何将文件类型与iPhone应用程序关联? )
因此,当我的应用程序未启动时触发“共享”操作时,我可以监听application:didFinishLaunchingWithOptions
,然后从启动选项中提取数据。
但是,当我的应用程序已经启动并且处于后台并且共享图像或URL时,显然didFinishLaunchingWithOptions
不会触发,因此我将无法获得字典来获取数据。
查看原始答案中已批准的评论:
应该注意的是,只有在打开应用程序处理文件时未将其后台运行时,才会调用应用程序委托中的-application:didFinishLaunchingWithOptions:。
那么,我该如何处理这两种情况:当我的应用程序在后台运行且处于活动状态以及何时仅启动我的应用程序?
抱歉,这个问题很愚蠢,因为我根本不是iOS开发人员,正在尝试做我的第一个cordova插件。
我的应用程序至少应与iOS 7兼容。
您可以使用下面的应用程序委托方法
对于IOS 9及更高版本
- (布尔)应用程序:(UIApplication *)应用程序openURL:(NSURL *)url选项:(NSDictionary *)选项
在IOS 9以下
- (BOOL)应用程序:(UIApplication *)应用程序openURL:(NSURL *)URL sourceApplication :(可空NSString *)sourceApplication注释:(id)注释
如果您仍需要支持iOS 7:
- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(nullable NSString *)sourceApplication annotation:(id)annotation;
该过程在《 iOS应用程序编程指南》中进行了描述
具有自己的自定义URL方案的应用程序必须能够处理传递给它的URL。 在启动时或在应用程序运行时或在后台,所有URL都将传递给您的应用程序委托。 要处理传入的URL,您的委托应实现以下方法:
- 使用
application:willFinishLaunchingWithOptions:
和application:didFinishLaunchingWithOptions:
方法检索有关URL的信息并确定是否要打开它。 如果这两种方法均返回NO,则不会调用您应用的URL处理代码。- 使用
application:openURL:sourceApplication:annotation:
方法打开文件。
如果您的应用程序在后台运行,则将调用第二种方法
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.