Swift 我的应用程序能检测到它是由Siri打开的吗?
我的Swift应用程序能否检测到它是由Swift 我的应用程序能检测到它是由Siri打开的吗?,swift,siri,Swift,Siri,我的Swift应用程序能否检测到它是由Siri打开的?如果(且仅当)我的应用程序是由Siri打开的,我想打开一个特定的viewController。不幸的是,这还不可能。你可以在网站上阅读可以做什么和不可以做什么。这是SiriKit的第一个版本,可能会在稍后发布。这在watchOS3.2中成为可能。在ExtensionLegate中,实现该函数。如果您的应用程序是从Siri打开的,userActivity.activityType将是您的管理员提供的INIntentResponse的名称,因此,
Siri
打开的?如果(且仅当)我的应用程序是由Siri打开的,我想打开一个特定的viewController
。不幸的是,这还不可能。你可以在网站上阅读可以做什么和不可以做什么。这是SiriKit的第一个版本,可能会在稍后发布。这在watchOS3.2中成为可能。在ExtensionLegate中,实现该函数。如果您的应用程序是从Siri打开的,userActivity.activityType
将是您的管理员提供的INIntentResponse的名称,因此,您只需检查userActivity.activityType
是否等于您的Intent扩展可以处理的任何INIntentResponse名称。将其放入didFinishLaunchingWithOptions在初始启动时对我有效
Objc:
BOOL startedFromSiri=([[launchOptions objectForKey:uiapplicationaunchoptionssourceapplicationkey]ISeQualString:@“com.apple.assistant.assistantd]”)吗?是:不是代码>
Swift:
let startedFromSiri:Bool=(launchOptions[.sourceApplication]=“com.apple.assistant.assistantd”)?true:false
您可以使用SceneDelegate
func scene(_ scene: UIScene, continue userActivity: NSUserActivity) {
if #available(iOS 12.0, *) {
if userActivity.interaction?.intent is YourIntentName {
// App launched via that particular shortcut.
}
}
}
注意:此处YourIntentName
是您的文件中的意图名称。intentdefinition
文件在watchOS3.2中成为可能,请参见下面的答案。对于MEI,launchOptions始终为零。是否有办法在扩展中检测到它?