有没有确定的方法可以知道在我的应用程序运行时启动了siri?

问题描述 投票:1回答:2

假设,当用户使用该应用程序时,他长按主页按钮并打开siri。有什么方法可以通过某些事件或通知或委托方法来了解这一点吗?

我想知道在我的应用程序运行时是否启动了siri。有没有确定的方法可以知道?

ios objective-c siri
2个回答
0
投票

根据您的要求,没有方法会通知应用程序Siri打开和关闭通知。

但是,如果您想了解有一些方法,您将在行动以下获得通知

  1. 收到电话。
  2. 收到Whatsapp或任何其他视频通话。
  3. Siri打开,同时长按主页按钮。

在上面所有场景应用程序将通过以下方法通知,并基于您可以在那里处理该事件。

==> applicationWillResignActive

func applicationWillResignActive(_ application: UIApplication) {

}
  • 应用程序即将从活动状态转为非活动状态时发送。对于某些类型的临时中断(例如来电或SMS消息)或当用户退出应用程序并且它开始转换到后台状态时,可能会发生这种情况。
  • 使用此方法可暂停正在进行的任务,禁用计时器以及使图形渲染回调无效。游戏应该使用这种方法暂停游戏。

==> applicationWillEnterForegroundapplicationDidBecomeActive(当用户从​​后台回来你的应用程序时)

func applicationWillEnterForeground(_ application: UIApplication) {

}
  • 被称为从背景到活跃状态的过渡的一部分;在这里,您可以撤消进入后台时所做的许多更改。
    func applicationDidBecomeActive(_ application: UIApplication) {

    }
  • 在应用程序处于非活动状态时重新启动暂停(或尚未启动)的任何任务。如果应用程序以前在后台,则可以选择刷新用户界面。

除了上述方法之外,您无法获得任何通知,您将从应用程序处理Siri。

希望这有助于理解app委托流程的通知。


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
}
© www.soinside.com 2019 - 2024. All rights reserved.