我的Swift应用可以检测到它是由Siri
打开的吗?如果(且仅当)我的应用程序由Siri打开,我想打开特定的viewController
。
答案 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