如何在application(application:willFinishLaunchingWithOptions:)中使用launchOptions中的UIApplicationOptionsURLKey值?

3

背景

我刚开始学习Apple的API,现在正在学习 UIApplicationDelegate 的功能。 更具体地说,我正在解析 func application(application: UIApplication, willFinishLaunchingWithOptions launchOptions: [NSObject : AnyObject]?) -> Bool


问题

可以在launchOptions中找到的关键字是UIApplicationLaunchOptionsURLKey什么时候会存在这个关键字?

相应于该关键字,有一些值。 这个值里面是什么?

我得到了这个键值对的原因。我为什么要使用它?

最后,也是最重要的:我该如何使用它?


附加信息

在学习中,我正在制作一个样板项目。 这是其中的内容:

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键值对的功能。


我建议您重新措辞最后一个问题,因为您实际上可以在那里放置任何内容。 - tktsubota
@TroyT -- 很好的观点。我已经将问题编辑成陈述句了,因为实际上我在帖子的早期已经提出了我真正想要回答的问题。 - Fine Man
1个回答

2

可能还有其他原因,但我使用它来打开特定的文件。

我的应用程序以自己的格式保存备份文件。如果用户在设备中有这些文件之一,则可以选择使用我的应用程序打开该文件。如果他这样做,我的应用程序将被打开,并发生以下情况:

func application(application: UIApplication,
    didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
        if let url = launchOptions?[UIApplicationLaunchOptionsURLKey] as? NSURL {
            handleBackupFile(url)
        }
        return true
}

除了启动应用程序之外,我调用handleBackupFile()来处理备份文件。
如果我的应用程序可以打开多种类型的文件,我可能会检查它是什么类型的文件。
编辑:
这是我的应用程序Leio的实际示例:Copy to Leio 当用户点击“复制到Leio”时,我的应用程序打开并调用该代码。

你能澄清一下用户体验中的含义吗:是当他们选择“在...中打开”并选择您的应用程序,还是其他什么?此外,这个URL看起来怎么样? - Fine Man
我不确定这是否算作离题:我假设你的应用程序不叫做“复制到Leio”,而只是“Leio”。如果是这样,你在哪里有机会让文本在你的应用程序图标下显示为“复制到Leio”而不是“Leio”? - Fine Man
而url是文件系统目录中文件路径的url。在我的例子中,该文件作为附件保存在笔记中,因此该目录可能是Notes应用程序附件的路径加上文件名,例如notesPath/leio_04etc.lbf - dbmrq
这是与 UIApplicationLaunchOptionsURLKey 对应的值的 URL 吗? - Fine Man
是的。而且我根本没有设置那个文本,因为本地化会让我头疼,所以那是默认文本。你可能可以在某个地方更改它,但现在我不确定在哪里,也许是当你设置应用程序可以打开哪些文件时。 - dbmrq
让我们在聊天中继续这个讨论 - Fine Man

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接