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

时间:2016-10-11 03:19:26

标签: swift siri

我的Swift应用可以检测到它是由Siri打开的吗?如果(且仅当)我的应用程序由Siri打开,我想打开特定的viewController

4 个答案:

答案 0 :(得分:0)

遗憾的是,这还不可能。您可以阅读SiriKit可能做的事情,而不是。这是SiriKit的第一个版本,它可能会在以后出现。

答案 1 :(得分:0)

在watchOS3.2中成为可能。在ExtensionDelegate中,实现函数handle(userActivity)。如果您的应用程序是从Siri打开的,userActivity.activityType将是您的IntentHandler提供的INIntentResponse的名称,因此您只需检查userActivity.activityType是否等于您的Intents Extension可以使用的任何INIntentResponse名称处理

答案 2 :(得分:0)

您可以使用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文件中Intent的名称

答案 3 :(得分:-1)

将它放在didFinishLaunchingWithOptions中,在初次启动时为我工作。

<强> Objc:

BOOL startedFromSiri = ([[launchOptions objectForKey:UIApplicationLaunchOptionsSourceApplicationKey] isEqualToString:@"com.apple.assistant.assistantd"]) ? YES : NO;

<强>夫特:

let startedFromSiri: Bool = (launchOptions[.sourceApplication] == "com.apple.assistant.assistantd") ? true : false