我需要一些帮助,以了解使用iOS12 SiriKit可以做什么。
我已经知道的: 可以从应用程序创建快捷方式并将其推送到Siri设置。用户可以为快捷方式录制一个特殊的短语,以便可以使用Siri启动一些应用程序。 此功能需要执行几个步骤:
向 info.plist
添加唯一标识符<key>NSUserActivityTypes</key>
<array>
<string>"some identifier"</string>
</array>
定义NSUserActivity并设置其参数:
let activity = NSUserActivity(activityType: "some identifier")
activity.title = "Shortcut title"
if #available(iOS 12.0, *) {
activity.isEligibleForPrediction = true
activity.isEligibleForSearch = true
}
let attributes = CSSearchableItemAttributeSet(itemContentType: "NSUserActivity.searchableItemContentType")
if let image = UIImage(named: "AppIcon") {
attributes.thumbnailData = image.data
}
attributes.contentDescription = "Some description"
activity.contentAttributeSet = attributes
处理 AppDelegate 中的活动:
func application(_ application: UIApplication, continue userActivity: NSUserActivity, restorationHandler: @escaping ([Any]?) -> Void) -> Bool {
if userActivity.activityType == "some identifier"{
//handle the activity
return true
}
return false
}
此代码按预期工作。但是我正在尝试找到一种方法来改进这些东西,到目前为止还没有找到任何相关的东西。所以我的问题:
1)是否可以在没有用户定义的短语且无需从聚光灯下单击的情况下运行现有的快捷方式?就像在应用程序内为定义的NSUserActivity添加一个特殊的短语,以便用户无需额外的短语记录就可以使用它
2)是否可以在没有快捷方式的情况下启动应用程序内方法,但是如果用户将用短语指定应用程序?例如:“嘿Siri,使用MyNetworkApp运行网络测试” 。我看到即使在iOS 10中也有可能,但仅适用于一些特定域,例如VoIP,消息,照片等。但是我的应用程序与其中任何一个都不相关。
3)是否可以从应用程序动态添加快捷方式?就像用户具有设置屏幕并在应用程序中进行某些操作一样,他可以创建Siri快捷方式。因此,我们在 info.plist 文件中有10个标识符,用户可以使用这10个快捷方式为该应用设置10个自定义操作。我知道我可以在与标识符相关的UserDefaults中确保用户的设置安全,但是我所谈论的活动是动态更改诸如标题,描述之类的属性,因此用户将始终知道快捷方式会在不检查应用程序的情况下进行操作,但是会在聚光灯
预先感谢