监视蓝牙外围设备状态变化,即使应用被杀死

时间:2019-04-01 22:46:26

标签: c# ios swift xamarin xamarin.ios

目前,我正在使用<style name="BodyText"> <item name="android:padding">5dp</item> <item name="android:gravity">center</item> <item name="android:textSize">21sp</item> <item name="android:textStyle">bold</item> <item name="android:textCursorDrawable">@null</item> <item name="android:textColor">@android:color/black</item> <item name="android:layout_width">wrap_content</item> <item name="android:layout_height">match_parent</item> </style> 的构造函数,该构造函数接受其委托和其他参数。从那时起,如果应用程序处于前台或后台状态,则只要蓝牙状态更改(例如turnOn / turnOff),就会按预期调用委托方法。当该应用程序甚至不在后台运行时(即该应用程序被杀死),该应用程序都不会启动,并且系统永远不会调用委托方法。

我确保在CBCentralManager的{​​{1}}下有bluetooth-centralbluetooth-peripheral

那么,即使应用程序根本没有运行,有什么方法可以接收状态更改通知吗?

边注:我们的应用依赖于蓝牙才能正常运行,因此保持蓝牙开启很重要。想法是,如果用户关闭了蓝牙,我们需要通过本地通知来提醒他们,需要正确打开蓝牙才能使我们的应用正常运行。

1 个答案:

答案 0 :(得分:1)

  

那么,即使应用程序根本没有运行,有什么方法可以接收状态更改通知吗?

不幸的是,即使应用程序根本没有运行,也无法接收状态更改通知。

注意:即使使用 iBeacons ,您也需要先唤醒应用程序,然后才能开始收听蓝牙设备状态的变化。   iBeacon 可以使用监视API将您的应用唤醒到后台。即使自设备重新启动以来尚未启动您的应用程序,或者即使该应用程序已从任务切换器中终止,它也可以执行此操作(尽管后者需要iOS 7.1+)。这可以通过您的应用程序调用{​​{1}}方法来实现startRangingBeaconsInRegion:上,并且还实现了CLLocationManager协议的CLLocationManagerDelegatelocationManager:didDetermineState:forRegion:和/或locationManager:didEnterRegion:方法。