【问题标题】:Finding generic Bluetooth devices within reach寻找触手可及的通用蓝牙设备
【发布时间】:2011-09-25 02:22:31
【问题描述】:

我们正在使用 iOS 私有框架 BluetoothManager 进行一个简单的实验——寻找可发现的通用(非 iOS)BT 设备。现在,只有以下行返回设备:

for(BluetoothDevice* device in [[BluetoothManager sharedInstance] pairedDevices])

不幸的是,它只返回已经配对的设备,这不是我们想要的。使用 connectingDevices 而不是 pairedDevices 根本不会返回任何设备。那么,我们必须具备哪些选项才能检测到任何触手可及的蓝牙设备呢?我认为我不能使用 GameKit,因为我想发现非 iOS 设备。

欢迎提出任何建议。

【问题讨论】:

  • 我应该澄清一下,我正在寻找一种方法来列出附近可发现的 通用(非 iOS)设备。

标签: ios iphone ios5 ios4 bluetooth


【解决方案1】:

这几天我一直在搞乱私有框架,获取附近设备的列表非常简单。

首先,您必须启用设备扫描:

[[BluetoothManager sharedInstance] setDeviceScanningEnabled:YES];

如果范围内有设备,它将开始向通知中心发布 BluetoothDeviceDiscoveredNotification 通知。订阅这些,传递给回调的 NSNotification 中的对象将是 BluetoothDevice* 类型。

我确定 BluetoothManager 将所有发现的设备存储在某处,但我只是将所有内容都放入了我自己的 NSMutableArray。

不幸的是,我仍然没有弄清楚如何使用私有 API 与设备进行实际配对。

【讨论】:

  • 那么,这是否意味着为了让应用发现设​​备,它必须越狱?
  • 不,您将无法将您的应用提交到商店,因为 Apple 不允许私有框架。开始使用该框架的好帖子在这里:stackoverflow.com/a/1892077/1088502
  • 据我了解,99 美元的开发程序允许在开发电话上进行临时构建。但是如果我要分发给最终用户,用户的手机是否需要越狱?
  • 我还没有尝试分发这个,所以我不确定,但我不相信他们需要越狱。但请记住,因为它是一个未发布的 API,它可能随时更改,因此您的应用程序可能会在操作系统更新的任何时候中断。
  • 是的,99 美元的程序允许您创建临时构建。但是,任何运行它的设备都需要在 ad-hoc 配置文件中。您只能在配置门户中注册 100 台设备。除了分发给测试人员/审阅人员等之外,这并不是一个真正的选择。
【解决方案2】:

您需要使用BluetoothManager开启蓝牙,然后开启对远程设备的蓝牙扫描。

注册通知回调后,您将获得发现的设备。通知对象实际上是一个指向 BluetoothDevice 对象的指针。

获取BluetoothDevice对象指针,并从那里获取名称、地址或连接到远程设备。

这里没有RSSI,你可以通过查看BluetoothDevice.h文件看到完整的方法列表。

我写了一个完整的示例,兼容 iOS 5.1,在这里:http://www.pocketmagic.net/?p=2827

祝你好运!

【讨论】:

  • 你有没有为最近的 iOS 版本更新过这个?在 iOS 8 左右,这似乎不再起作用了。
  • 嗨,Nate,很遗憾我最近没有时间重温这个。
【解决方案3】:

GKSession 类是 GameKit 框架的一部分,您正在寻找它,因为它提供了使用蓝牙发现并连接到附近的 iOS 设备的能力。

【讨论】:

  • 但我认为 GK 不允许返回可发现的设备列表。对吗?
  • 是的,你可以:一个 GKSessionModeClient 会话搜索本地设备广告相同的会话 ID。当它发现可用且兼容的对等点时,它会调用委托的 session:peer:didChangeState: 方法。诀窍是使用 GKSessionModeClient 和 GKSessionModeServer 并远离 GKSessionModePeer
  • 如果可发现的设备是 iOS 设备而不是通用设备,我认为 GKSession 可以工作,对吧?
  • 问题是关于寻找“可发现的通用(非iOS)”。该游戏套件仅允许与其他 iOS 设备进行交互。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-06-08
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多