何时/啥/为啥/如何在应用程序(应用程序:willFinishLaunchingWithOptions :) 中使用来自 launchOptions 的 UIApplicationOptionsURL
Posted
技术标签:
【中文标题】何时/啥/为啥/如何在应用程序(应用程序:willFinishLaunchingWithOptions :) 中使用来自 launchOptions 的 UIApplicationOptionsURLKey 的值?【英文标题】:When/What/Why/How to use value of UIApplicationOptionsURLKey from launchOptions in application(application:willFinishLaunchingWithOptions:)?何时/什么/为什么/如何在应用程序(应用程序:willFinishLaunchingWithOptions :) 中使用来自 launchOptions 的 UIApplicationOptionsURLKey 的值? 【发布时间】:2016-04-11 01:34:41 【问题描述】:背景
刚开始学习苹果的API,现在正在学习UIApplicationDelegate
的功能。
更具体地说,我正在剖析func application(application: UIApplication, willFinishLaunchingWithOptions launchOptions: [NSObject : AnyObject]?) -> Bool
。
问题
可以在launchOptions
中找到的密钥是UIApplicationLaunchOptionsURLKey
。
此密钥何时存在?
对应key,有一些值。 这个值是什么?
我得到这个键值对是有原因的。 我为什么要使用它?
最后,也是最重要的:如何使用它?
附加信息
据我所知,我正在制作一个样板项目。 这是里面的内容:
func application(application: UIApplication, willFinishLaunchingWithOptions launchOptions: [NSObject : AnyObject]?) -> Bool
print("application(application:willFinishLaunchingWithOptions:)")
if let options: [NSObject: AnyObject] = launchOptions
for option: (key: NSObject, AnyObject) in options
switch option.key
// The presence of this key indicates that the app was launched in order to open a URL. The value of this key is an NSURL object containing the URL to open.
case UIApplicationLaunchOptionsURLKey:
<#code#>
...
对于未来的项目,我计划将 <#code#>
替换为其他东西,以利用 UIApplicationLaunchOptionsURLKey
的键值对的功能。
【问题讨论】:
我会在最后改写这个问题,因为你真的可以在那里放任何东西。 @TroyT -- 好点。我已经将问题编辑成一个声明,因为我真的已经在帖子前面提出了我真正想要回答的问题。 【参考方案1】:可能还有其他原因,但我用它来用我的应用打开特定文件。
我的应用程序以自己的格式保存备份文件。如果用户在他的设备中有这些文件之一,他可以选择使用我的应用程序打开文件。如果他这样做,我的应用程序就会打开并且会发生这种情况:
func application(application: UIApplication,
didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool
if let url = launchOptions?[UIApplicationLaunchOptionsURLKey] as? NSURL
handleBackupFile(url)
return true
除了通常启动应用程序之外,我调用handleBackupFile()
来处理备份文件。
如果我的应用可以打开不止一种文件,我可能会检查那里的文件类型。
编辑:
这是我的应用 Leio 的一个实际示例:
当用户点击“复制到 Leio”时,我的应用会打开并调用该代码。
【讨论】:
您能否澄清一下在用户体验期间这意味着什么:是当他们选择“打开方式...”并选择您的应用程序时,还是什么?另外,这个 URL 看起来如何? 我不确定这是否算作题外话:我假设您的应用程序没有被称为“复制到 Leio”,可能只是“Leio”。如果是这样,您在哪里有机会让应用图标下的文本显示“复制到 Leio”而不是“Leio”? 而url是文件系统目录中文件路径的url。在我的示例中,文件作为附件保存在便笺中,因此目录可能是便笺应用程序附件的路径加上文件名,在本例中类似于notesPath/leio_04etc.lbf
这是与UIApplicationLaunchOptionsURLKey
对应的值的URL吗?
是的。而且我根本没有设置该文本,因为它会让我对本地化感到头疼,所以这是默认文本。您可能可以在某处更改它,但现在我不确定在哪里,也许当您设置您的应用可以打开哪些文件时。以上是关于何时/啥/为啥/如何在应用程序(应用程序:willFinishLaunchingWithOptions :) 中使用来自 launchOptions 的 UIApplicationOptionsURL的主要内容,如果未能解决你的问题,请参考以下文章