ibacon 如何在后台工作?

Posted

技术标签:

【中文标题】ibacon 如何在后台工作?【英文标题】:How does ibeacon work on background? 【发布时间】:2015-01-19 08:25:09 【问题描述】:

我想在应用上有人进入 iBeacon 区域时创建一个订单 后台,但是当应用程序在后台时出现问题。

我知道如果用户打开“位置”和“蓝牙”并进入区域,应用程序会检测到ibeacon。但是进入区域后,用户打开“蓝牙”,应用程序无法收到进入通知(有时工作) 并且不能调用函数 locationManager:(CLLocationManager *)manager didRangeBeacons:(NSArray *)beacons inRegion:(CLBeaconRegion *)region 所以无法创建订单。

有人有这方面的经验吗?

【问题讨论】:

【参考方案1】:

为了更真实、更准确地获取蓝牙状态值,请覆盖其对控制器的委托。核心蓝牙框架将帮助在这里获得所需的准确性。

在项目中添加<CoreBluetooth/CoreBluetooth.h>框架。

使用方法

- (void)peripheralManagerDidUpdateState:(CBPeripheralManager *)peripheral;

检查蓝牙是否开机?

Peripheral Manager State 将为您提供有关外围状态和相关委托的更多详细信息。

所以当任何设备打开它的蓝牙时,上面的委托方法就会被调用。

在这里您可以手动开始检查区域更新。

例如:

_locationManager = [[CLLocationManager alloc] init];
[_locationManager setDelegate:self];

_beaconRegion = [[CLBeaconRegion alloc] initWithProximityUUID:uuid identifier:<Identifier>];


- (void)peripheralManagerDidUpdateState:(CBPeripheralManager *)peripheral 

    if (peripheral.state == CBPeripheralStateConnected) 
        [self.locationManager startRangingBeaconsInRegion:self.beaconRegion];
    

方法startRangingBeaconsInRegion会调用方法:

- (void)locationManager:(CLLocationManager *)manager didRangeBeacons:(NSArray *)beacons inRegion:(CLBeaconRegion *)region;

【讨论】:

谢谢你。刚才我已经试过了。在前台运行时,函数(蓝牙委托)将调用,但在后台不起作用。然后我把后台模式修改为“App使用CoreBluetooth通信”,还是不行。 看看这个后台蓝牙任务 - developer.apple.com/library/ios/documentation/General/Reference/…

以上是关于ibacon 如何在后台工作?的主要内容,如果未能解决你的问题,请参考以下文章

如何使 phonegap 构建应用程序在后台工作

*** 客户端如何在后台工作?

C++,如何使控制台应用程序在关闭后在后台工作?

像 select() 或 poll() 这样的系统调用是如何在后台工作的?

Whatsapp 和即时消息应用程序如何在没有 Oreo 持续通知的情况下在后台工作?

face_recognition 库如何在后台工作?