【问题标题】:Is there any sure way to know that siri is launched while my app is running?有什么确定的方法可以知道在我的应用程序运行时启动了 siri 吗?
【发布时间】:2018-03-19 04:18:46
【问题描述】:

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

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

【问题讨论】:

  • 您能否提供更多信息,您要检查的确切情况是什么。 (所以,你离开了 Cricket 并开始编码)
  • 假设,当用户使用应用程序时,他长按主页按钮并打开 siri。有没有办法通过一些事件或通知或委托方法知道这一点? (没有人愿意再为我打板球付钱了;))

标签: ios objective-c siri


【解决方案1】:

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
}

【讨论】:

    【解决方案2】:

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

    但是是的,如果你想知道有一些方法可以让你在动作准确时得到通知

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

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

    ==> applicationWillResignActive

    func applicationWillResignActive(_ application: UIApplication) {
    
    }
    
    • 在应用程序即将从活动状态变为非活动状态时发送。某些类型的临时中断可能会发生这种情况 (例如来电或短信)或用户退出时 应用程序并开始转换到后台状态。

    • 使用此方法可暂停正在进行的任务、禁用计时器并使图形渲染回调无效。游戏应该使用这种方法 暂停游戏。

    ==> applicationWillEnterForeground & applicationDidBecomeActive(当用户从​​后台返回您的应用时

    func applicationWillEnterForeground(_ application: UIApplication) {
    
    }
    
    • 在从后台到活动的过渡过程中调用 状态;在这里您可以撤消在输入 背景。
        func applicationDidBecomeActive(_ application: UIApplication) {
    
        }
    
    • 重新启动任何在应用程序处于非活动状态时暂停(或尚未启动)的任务。如果该应用程序以前在 背景,可选择刷新用户界面。

    除了上述方法之外,您无法收到任何通知,您将在哪里处理从您的应用打开的 Siri。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-09-23
      • 2011-10-10
      • 1970-01-01
      • 1970-01-01
      • 2023-04-11
      • 2019-02-08
      • 2019-12-22
      • 1970-01-01
      相关资源
      最近更新 更多