我在某处读到,苹果上的信标和地理栅栏的工作方式类似,而且每部手机也有20个信标的限制。
真的是这样吗?
我们的用例:我们希望在应用程序未运行且手机未唤醒(在口袋中)时向用户发送推送通知。我们正在考虑依靠信标而不是地理栅栏,以避免达到每部手机20个栅栏的限制,并不得不处理重要的位置改变功能和类似的解决方案(目前)。
发布于 2017-05-17 22:32:43
信标的工作原理类似于geofences。当您进入或退出信标区域(在蓝牙范围内)时,您将得到通知,您还可以对周围的所有信标进行测距,以获取它们的ids。
对于CLBeaconRegions,还有20个区域的限制。请看:https://developer.apple.com/reference/corelocation/cllocationmanager/1423656-startmonitoringforregion使用监控区域和测距的组合,即使只有一个区域,您也可以做自己的事情。(很大程度上取决于您的用例)
如果你想发送基于地理的通知,信标可以为你工作。
发布于 2017-05-17 23:52:27
是的,有最多20个区域的限制( beacon和geofence组合在一起)。有几种方法可以监控上千个信标,但这取决于使用情况。
您可以使用不同的通配符并监视数千个信标,但有一些限制。您必须使用信标配置,如信标UDID、主要值和次要值。
如果您只对任何信标的进入或退出感兴趣(而对特定信标不感兴趣)。实际上,您只需为所有信标设置相同的UDID,并且仅监视一个信标区域就可以解决您的问题。
let region = CLBeaconRegion.init(proximityUUID: UUID.init(uuidString: "YOUR_BEACONS_UDID_32_DIGITS")!, identifier: "beacon_region1")
locationManager.startMonitoring(for: region)您还可以使用UDID和重大值对信标进行分组。
let r1 = CLBeaconRegion.init(proximityUUID: UUID.init(uuidString: "YOUR_BEACONS_UDID_32_DIGITS")!, major: 1000, identifier: "region_1000")因此,您可以在后台监控20组信标,并且每组可以拥有您想要的任意多个信标。
发布于 2017-05-18 03:12:18
虽然CoreLocation API将信标区域监控限制在20个区域(结合地理围栏区域),但您可以查找近860亿个不同的信标位置,以便向用户发送通知。
是的,这就对了。860亿--准确地说是85,899,345,920 .你觉得这就够了吗?
简单的技术是将信标监控API与信标测距API结合起来。使用监控,当检测到任何一个信标时,您可以在后台唤醒您的应用程序。然后使用测距API,您可以读取检测到的确切信标标识符,并向用户发送推送通知。当手机仍然放在用户的口袋里时,这一切都会起作用。
由于每个信标标识符包括一个主要(0-63355)和一个次要(0-63335),因此您可以使用不同的ProximityUUID监视最多20个信标区域,并获得20 x 65536 x 65536 = 85,899,345,920个不同的组合。
let region = CLBeaconRegion.init(proximityUUID: UUID.init(uuidString: "2F234454-CF6D-4A0F-ADF2-F4911BA9FFA6")!, identifier: "beacon_region1")
locationManager.startMonitoring(for: region)
locationManager.startRangingBeacons(in: region)
// TODO: repeat the above for up to 19 more regions..。
public func locationManager(_ manager: CLLocationManager, didRangeBeacons beacons: [CLBeacon], in region: CLBeaconRegion) {
for beacon in beacons {
var uuid = beacon.proximityUUID
var major = beacon.major
var minor = beacon.minor
// TODO: Send a unique local notification to the user for this
// uuid/major/minor combination identifying a particular place
}
}这种方法有一些局限性。如果您的信标被放置在彼此重叠的无线电范围内(~ 50米),则用户在一个信标旁边居住一段时间,然后步行到隔壁的另一个信标将不会得到背景唤醒,除非这些信标位于两个不同的区域。有一些游戏可以绕过这一限制,但对于许多用例,您甚至不需要麻烦。
https://stackoverflow.com/questions/44027394
复制相似问题