Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Swift 我的应用程序能检测到它是由Siri打开的吗?_Swift_Siri - Fatal编程技术网

Swift 我的应用程序能检测到它是由Siri打开的吗?

Swift 我的应用程序能检测到它是由Siri打开的吗?,swift,siri,Swift,Siri,我的Swift应用程序能否检测到它是由Siri打开的?如果(且仅当)我的应用程序是由Siri打开的,我想打开一个特定的viewController。不幸的是,这还不可能。你可以在网站上阅读可以做什么和不可以做什么。这是SiriKit的第一个版本,可能会在稍后发布。这在watchOS3.2中成为可能。在ExtensionLegate中,实现该函数。如果您的应用程序是从Siri打开的,userActivity.activityType将是您的管理员提供的INIntentResponse的名称,因此,

我的Swift应用程序能否检测到它是由
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始终为零。是否有办法在扩展中检测到它?