假设,当用户使用该应用程序时,他长按主页按钮并打开siri。有什么方法可以通过某些事件或通知或委托方法来了解这一点吗?
我想知道在我的应用程序运行时是否启动了siri。有没有确定的方法可以知道?
根据您的要求,没有方法会通知应用程序Siri打开和关闭通知。
但是,如果您想了解有一些方法,您将在行动以下获得通知
在上面所有场景应用程序将通过以下方法通知,并基于您可以在那里处理该事件。
==> applicationWillResignActive
func applicationWillResignActive(_ application: UIApplication) {
}
- 应用程序即将从活动状态转为非活动状态时发送。对于某些类型的临时中断(例如来电或SMS消息)或当用户退出应用程序并且它开始转换到后台状态时,可能会发生这种情况。
- 使用此方法可暂停正在进行的任务,禁用计时器以及使图形渲染回调无效。游戏应该使用这种方法暂停游戏。
==> applicationWillEnterForeground
&applicationDidBecomeActive
(当用户从后台回来你的应用程序时)
func applicationWillEnterForeground(_ application: UIApplication) {
}
- 被称为从背景到活跃状态的过渡的一部分;在这里,您可以撤消进入后台时所做的许多更改。
func applicationDidBecomeActive(_ application: UIApplication) {
}
- 在应用程序处于非活动状态时重新启动暂停(或尚未启动)的任何任务。如果应用程序以前在后台,则可以选择刷新用户界面。
除了上述方法之外,您无法获得任何通知,您将从应用程序处理Siri。
希望这有助于理解app委托流程的通知。
Swift 4.1 - iOS 12.0.0
到目前为止,只有解决方案来检测Siri是否正在运行我的用例。
注意:请在项目中仔细测试以仔细检查(因为我们依赖于与Siri Kit无关的AVAudioSession)
func hasSiri() -> Bool {
let audioSession = AVAudioSession.sharedInstance()
return audioSession.inputDataSource == nil ||
audioSession.inputDataSources == nil ||
audioSession.inputDataSources?.isEmpty == true
}