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

Cor*_*bin 4 ios siri sirikit ios12

我想高级研究Shortcuts技术.所以这里有一些问题:

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

kga*_*dis 10

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
}()
Run Code Online (Sandbox Code Playgroud)

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

class ViewController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()
        userActivity = viewPageActivity
    }
}
Run Code Online (Sandbox Code Playgroud)

第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
}
Run Code Online (Sandbox Code Playgroud)

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

要调试它,请确保使用设备(而不是模拟器).然后去Settings -> Developer -> Enable "Display Recent Shortcuts" and "Display Donations on Lock Screen".

这有很多很棒的资源: