通过CoreBluetooth使用BLE,并将Raspberry Pi设置为从应用连接到的蓝牙外设,您绝对会受益匪浅。您可以设置Raspberry Pi来播放唯一的GATT Service,这样您就可以通过在CoreBluetooth中找到该服务来自动连接它。
一旦连接到外设,您可以使用readRSSI()
方法来检索蓝牙信号强度,并且框架将根据您请求的信息调用peripheral(_:didReadRSSI:error:)
委托方法。然后,您可以使用它来检测(大约)iPhone与Raspberry Pi的距离。
就实际距离而言,您使用的iOS设备,芯片组和蓝牙适配器之间的'RSSI - >距离'关系将会有所不同,因此您可能需要随身携带数据一旦你有了应用程序,并运行,以找到适合你的需求。
对不起,有大量的链接。这个问题有点宽泛,我只是提供我的观点,因为我已经做了很多CoreBluetooth和BLE的工作。据我所知,WiFi不会是一个很好的可重复使用的解决方案,我在我的应用程序中没有使用NFC做任何工作。如果您有其他问题,请告诉我!
编辑:我错过了你说你想对Raspberry Pi本身进行检测,而不是电话。我很抱歉。我将以上述答案作为参考,但您仍然可以通过蓝牙LE和可能通过NFC获得选项(由于网络强度和检测方面的变化太多,我仍然在排除Wi-Fi)。
对于BLE,您可以采用与上面强调的方法非常类似的方法,除了在您的iOS设备是外设的情况下创建iPhone应用程序,并将其服务广播到Raspberry Pi。对于NFC,如果您选择this thread,这两个答案似乎都有一些很好的启动信息,说明如果您将NFC阅读器连接到Pi,如何从Apple Pay获得标记化帐号。希望这可以帮助。
的OP所说的”检测应要从树莓完成“ - 你的答案似乎完全在iOS端。 – barny