我正在开发信标检测应用程序,目前非常适用于 kontakt 品牌信标。
客户给我发了一些我从未见过的新信标,我用谷歌搜索但我找不到它们可以是什么品牌。
The following information related to this beacon they gave me:
uuid: fda50693-a4e2-4fb1-afcf-c6eb07647825
pass: 000000
name: ion_beacon00021
major: 16789
minor: 24532
我已经转换了我的代码来监控两个 uuid 而没有让它工作
for (index, beaconID) in beaconsIds.enumerated() {
let beaconUUID = UUID(uuidString: beaconID)!
let identifier = "BLERegionBeacon \(index)"
let beaconRegion = CLBeaconRegion(proximityUUID: beaconUUID, identifier: identifier)
self.locationManager?.startMonitoring(for: beaconRegion)
self.locationManager?.startRangingBeacons(in: beaconRegion)
}
func configureLocationManager() {
self.locationManager = CLLocationManager()
self.locationManager!.delegate = self
self.locationManager!.desiredAccuracy = kCLLocationAccuracyBest
self.locationManager!.distanceFilter = kCLDistanceFilterNone;
self.locationManager!.activityType = CLActivityType.automotiveNavigation;
for region in self.locationManager!.monitoredRegions {
self.locationManager?.stopMonitoring(for: region)
}
if CLLocationManager.authorizationStatus() != CLAuthorizationStatus.authorizedAlways {
self.locationManager?.requestAlwaysAuthorization()
}
self.locationManager!.startUpdatingLocation()
}
当找不到如何使这个新的 ibeacon 工作时,我求助于第三方应用程序(如 MyBeacon
、Detector
、Beacon Demonstrator
、 Locate
) 来验证我掌握的关于这个信标的信息是否正确,但在任何应用程序中我都无法让它检测到这个 ibeacon。
我买了一 block 新电池以确保它不是那么简单,但也不是。 :'(
我想使用任何检测蓝牙设备的应用程序,我发现了 BLE Scanner
。有了这个应用程序,我很幸运,可以意识到至少我拥有的信标名称是正确的,但没有找到任何与 major 或 minor or pass
相关的名称。我还认为在那里看到的长 ID 可能是正确的,而我的 ID 不是......但我放弃了它,因为当我连接品牌 kontakt 时也给了我一个不同的 uuid。
ISCONNECTABLE
在 YES 和 NO 之间跳转。
当我使用 BLE Scanner
检测信标时 Kontakt
显示名为 SERVICEDATA
和 ISCONNECTABLE
的附加信息仍在是的。
- 检测这些信标还需要做些什么吗?
- 任何人都知道可能会发生什么?
非常感谢
编辑
在 davidgyoung 的帮助下,我可以意识到 Locate 应用程序如果它可以工作,但只能在它的 android 版本中使用。事实上,我正确地返回了我最初从那个信标获得的信息。
我发现这些信标可以使用名为 BeaconFlyer 的应用程序进行配置在那里我意识到了发送给我的那个密码的原因。我能够更改 uuid
尽管奇怪的是我只输入了数字而没有输入字母。我按照 8-4-4-4-12 的相同模式将其更改为 32 个零。我在 IOS 中仍然没有结果,但在 android 上工作,即使在更改 uuid 之后也是如此。
可能有些品牌需要通过认证才能被iOS设备检测到,而android没有这些限制。
编辑 2
考虑到所有这些细节,问题似乎出在 IOS 而不是 android,所以我想到如果我创建一个简单的 android 项目只是为了测试信标的功能,我应该能够检测到它。
测试是通过注册这个 UUID f7826da6-4fa2-4e98-8024-bc5b71e0893e
完成的,它一直对我有用,我用它毫无问题地检测到信标标记联系方式
。
令我惊讶的是,即使没有注册我为这个品牌拥有的 UUID,我也能毫无问题地检测到它。考虑到只注册 1 个 UUID 是非常奇怪的 kontakt
最佳答案
如果您正在检测另一个具有相同代码的信标,那么最简单的解释是给您的 ProxmityUUID 是错误的。
您将无法从 iOS 上的 BLE 扫描器确定正确的 ProximityUUID,因为 iOS 会阻止访问 iBeacon 广告,除非您预先知道 ProximityUUID。如果您可以使用 Android 设备,则可以使用 Locate 应用程序查看任何信标,而不管其标识符如何。 https://play.google.com/store/apps/details?id=com.radiusnetworks.locate&hl=en您可以使用它来找出它实际发送的内容。如果您可以访问 Mac,也有适用于 MacOS 的类似应用程序。
关于ios - 在我的应用程序中未检测到新的 ibeacons,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45313770/