如何知道蓝牙设备连接/断开状态回调到后台运行的iOS应用程序?

如何知道蓝牙设备连接/断开状态回调到后台运行的iOS应用程序?,ios,swift,avfoundation,ios-bluetooth,ios-background-mode,Ios,Swift,Avfoundation,Ios Bluetooth,Ios Background Mode,根据苹果文档,后台运行的应用程序不能接收回调,但基于位置、VOIP、Newstand、音乐播放器或APN的应用程序除外。 在这种情况下,如何接收连接状态回调? 应用程序正在将AVAudioSession实例用作: try! AVAudioSession.sharedInstance().setCategory(AVAudioSessionCategoryPlayAndRecord, with:AVAudioSessionCategoryOptions.allowBluetooth) 并通过以下

根据苹果文档,后台运行的应用程序不能接收回调,但基于位置、VOIP、Newstand、音乐播放器或APN的应用程序除外。 在这种情况下,如何接收连接状态回调? 应用程序正在将AVAudioSession实例用作:

try! AVAudioSession.sharedInstance().setCategory(AVAudioSessionCategoryPlayAndRecord, with:AVAudioSessionCategoryOptions.allowBluetooth)
并通过以下方式侦听通知:

NotificationCenter.default.addObserver(self,selector:#selector(handleRouteChange), name: .AVAudioSessionRouteChange,object: AVAudioSession.sharedInstance())

这在应用程序启动时调用。

您可以使用
bluetooth central
后台模式。据

(…)来自外围设备的新数据会导致系统唤醒应用程序,以便它能够处理数据。系统还会唤醒应用程序以处理附件连接和断开通知


但CoreBooth只允许可扩展通信,不支持蓝牙。由于应用程序无法进行蓝牙通信,应用程序正在利用AVFoundation了解路由更改。但这些回调仅在应用程序位于前台而不是后台时调用。请帮忙!在这种情况下,您需要背景音频和实际播放或录制音频。如果不满足这些条件,则您的应用程序将被重新调度,并且在应用程序到达前台之前,您的路线更改通知将不会发送。蓝牙需要背景音频似乎有点脏,但你有。但根据我们的要求,没有必要播放/录制音乐。当音乐正在播放且应用程序处于后台时,音乐在与BT设备断开连接时停止播放,但未调用回调。任何建议!我认为你运气不好,除非你走一条非常肮脏的沉默之路。但为什么您需要知道是否连接了BT音频设备?