如何使用Siri快捷方式在我的应用中显示特定页面?

时间:2018-06-05 15:30:09

标签: ios siri sirikit ios12

我想研究快捷键技术。所以这里有一些问题:

  • 可以在任何类型的应用中使用Siri快捷方式吗?因为SiriKit只在旅游,聊天等工作。
  • 现在使用快捷方式。我可以跳转到我的应用程序,显示Siri的特定页面吗?

1 个答案:

答案 0 :(得分:8)

  

可以在任何类型的应用中使用Siri快捷方式吗?因为只有SiriKit   在旅游,聊天等工作。

是的,任何。它们与任何特定域名无关。他们是定制的。

  

现在使用快捷方式。我可以跳转到显示特定页面的应用程序   Siri的?

以下代码显示了如何通过Siri显示特定页面的最简单方法,它通过NSUserActivity称为"捐赠快捷方式" 。但您可以通过定义自定义INIntent来实现相同目标。

第1步:

Info.plist中,在NSUserActivityTypes下添加一个活动类型字符串:com.app.viewPage

第2步:

创建活动:

let viewPageActivityType = "com.app.viewPage"

let viewPageActivity: NSUserActivity = {
    let userActivity = NSUserActivity(activityType: viewPageActivityType)
    userActivity.title = "View Page"
    userActivity.suggestedInvocationPhrase = "View Page"
    userActivity.isEligibleForSearch = true
    userActivity.isEligibleForPrediction = true
    return userActivity
}()

然后将其添加到视图控制器:

class ViewController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()
        userActivity = viewPageActivity
    }
}

第3步:

使用UIApplicationDelegate方法处理它(如果用户按下快捷方式,则会调用此方法,或通过语音从Siri激活此方法):

public func application(_ application: UIApplication, continue userActivity: NSUserActivity, restorationHandler: @escaping ([UIUserActivityRestoring]?) -> Void) -> Bool {

    if userActivity.activityType == viewPageActivityType {
        print("open the `ViewController` here")
        return true
    }
    return false
}

用户打开ViewController一次后,他们可能会在锁定屏幕中显示建议并搜索建议。他们还可以前往Settings -> Siri & Search -> My Shortcuts定义自定义词组,以便使用语音执行操作。

要调试此功能,请确保使用设备(而非模拟器)。然后转到Settings -> Developer -> Enable "Display Recent Shortcuts" and "Display Donations on Lock Screen"

这方面有很多很好的资源: