使用BTLE追踪移动设备

3
我正在寻找一种方法,能够在范围内使用我的BTLE启用的iOS设备跟踪另一个设备。基本上,一个设备必须记录其地理位置信息,然后定期使用BTLE将其发送到另一个设备。
我该如何做到这一点?总的来说,我没有找到关于如何通过BTLE发送和接收消息的多少信息,所以在这方面任何帮助都将是很好的。我已经看到了这个答案,但它对我没有什么帮助,我想知道是否有任何变化。
如果无法通过苹果内置框架实现,您是否知道任何外部框架可以实现此功能?

3
请参考苹果公司的BTLE Central Peripheral Transfer示例,该示例展示了如何在两个iOS设备之间通过LE传输数据(需要iOS 6.0及以上版本)。您只需要创建一个自定义配置文件,将您的位置坐标作为属性进行传输即可。 - Brad Larson
你知道BLE是如何工作的吗?如果不知道,我建议你这样做:使用LightBlue应用(AppStore上的应用程序,可以“替代”温度计)在两个iDevice上玩耍。然后将Temperature Sensor(来自Apple的示例)与LightBlue结合使用。一旦你理解了BLE的工作原理,你就可以学习Brad提供的先前示例。当我说玩耍时,并不意味着你不需要阅读BLE文档和CoreBluetooth.framework的Apple文档,而是可以进行测试。 - Larme
1个回答

4
长话短说,以下是内容翻译:
在一个iOS设备上,采用CBCentralManager和CBPeripheralManager。CBCentralManager负责连接外部外围设备并维持该连接。CBPeripheralManager将用于从使用外围设备的iOS设备中读写。
在另一个iOS设备上,仅采用CBPeripheralManager。您需要将GATT配置文件中规定的所有服务和特征添加到CBPeripheralManager中。请查看developer.bluetooth.org。这些服务和特征是连接两个设备所必需的。
除了gatt特征和服务之外,您还需要添加具有存储位置数据特性的自定义服务。
请查看文档,但对于特别的CBPeripheralManager,您需要利用:
-(void) peripheralManager:(BLEPeripheralManager*)mgr requiresResponseToWriteRequests:(NSArray*)requests;

并且

-(void) peripheralManager:(BLEPeripheralManager*)mgr requiresResponseToReadRequest:(CBATTRequest*)request;

为了在设备之间传递位置数据..很抱歉只能提供简要概述,因为需要写的内容太多。


短小精悍,但非常有用。在我们完成之前,我不知道它是否完全符合我的要求,但像这样的大纲正是我所需要的。谢谢! - NeonBlueHair
好的,我正在处理它,但似乎存在问题。这两个设备是否可以在同一连接中相互发送和接收数据?现在似乎只有一个设备广播而另一个订阅才能获取数据。我想要实现的是两者能够同时跟踪对方。或者我是否需要通过快速更新连接并更改设备的中心/外围状态来实现此目的? - NeonBlueHair
哦,等等,我忘记了你的问题。所以你想让它们都能够互相写入位置坐标? - Tommy Devoy
是的!你觉得这可行吗? - NeonBlueHair
我很乐意给你声望点数/赏金,如果你关心的话。 - NeonBlueHair
哈哈,是可以做到100%的。我现在很忙,但稍后会评论并给你一些指点。 - Tommy Devoy

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接