ios - 在我的应用程序中未检测到新的 ibeacons

标签 ios swift bluetooth bluetooth-lowenergy ibeacon

我正在开发信标检测应用程序,目前非常适用于 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

enter image description here

我已经转换了我的代码来监控两个 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 工作时,我求助于第三方应用程序(如 MyBeaconDetectorBeacon DemonstratorLocate) 来验证我掌握的关于这个信标的信息是否正确,但在任何应用程序中我都无法让它检测到这个 ibeacon。

我买了一 block 新电池以确保它不是那么简单,但也不是。 :'(

我想使用任何检测蓝牙设备的应用程序,我发现了 BLE Scanner。有了这个应用程序,我很幸运,可以意识到至少我拥有的信标名称是正确的,但没有找到任何与 major 或 minor or pass 相关的名称。我还认为在那里看到的长 ID 可能是正确的,而我的 ID 不是......但我放弃了它,因为当我连接品牌 kontakt 时也给了我一个不同的 uuid。

enter image description here

enter image description here

ISCONNECTABLE 在 YES 和 NO 之间跳转。

当我使用 BLE Scanner 检测信标时 Kontakt 显示名为 SERVICEDATAISCONNECTABLE 的附加信息仍在是的。

enter image description here

- 检测这些信标还需要做些什么吗?

- 任何人都知道可能会发生什么?

非常感谢

编辑

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/

相关文章:

ios - Xcode 服务器 CI 机器人测试 session 已退出 (-1)

ios - 在 nodejs 上运行的 sprite-kit 游戏

swift - 在 Alertview 中快速创建和自定义 UITextfield

ios - 是否可以使用 iPhone gamekit API 扫描蓝牙 "id' s”

android - 在 Android 2.0 中查找 UUID

ios - 在/usr/lib/system/libcache.dylib 中,缺少所需的架构 armv6

ios - 'NSDictionary' 方法 'dictionaryWithObjectsAndKeys:' 的参数应该是 Objective-C 指针类型,而不是 int

swift - 如何在 Swift 中将类型别名作为函数参数传递?

ios - 在 UITableViewController 底部添加一个带动画的按钮

iphone - 如何使用 GameKit 在 iPhone 蓝牙中区分主机和客户端