iOS 12 中的 Siri Shortcuts 簡介

SwiftGG翻譯組發表於2019-03-04

作者:AppCoda,原文連結,原文日期:2018-07-11 譯者:Hale;校對:liberalismannumbbbbbYousanflics;定稿:Forelax

在美國聖荷西舉辦的 2018 開發者大會上,蘋果公佈了 Siri Shortcuts,這是一個令人期待已久的功能,開發人員能夠在自己的應用程式中擴充套件和增強 Siri 的功能。在這之前,SiriKit SDK 的功能非常有限。隨著 Siri Shortcuts 的出現,開發人員可以擴充套件 Siri 的功能並通過構建自定義語音操作來喚起應用程式。

Siri Shortcuts 簡史

Siri Shortcuts 的核心是自動化。Siri Shortcuts 是由前 WWDC 獎學金獲得者開發的 iOS 自動化應用程式 Workflow 演變而來的。蘋果在2017年收購了 Workflow,但出乎意料的是,即便在收購之後,該應用依然獨立的在 App Store 上線。

iOS 12 中的 Siri Shortcuts 簡介

Shortcuts 讓你可以將應用程式的功能暴露給 Siri。

Apple 全新的 Siri Shortcuts 大量借鑑了 Workflow。但是區分語音 Shortcuts 短句與 Shortcuts 應用本身還是很重要的。Shortcuts 應用允許使用者基於語音短句建立常見的日常任務,Siri Shortcuts 使開發人員能夠在自己的原生應用程式中擴充套件 Siri 的功能。

在撰寫本文時,Shortcuts 應用程式 無法在 iOS 12 Beta 2 Build 中進行測試。那麼,我們將在自己構建的自定義應用程式中探索 Siri Shortcuts 的實用功能。

我們的示例工程

注意:本教程假定你基本熟悉 NSUserActivity API。如果你不熟悉,請參閱我們關於此主題的 優秀教程

在本教程中,我們將探究如何在一個簡單的專案中利用 Siri Shortcuts,在使用者說出 “Say Hi” 之類的短語時啟動我們的應用程式並展示出一個 UIAlertView。

此應用程式簡單概述瞭如何在一個大型專案中不增加複雜程式碼的前提下整合 Siri Shortcuts。在本教程結束時,你應該紮實掌握 Siri Shortcuts 背後的用例和技術,並瞭解如何將它們與你的應用程式整合!

在新專案中定義你的 Shortcuts

當我們在建立任意新專案時,花一些時間來建立基本的專案結構是很重要的。首先我們需要有 iOS 12,macOS Mojave 和 Xcode 10 的最新開發人員預覽版。如果你還沒有安裝這些,你可以從 開發者網站 下載安裝。

在 Xcode 建立一個名為 SiriShortcuts 的應用程式。將組織 ID 設定為 com.appcoda,這些後期可以按需修改。

iOS 12 中的 Siri Shortcuts 簡介

如下所示,在專案的 Project Settings 中選擇 Capabilities,啟用 Siri。接下來我們就可以在應用程式中使用 Siri SDK,並將 .entitlements 檔案新增到專案中。

iOS 12 中的 Siri Shortcuts 簡介

啟用 S​​iri 後,Xcode 會將 .entitlements 檔案新增到專案裡。然後將 Intents.framework 這個全新的框架加入到專案中。

iOS 12 中的 Siri Shortcuts 簡介

最後,在 Info.plist 中新增 NSUserActivityTypes。該項的值應該包含你的 Bundle ID 以及喚醒 Siri 的行為 ,例如 “sayHi”。

iOS 12 中的 Siri Shortcuts 簡介

整合 Shortcut

要建立一個 Shortcut 應用,我們首先配置 Shortcut,然後將 Shortcut 整合到專案中

現在我們的專案已經完成了所有 Shortcut 的配置工作,是時候將 Shortcut 整合到專案中了。

根據 Apple 開發者文件,

每次使用者在你的應用中執行操作時,你都應該進行一次 Shortcut 整合。例如,使用者可以使用你的應用從餐廳訂購湯,請在使用者下訂單後為支付操作進行 Shortcut 整合。如果使用者未在你的應用中執行操作,則不需要進行整合操作。

顯然,只有在提供有意義的用例時我們才需要整合 Shortcut,從而增強應用程式的整體功能。

回到程式碼中,首先我們前往 ViewController.swift 檔案。在 viewDidLoad 方法之後,建立一個名為 setupIntents 的新方法。在此方法中,實現我們的 Siri Shortcuts 程式碼。

func setupIntents() {
        let activity = NSUserActivity(activityType: "com.AppCoda.SiriSortcuts.sayHi") // 1
        activity.title = "Say Hi" // 2
        activity.userInfo = ["speech" : "hi"] // 3
        activity.isEligibleForSearch = true // 4
        activity.isEligibleForPrediction = true // 5
        activity.persistentIdentifier = NSUserActivityPersistentIdentifier(rawValue: "com.AppCoda.SiriSortcuts.sayHi") // 6
        view.userActivity = activity // 7
        activity.becomeCurrent() // 8
    }
複製程式碼

讓我們來看看這段程式碼做了什麼。

  • 第一行,我們建立了 NSUserActivity 例項並將我們在 Info.plist 檔案中定義的識別符號賦值給 activityType。

  • 第二行,我們定義了 Activity 的標題。(會應用在設定中心和 Spotlight 的搜尋中。如果你對 NSUserActivity 以及 spotlight 搜尋索引的工作方式不是很熟悉,我建議你閱讀我們關於這個主題的其他教程。)

  • 第三行,我們新增了一個 userInfo 字典。根據 Apple 的說法, userInfo 字典包含了在另一臺裝置上繼續活動所需的與應用程式相關的狀態資訊。

  • 下一步,我們設定 .isEligibleForSearch 引數為 true 然後在下一行啟用 isEligibleForPrediction。這兩個屬性允許 iOS 在裝置上為我們的 NSUserActivity 提供搜尋和建議。

  • 接下來,我們將 persistentIdentifier 屬性設定為 NSUserActivityPersistentIdentifier 的例項,此例項用與第一行相同的識別符號進行構造。

  • 最後,我們將上面建立的 activity 例項賦值給檢視的 userActivity 屬性,並呼叫 becomeCurrent() 方法來啟用我們的 Activity。

我們再建立另一個名為 sayHi() 的方法並貼上以下程式碼。此程式碼建立一個 UIAlertController 以顯示訊息。

public func sayHi() {
        let alert = UIAlertController(title: "Hi There!", message: "Hey there! Glad to see you got this working!", preferredStyle: UIAlertController.Style.alert)
        alert.addAction(UIAlertAction(title: "OK", style: UIAlertAction.Style.default, handler: nil))
        self.present(alert, animated: true, completion: nil)
    }
複製程式碼

上述方法很簡單,主要用於說明 Siri Shortcuts 是如何工作的。另外需要注意這是一個 public 函式,因為我們需要在檢視控制器的作用域之外使用它。

公開 Activity

現在,你已經在 ViewController.swift 設定了基本功能,切換到 AppDelegate.swift 檔案並新增 application(_:continueUserActivity:restorationHandler) 方法,如下所示。

func application(_ application: UIApplication, continue userActivity: NSUserActivity, restorationHandler: @escaping ([UIUserActivityRestoring]?) -> Void) -> Bool {
    let viewController = window?.rootViewController as! ViewController
  viewController.sayHi()
  return true
}
複製程式碼

上述程式碼將我們新建立的 Activity 公開在應用委託方法中並允許 Siri 對此 Activity 進行操作喚起應用。

現在讓我們試試看!導航到“設定”應用並選擇 Siri。你應該看到一個名為 ”Say Hi” 的新快捷方式。單擊 + 按鈕新增它,然後按照螢幕上的提示建立自定義語音短語以建立此快捷方式。

現在你可以喚起 Siri 並說出你的短語,體驗 Shortcut!

iOS 12 中的 Siri Shortcuts 簡介

總結

正如你所見,在專案中使用 NSUserActivity 可以很容易地實現 Siri Shortcuts 的強大功能。在本教程中,我建立了一個基礎的應用,同樣的你也可以將這些技術應用到你自己的應用中。Siri Shortcuts 的使用場景還有很多,相信開發者們會以更創新和獨特的方式來使用這項新技術。

本文由 SwiftGG 翻譯組翻譯,已經獲得作者翻譯授權,最新文章請訪問 swift.gg

相關文章