将 URL 方案添加到你自己的应用程序
假设你正在开发名为 MyTasks
的应用,并且你希望允许入站网址创建包含标题和正文的新任务。你正在设计的 URL 可能如下所示:
mytasks://create?title=hello&body=world
(当然,text
和 body
参数用于填充我们正在创建的任务!)
以下是将此 URL 方案添加到项目的重要步骤:
- 在应用的
Info.plist
文件中注册 URL 方案,以便系统知道何时将 URL 路由到你的应用。 - 向
UIApplicationDelegate
添加一个接受和处理传入 URL 的函数。 - 执行打开该 URL 时需要执行的任何任务。
第一步:在 Info.plist 中注册 URL 方案:
首先,我们需要在 Info.plist 文件中添加“URL 类型”条目。点击此处的(+)按钮:
…然后输入你的应用的唯一标识符,以及你要使用的网址方案。请明确点! 你不希望 URL 方案与另一个应用程序的实现冲突。最好是在这里太长,而不是太短!
第二步:处理 UIApplicationDelegate 中的 URL
我们需要在我们的 UIApplicationDelegate
上实现 application:openURL:options:
。我们将检查传入的 URL
,看看是否有我们可以采取的行动!
一个实现是这样的:
func application(app: UIApplication, openURL url: NSURL, options: [String : AnyObject]) -> Bool {
if url.scheme == "mytasks" && url.host == "create" {
let title = // get the title out of the URL's query using a method of your choice
let body = // get the title out of the URL's query using a method of your choice
self.rootViewController.createTaskWithTitle(title, body: body)
return true
}
return false
}
第三步:根据 URL 执行任务
当用户通过 URL 打开你的应用时,他们可能希望发生某些事情。也许这是导航到一段内容,也许是在创建一个新项目 - 在这个例子中,我们将在应用程序中创建一个新任务!
在上面的代码中,我们可以看到对 self.rootViewController.createTaskWithTitle(:body:)
的调用 - 所以假设你的 AppDelegate
有一个指向它的根视图控制器的指针,它正确地实现了这个功能,你就完成了!