【问题标题】:Detect nearby mobile devices from an iOS app从 iOS 应用程序检测附近的移动设备
【发布时间】:2015-01-30 06:50:07
【问题描述】:

是否可以创建一个 iOS 应用程序来扫描附近的移动设备(例如 iPhone、Android、iPad 等),而无需在附近的移动设备上运行任何自定义应用程序?

我尝试过像这样在我的 iPhone 6+ 上运行 CoreBluetooth:

[self.centralManager scanForPeripheralsWithServices:nil options:nil];

但它检测到的唯一附近设备是我的 iMac,它不会检测到我的 iPad Air 2 或蓝牙耳机。

我做错了吗?

【问题讨论】:

  • 核心蓝牙仅适用于低功耗蓝牙设备,不适用于经典蓝牙。我想你的耳机是蓝牙经典设备。
  • 我对检测移动设备更感兴趣,例如。 iPad Air 2。这些应该是 BLE?
  • 是的,他们是。但为了被发现,设备必须宣传一个或多个 BLE 服务。您可以实现CBPeripheralManager 来做到这一点,甚至还有来自 Apple 的用于“扫描仪”和“外围设备”端的示例代码。
  • 听起来我想做的事情如果没有双方都有自定义应用程序是不可能的?换句话说,我想做的是检测附近没有运行我编写的应用程序的 iOS 设备。我实际上并不想配对 - 只是检测名称/标识符。
  • iOS 设备是否还没有宣传 BLE 服务,例如热点或切换?

标签: ios bluetooth core-bluetooth


【解决方案1】:

核心蓝牙仅适用于低功耗蓝牙(又名蓝牙 4.0)设备,不适用于经典蓝牙设备。为了被发现,设备必须宣传一个或多个 BLE 服务。您可以实现 CBPeripheralManager 来做到这一点,甚至还有来自 Apple 的 sample code 用于“扫描仪”和“外围设备”端。请注意,您还可以通过这种方式发现其他移动设备(例如 Android 智能手机)或被其他移动设备发现。

我不知道是否可以检测到 Hotspot 或 Handoff BLE 服务。 Core Bluetooth 不允许您访问“原始”Bluetooth Low Energy 广告数据包,因此 Apple 可能会过滤掉一些内容。

如果您只想检测 iOS 设备(而不检测其他 BLE 设备/配件),您还可以使用 Multipeer Connectivity 框架。我个人觉得它更容易使用,它甚至提供了一个内置的"discovered devices" view。但是您仍然需要在双方都运行自定义应用程序。

【讨论】:

  • Multipeer 是完全的垃圾,顺便说一句。随着时间的推移,它会以神秘的方式失败,当连接的设备超过 8 台时,它也会尝试连接失败。
【解决方案2】:

如果您使用的是低功耗蓝牙,它只会检测 BLE 设备的外围设备。 但是有范围的限制。根据文档,BLE 设备范围约为 300 米。您可以在 CBCentralManager 外围方法中获取信号强度:

- (void)centralManager:(CBCentralManager *)central didDiscoverPeripheral:(CBPeripheral *)peripheral advertisementData:(NSDictionary *)advertisementData RSSI:(NSNumber *)RSSI

这里的 RSSI 是您的信号强度。但是外围设备必须启用 BLE,即蓝牙版本 4.0 或更高版本

【讨论】:

  • 我正在测试的所有东西都放在我的办公桌上
【解决方案3】:

如果您不需要将正在构建的任何内容放在 App Store 上,您可以越狱您的 iPhone 并直接访问数据包。

Bluetooth Companion,在 Cydia 中可用,将在您的手机上显示蓝牙数据包。我不确定该项目的源代码是否可用,但您可以查看其他项目,例如 BTStack(有一个很好的 Getting Started guide here)。

【讨论】:

  • 虽然预期目标是企业应用程序而不是 App Store,但越狱不是一种选择。感谢您的意见。
【解决方案4】:

我将从参与嵌入式系统开发的人的角度出发。如前所述,BLE 仅检测其他 BLE 设备的外围设备,因此我认为蓝牙技术不是检测附近移动设备的应用程序的最佳选择。

您的应用应包含两个检测功能。应该使用蓝牙来检测普通 PC 并使用 GPS 来检测其他移动设备,因为它是我认为在 android 和 4G ipad mini 等中存在的唯一其他外围设备。

对于您的听筒,如果未检测到它,那么我不知道有任何软件解决方案会修改硬件不兼容性,因此我建议您购买与蓝牙设备兼容的听筒。

您的问题不是软件问题,而是设备的硬件限制。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-26
    • 1970-01-01
    相关资源
    最近更新 更多