我正在使用 NSUserActivity 定义一个应用程序功能,因此它出现在 Spotlight 和 Siri Shortcuts 中:
let activity = NSUserActivity(activityType: "com.myapp.siriTest")
activity.title = "Test function"
activity.userInfo = ["parameter" : "test"]
activity.isEligibleForSearch = true
activity.isEligibleForPrediction = true
activity.persistentIdentifier = NSUserActivityPersistentIdentifier(rawValue: "com.myapp.siriTest")
view.userActivity = activity
activity.becomeCurrent()
这部分工作正常,调用上述函数后,测试功能按钮出现在 Spotlight 和 Shortcuts 中。如果我从这个意图启动应用程序,我可以在我的 AppDelegate 中收听它:
func application(_ application: UIApplication, continue userActivity: NSUserActivity, restorationHandler: @escaping ([UIUserActivityRestoring]?) -> Void) -> Bool {
print("app started from spotlight or shortcuts");
return true
}
两个问题:
- 如果应用程序是从使用 Shortcuts 应用程序创建的快捷方式启动的,是否可以将值返回给快捷方式?例如,我会返回一些文本,我在快捷方式中的下一步将发送一条带有该文本的短信。
- 如果我有多个 NSUserActivity,我如何在我的 AppDelegate restoreHandler 中区分它们?