我一直在寻找,但还没找到......你知道是否有办法 确定我的iOS应用程序是由Siri还是用户点击应用程序图标启动的?
我需要知道,因为我只想在我的应用程序出现时自动执行启动操作 从Siri发起。
我在考虑可能应用程序:didFinishLaunchingWithOptions 或者 一些其他API将允许我的应用程序知道它是如何启动的,但事实并非如此 似乎是这种情况(或者我只是错过了它)。
在Apple发布之前,我知道是否可以使用某些技巧 一些官方/公共Siri API?
答案 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链接