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

时间:2018-03-19 04:18:47

标签: ios objective-c siri

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

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

2 个答案:

答案 0 :(得分:0)

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

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

  1. 收到电话。
  2. 收到Whatsapp或任何其他视频通话。
  3. Siri在长按主页按钮时打开。
  4. 在上面所有场景应用程序将通过以下方法进行通知,并根据您可以在那里处理该事件。

    ==> 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
}