簡體   English   中英

當我的應用程序處於后台時,將其他應用程序的文件/內容打開到我自己的iOS應用程序中

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM