当我的应用程序处于后台时,将其他应用程序的文件/内容打开到我自己的iOS应用程序中

时间:2015-10-13 09:12:32

标签: ios objective-c

我正在使用移动剪辑器。 在galery应用程序中,我希望能够将图片发送到我的应用程序。 在浏览器中,我希望能够将当前网址发送到我的应用。

注意:我已经知道我应该在plist文件中添加CFBundleDocumentTypes,以便我的应用程序显示在我可以向其发送数据的应用列表中(另请参阅 How do I associate file types with an iPhone application?

因此,当我的应用未启动时触发“分享”操作时,我可以收听application:didFinishLaunchingWithOptions,然后从启动选项中提取数据。

但是当我的应用程序已经启动且处于后台时,我会分享图像或网址,显然didFinishLaunchingWithOptions不会触发,所以我将无法获得一个字典可以得到我的数据。

在原始答案中查看已批准的评论:

  

应该注意的是-application:didFinishLaunchingWithOptions:只有当你的应用程序在打开处理文件时没有后台时,才会调用app delegate。

那么,我如何处理这两种情况:当我的应用程序处于后台并且处于活动状态时,以及何时启动我的应用程序?

很抱歉,如果这个问题很愚蠢,因为我根本不是iOS开发者,而是尝试使用我的第一个cordova插件。

我的应用应至少与iOS 7兼容。

3 个答案:

答案 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:方法   打开文件。
  •   

如果您的应用在后台运行,则会调用第二种方法