將 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
有一個指向它的根檢視控制器的指標,它正確地實現了這個功能,你就完成了!