將 URL 方案新增到你自己的應用程式

假設你正在開發名為 MyTasks 的應用,並且你希望允許入站網址建立包含標題和正文的新任務。你正在設計的 URL 可能如下所示:

mytasks://create?title=hello&body=world

(當然,textbody 引數用於填充我們正在建立的任務!)

以下是將此 URL 方案新增到專案的重要步驟:

  1. 在應用的 Info.plist 檔案中註冊 URL 方案,以便系統知道何時將 URL 路由到你的應用。
  2. UIApplicationDelegate 新增一個接受和處理傳入 URL 的函式。
  3. 執行開啟該 URL 時需要執行的任何任務。

第一步:在 Info.plist 中註冊 URL 方案:

首先,我們需要在 Info.plist 檔案中新增“URL 型別”條目。點選此處的(+)按鈕: StackOverflow 文件

…然後輸入你的應用的唯一識別符號,以及你要使用的網址方案。請明確點! 你不希望 URL 方案與另一個應用程式的實現衝突。最好是在這裡太長,而不是太短! StackOverflow 文件

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