确定iOS应用程序是否是通过Siri启动的

时间:2013-10-03 01:52:09

标签: ios objective-c cocoa-touch siri

我一直在寻找,但还没找到......你知道是否有办法 确定我的iOS应用程序是由Siri还是用户点击应用程序图标启动的?

我需要知道,因为我只想在我的应用程序出现时自动执行启动操作 从Siri发起。

我在考虑可能应用程序:didFinishLaunchingWithOptions 或者 一些其他API将允许我的应用程序知道它是如何启动的,但事实并非如此 似乎是这种情况(或者我只是错过了它)。

在Apple发布之前,我知道是否可以使用某些技巧 一些官方/公共Siri API?

3 个答案:

答案 0 :(得分:1)

我唯一可以建议的是检查作为application:willFinishLaunchingWithOptions:application:didFinishLaunchingWithOptions:的一部分传入的launchOption字典。

有一个密钥声称列出了请求启动应用程序的应用程序的名称,可能会列出Siri:

来自位于here的Apple doc:

UIApplicationLaunchOptionsSourceApplicationKey

  

此密钥的存在标识了请求启动您的应用的应用。此键的值是NSString对象,表示发出请求的应用程序的包ID。   此密钥还用于访问名为UIApplicationDidFinishLaunchingNotification的通知的userInfo字典中的相同值。   适用于iOS 3.0及更高版本。   在UIApplication.h中声明。

答案 1 :(得分:0)

当我从Siri启动时,调用application:didFinishLaunchingWithOptions。但是,我的launchOptions字典是空的。如果我使用URL方案启动应用程序,则我的launchOptions字典具有相应的密钥。目前,它似乎无法知道该应用是否是从Siri推出的

答案 2 :(得分:0)

apple提供的启动选项列表

let UIApplicationLaunchOptionsURLKey: String let UIApplicationLaunchOptionsSourceApplicationKey: String let UIApplicationLaunchOptionsRemoteNotificationKey: String let UIApplicationLaunchOptionsLocalNotificationKey: String let UIApplicationLaunchOptionsAnnotationKey: String let UIApplicationLaunchOptionsLocationKey: String let UIApplicationLaunchOptionsNewsstandDownloadsKey: String let UIApplicationLaunchOptionsBluetoothCentralsKey: String let UIApplicationLaunchOptionsBluetoothPeripheralsKey: String let UIApplicationLaunchOptionsShortcutItemKey: String let UIApplicationLaunchOptionsUserActivityDictionaryKey: String let UIApplicationLaunchOptionsUserActivityTypeKey: String

以下是苹果文档 Launch Options Keys的链接 以下是关于官方/公共Siri API Quora Link

的Quora链接