更改 iBeacon 的 Minor 和 Major 值会阻止我找到信标。 (iBeacon/Xcode)
Posted
技术标签:
【中文标题】更改 iBeacon 的 Minor 和 Major 值会阻止我找到信标。 (iBeacon/Xcode)【英文标题】:Changing Minor and Major values for iBeacon stops me from being able to find the beacon. (iBeacon/Xcode) 【发布时间】:2020-02-08 11:15:16 【问题描述】:我正在尝试连接到 5 个 iBeacon 设备 (Minew i10),我只能在 Major 和 Minor 值都为 0 时发现它们。所有 UUID 都相同。我正在打印信标信息,并且仅在主要/次要值不为 0 时获得空白输出,而当主要/次要值都设置为 0 时,实际输出包含范围、UUID、次要、主要等。
我在这里可能做错了什么?
import UIKit
import SceneKit
import ARKit
import CoreLocation
class ViewController: UIViewController, ARSCNViewDelegate, CLLocationManagerDelegate
@IBOutlet var sceneView: ARSCNView!
let locationManager = CLLocationManager()
let region = CLBeaconRegion(uuid: UUID(uuidString: "(actual UUID inserted here)")!,
identifier: "Minew Beacon(s)")
override func viewDidLoad()
super.viewDidLoad()
// Set the view's delegate
sceneView.delegate = self
locationManager.delegate = self
if (CLLocationManager.authorizationStatus() != CLAuthorizationStatus.authorizedWhenInUse)
locationManager.requestWhenInUseAuthorization()
locationManager.startRangingBeacons(in: region)
// Show statistics such as fps and timing information
sceneView.showsStatistics = true
// Create a new scene
let scene = SCNScene(named: "art.scnassets/ship.scn")!
// Set the scene to the view
sceneView.scene = scene
func locationManager(_ manager: CLLocationManager, didRangeBeacons beacons: [CLBeacon], in region: CLBeaconRegion)
print(beacons)
【问题讨论】:
【参考方案1】:您可以尝试使用不同的信标或第二部带有信标发射器应用的手机,例如 ios 的 Locate Beacon 或 android 的 BeaconScope。
我怀疑您会发现您的代码没有任何问题,并且您将能够检测到具有非零主要和次要值的其他信标发射器。我怀疑是 Minew 信标配置在您进行配置更改以将主要和次要设置为非零值时以某种方式使该信标无法检测到。您配置它的方式可能有问题,应用了与预期更改不同的内容。
【讨论】:
谢谢你,我又看了一遍,这是因为我使用的是llocationManager.startRangingBeacons(in: region)
,它在 iOS 13 中已被弃用。相反,我将其更改为以下内容,现在可以使用. locationManager.startRangingBeacons(satisfying: identityConstraint)
谢谢大卫。以上是关于更改 iBeacon 的 Minor 和 Major 值会阻止我找到信标。 (iBeacon/Xcode)的主要内容,如果未能解决你的问题,请参考以下文章
对于具有不同 UUID、major 和 minor 的多个 iBeacon,仅触发一次 didEnterRegion 事件
使用自定义 iOS 应用更改 iBeacon UUID(或主要/次要)?