假设,当用户使用该应用程序时,他长按主页按钮并打开siri。有没有办法通过某些事件或通知或委托方法来了解这一点?
我想知道在我的应用运行时是否启动了siri。有没有确定的方法可以知道?
答案 0 :(得分:0)
根据您的要求,没有方法会通知应用程序Siri打开和关闭通知。
但是,如果您想了解有一些方法,您将在行动以下获得通知
在上面所有场景应用程序将通过以下方法进行通知,并根据您可以在那里处理该事件。
==> applicationWillResignActive
func applicationWillResignActive(_ application: UIApplication) {
}
当应用程序即将从活动状态转为非活动状态时发送。某些类型的临时中断可能会发生这种情况 (例如来电或短信)或用户退出时 应用程序,它开始转换到后台状态。
使用此方法暂停正在进行的任务,禁用计时器,并使图形渲染回调无效。游戏应该使用这种方法 暂停比赛。
==> applicationWillEnterForeground
& applicationDidBecomeActive
(当用户从后台返回您的应用时
func applicationWillEnterForeground(_ application: UIApplication) {
}
- 被称为从背景到活动过渡的一部分 州;在这里你可以撤消进入的许多变化 背景
func applicationDidBecomeActive(_ application: UIApplication) {
}
- 在应用程序处于非活动状态时重新启动暂停(或尚未启动)的任何任务。如果该申请以前在 后台,可选择刷新用户界面。
除了上述方法之外,您无法通过应用程序处理Siri的任何通知。
希望这有助于理解应用委托代理流程。
答案 1 :(得分:0)
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
}