Hi,
I need to monitor in my app which interacts with BLE when a user is on the phone or not due to a limitation with some devices and BLE. I've written a basic call observer to test - but when the application is backgrounded it is not receiving any updates. I was wondering if anyone knew how to get call status notifications in the background?
class ViewController: UIViewController{
@IBOutlet weak var callStatusLabel: UILabel!
var callObs : CXCallObserver!
override func viewDidLoad() {
super.viewDidLoad()
/
callObs = CXCallObserver()
callObs.setDelegate(self, queue: nil)
print("Monitoring Calls")
callStatusLabel.text = "Monitoring..."
self.view.backgroundColor = UIColor.yellow
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
/
}
}
extension ViewController : CXCallObserverDelegate
{
func callObserver(_: CXCallObserver, callChanged: CXCall)
{
if(callChanged.hasEnded)
{
print("Call Ended")
callStatusLabel.text = "Call Ended"
self.view.backgroundColor = UIColor.green
}
else if(callChanged.hasConnected)
{
print("Call Connected")
callStatusLabel.text = "Call Connected"
self.view.backgroundColor = UIColor.red
}
}
}
I currently have the following Background modes enabled:
- Audio, AirPlay & PIP
- Loc Updates
- VOIP
- External accessory comm
- Uses BLE
- Background Fetch