使用Swift检测附近的其他iPhone

时间:2018-04-23 21:33:10

标签: ios swift

我正在尝试构建一个能够在特定距离内检测到具有相同应用程序的另一部iPhone的应用程序。我不想使用位置。这可能吗?

2 个答案:

答案 0 :(得分:3)

假设你正在寻找彼此非常接近的设备,通常是单个房间的顺序,如果你很幸运可能会更进一步(如果不是你的话,可能会少得多),你是什么重新寻找蓝牙LE(低能耗)。

  • 选择一个服务UUID(从命令行输入uuidgen;它会让你一个)
  • 使用CBPeripheralManager,宣传您的服务ID(请参阅startAdvertising
  • 使用CBCentralManager,搜索相同的服务ID(请参阅scanForPeripherals
  • 将自己注册为后台蓝牙应用,同时注册为bluetooth-centralbluetooth-periphral(有关详情,请参阅Core Bluetooth Background Execution Modes

通过此设置,您的应用将宣传您的服务,并且只要手机看到宣传该服务的内容,您的应用就会自动启动。

有关详细信息,请参阅Core Bluetooth Programming Guide。蓝牙开发有点挑剔,你经常需要处理很多小问题,但基础知识非常简单,特别是对于这种用例。

如果您只是想使用您的应用找到主动(在前台)的人并与他们沟通,请查看GameKit。它建立在Core Bluetooth之上,但为您完成了大量工作。它专门用于让人们一起玩游戏,但它可以做很多事情。

一个注意事项:不要将蓝牙与蓝牙LE混淆。它们完全不同,基本上是不相关的协议。蓝牙用于流媒体音乐之类的东西,而你在iOS中基本上根本无法访问它。 BLE用于与诸如心率监视器等的低功率外围设备交换小比特数据。核心蓝牙只处理BLE。

答案 1 :(得分:1)

你也可以使用iBeacons(在BLE之上的抽象)。 iBeacons比BLE更容易使用,与Core Bluetooth一样,您可以设置信标区域监控,这样,如果您正在收听的信标(或信标组)进入范围,您的应用就会启动。 (但信标监控使用位置管理器)