我有一个运行2种模式的应用程序:
模式1:公布应用程序UUID
模式2:App UUID的监视器和范围
当两台设备接近时,会触发通知。当在前台时,我可以使用Major / Minor值将唯一的设备ID(猜测蓝牙MAC地址)发送到模式2中的设备,并呼叫网络服务以识别“谁”'该设备属于。
这种方法在后台似乎不可能?我已经读过,iOS广告宣传的蓝牙数据包会在广告时删除蓝牙MAC地址和主要/次要值,或者在接收通知的后台运行应用的设备选择不接收它?
我的问题是:
即使设备监控使用CoreBluetooth iBeacon或CoreLocation服务在后台运行应用程序,是否可以检测哪个设备正在宣传Apps UUID?
答案 0 :(得分:2)
是的,您可以使用模式2中的CoreLocation iBeacon API和CoreBluetooth API在模式1中使用特定于设备的主要和次要标识符来宣传iBeacon。
为了澄清,您不能使用蓝牙Mac地址作为iOS在接收方(在后台和前台)欺骗这一点,为每个会话分配一个唯一的,对于同一个发送设备并不总是一致。
使用iBeacon传输时,您必须事先在接收器上知道iBeacon ProximityUUID,因此可以使用16位主要和16位次要字段来唯一标识设备。这为你提供了超过十亿的组合,所以它应该足够了。
您可以在后台监控单个iBeacon UUID,然后iOS将唤醒您的应用程序5秒钟,允许您使用iBeacon测距API读取主要和次要标识符。所有这些都在模式2的后台工作,除了作为iBeacon发送,需要模式1的前景。