我的应用程序可以检测到它是由 Siri 打开的吗?
Can my app detect that it was opened by Siri?
我的 Swift 应用程序能否检测到它是由 Siri
打开的?如果(且仅当)我的应用程序由 Siri 打开,我想打开特定 viewController
。
不幸的是,这还不可能。您可以在 SiriKit 阅读可以做什么和不可以做什么。这是SiriKit的第一个版本,可能会晚点推出。
在watchOS3.2中成为可能。在您的 ExtensionDelegate 中,实现函数 handle(userActivity)。如果您的应用程序是从 Siri 打开的,userActivity.activityType
将是您的 IntentHandler 提供的 INIntentResponse 的名称,因此您只需检查 userActivity.activityType
是否等于您的 Intents Extension 可以使用的任何 INIntentResponse 名称手柄。
将它放在 didFinishLaunchingWithOptions 中对我来说在初始启动时有用。
对象:
BOOL startedFromSiri = ([[launchOptions objectForKey:UIApplicationLaunchOptionsSourceApplicationKey] isEqualToString:@"com.apple.assistant.assistantd"]) ? YES : NO;
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
文件中的 Intent 名称
我的 Swift 应用程序能否检测到它是由 Siri
打开的?如果(且仅当)我的应用程序由 Siri 打开,我想打开特定 viewController
。
不幸的是,这还不可能。您可以在 SiriKit 阅读可以做什么和不可以做什么。这是SiriKit的第一个版本,可能会晚点推出。
在watchOS3.2中成为可能。在您的 ExtensionDelegate 中,实现函数 handle(userActivity)。如果您的应用程序是从 Siri 打开的,userActivity.activityType
将是您的 IntentHandler 提供的 INIntentResponse 的名称,因此您只需检查 userActivity.activityType
是否等于您的 Intents Extension 可以使用的任何 INIntentResponse 名称手柄。
将它放在 didFinishLaunchingWithOptions 中对我来说在初始启动时有用。
对象:
BOOL startedFromSiri = ([[launchOptions objectForKey:UIApplicationLaunchOptionsSourceApplicationKey] isEqualToString:@"com.apple.assistant.assistantd"]) ? YES : NO;
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
文件中的 Intent 名称