如何从特定范围内的信标唤醒应用程序?
how to wake up app from beacon in specific range?
可以设置唤醒距离吗?如果可以,如何设置唤醒距离/最小rssi?
我想在最小距离为 5 米或设置最小 RSSI 值内设置唤醒应用程序。现在我只能根据它的默认范围从信标唤醒应用程序来唤醒。
我正在使用 Swift 3 开发应用程序。
iOS CoreLocation API 无法设置信标监控回调的最小距离。完成类似任务的常用方法是使用 Beacon 测距。
您可以通过同时启动监视和测距来完成此操作:
locationManager?.startMonitoring(for: region)
locationManager?.startRangingBeacons(in: region)
监控回调将在首次检测到信标时在后台唤醒您的应用,并自动开始测距。然后在测距回调中,仅当满足最小距离条件时才执行逻辑:
func locationManager(_ manager: CLLocationManager, didRangeBeacons beacons: [CLBeacon], in region: CLBeaconRegion) {
for beacon in beacons {
// Is beacon less than 5 meters away?
if beacon.accuracy < 5.0 {
// Custom logic here
}
}
对此有一些注意事项:
在后台,在区域中首次检测到信标后,您只能进行 10 秒的测距。因此,如果您在其传输范围外缘(比如 40 米)的背景中检测到信标,则只有当用户在 10 秒内到达 5 米以内时,您才会触发自定义逻辑。有一些方法可以 lengthen the time of background ranging to 180 seconds 使它更实用。
测距回调每秒触发一次。所以如果你只想执行一次你的逻辑,你必须设置某种标志来防止它每秒都在执行。
可以设置唤醒距离吗?如果可以,如何设置唤醒距离/最小rssi?
我想在最小距离为 5 米或设置最小 RSSI 值内设置唤醒应用程序。现在我只能根据它的默认范围从信标唤醒应用程序来唤醒。
我正在使用 Swift 3 开发应用程序。
iOS CoreLocation API 无法设置信标监控回调的最小距离。完成类似任务的常用方法是使用 Beacon 测距。
您可以通过同时启动监视和测距来完成此操作:
locationManager?.startMonitoring(for: region)
locationManager?.startRangingBeacons(in: region)
监控回调将在首次检测到信标时在后台唤醒您的应用,并自动开始测距。然后在测距回调中,仅当满足最小距离条件时才执行逻辑:
func locationManager(_ manager: CLLocationManager, didRangeBeacons beacons: [CLBeacon], in region: CLBeaconRegion) {
for beacon in beacons {
// Is beacon less than 5 meters away?
if beacon.accuracy < 5.0 {
// Custom logic here
}
}
对此有一些注意事项:
在后台,在区域中首次检测到信标后,您只能进行 10 秒的测距。因此,如果您在其传输范围外缘(比如 40 米)的背景中检测到信标,则只有当用户在 10 秒内到达 5 米以内时,您才会触发自定义逻辑。有一些方法可以 lengthen the time of background ranging to 180 seconds 使它更实用。
测距回调每秒触发一次。所以如果你只想执行一次你的逻辑,你必须设置某种标志来防止它每秒都在执行。