使用Swift检测附近的其他iPhone



我正在尝试构建一个能够在某个附近内使用同一应用程序检测另一个iPhone的应用程序。我不想使用位置。这可能吗?

假设您正在寻找彼此非常接近的设备,通常是在一个房间的顺序上,如果您幸运的话,也许有点进一步(如果您有时会少得多're(,您要寻找的是蓝牙LE(低能(。

  • 选择一个服务UUID(从命令行键入uuidgen;它将使您成为一个(
  • 使用CBPeripheralManager,宣传您的服务ID(请参阅startAdvertising(
  • 使用CBCentralManager,搜索相同的服务ID(请参阅scanForPeripherals(
  • 将自己注册为背景蓝牙应用程序,无论是bluetooth-centralbluetooth-periphral(有关详细信息,请参见Core蓝牙背景执行模式(

使用此设置,您的应用程序将宣传您的服务,并且您的应用程序将在电话看到某些东西广告服务时自动启动。

有关详细信息,请参见《核心蓝牙编程指南》。蓝牙开发有点挑剔,您经常需要处理很多小拐角案例,但是基础知识非常简单,尤其是对于这种用例。

如果您只想找到的人(在前景中(使用您的应用程序并与它们进行通信,请查看Gamekit。它建在核心蓝牙之上,但为您做了很多工作。它是为了让人们聚在一起玩游戏而设计的,但它可以做更多的事情。

一个注意:不要将蓝牙与蓝牙LE混淆。它们在根本上是不同的,并且基本上是无关的协议。蓝牙用于喜欢流媒体音乐的事物,您基本上根本无法访问iOS中的音乐。BLE用于将少量数据与低功率外围设备(如心率显示器等(交换。核心蓝牙仅处理BLE。

您也可以使用IBEACONS(在BLE顶部抽象(。与BLE相比,IBEACON更容易使用,就像您可以设置信标区域监视的Core蓝牙一样,因此,如果您正在收听的信标(或一组信标(,您的应用程序将启动。(但是BEACON监视使用位置管理器(

最新更新