【问题标题】:iOS: detect app users nearbyiOS:检测附近的应用用户
【发布时间】:2014-02-14 19:11:38
【问题描述】:

我想构建一个可以在 65 英尺范围内使用我的应用检测其他 iPhone 的应用。据我了解,我有以下选择:

  1. 使用蓝牙定期检查范围内是否有装有我的应用程序的设备。将找到的设备列表发送到服务器。这里的问题是电池消耗。蓝牙是否会在一段时间后自动禁用?

  2. 我可以为此目的使用 BLE 技术吗?如果有,您知道哪些设备支持 BLE?

您认为最好的选择是什么?我错过了其他选择吗?

谢谢

更新 我计划每 20 秒或更频繁地运行一次搜索。

【问题讨论】:

  • 请注意,您所说的仅适用于查找附近实际在前台运行您的应用的设备,而不仅仅是查找其他设备。
  • @rmaddy,我知道。这正是我所需要的。

标签: ios iphone bluetooth geolocation bluetooth-lowenergy


【解决方案1】:

这个问题没有简单的答案。

蓝牙有 2 种风格:“常规”蓝牙,用于免提设备、耳机等,以及 BLE(低功耗蓝牙)

常规蓝牙设备必须配对。 (与BLE相比,我对常规蓝牙不太熟悉,所以我对这一点的解释持保留态度。)为了配对,他们必须进入“可发现”模式,广播他们的ID。这是一个电池耗尽,只是短暂地完成。这不是一个“永远在线”的解决方案。

BLE 的范围可达 60 米,因此它应该可以满足您在这方面的需求。

BLE 设备可以长时间“宣传”为“外围设备”。其他蓝牙设备可以充当“中心”,并在检测到某些外围设备时要求得到通知。我不确定您是否可以让 iOS 设备在后台和/或设备被锁定时作为 BLE 外围设备进行广告(广播),但它肯定会在运行时进行广告。我很确定您可以注册以在您从后台检测到某个 BLE 外围设备时收到通知,但不是肯定的。

iBeacons 是 BLE 的一种特殊用途,具有一些额外的限制和一些额外的能力。 iBeacon 是一个非常简单的发射器,它会定期(通常每秒一次)发送 UUID 加上主要和次要值以及信号强度校准值。您不能将任何其他数据添加到 iBeacon 传输中。 iOS 只能在应用程序处于前台时充当 iBeacon 发送器。如果您的应用程序移至后台,它将停止传输。时期。

不过,您甚至可以从后台收听 iBeacon 信号。并且,如果您已注册为 iBeacon 的侦听器,并且系统由于内存不足而终止了您的应用程序,则系统仍会代表您侦听这些信标。如果 iOS 检测到您正在监听的信标,您会在需要时重新启动,并在后台收到通知。然后,您可以发布本地通知以引起用户的注意。

iBeacons 可能是您最好的选择,但您需要您的用户在前台主动运行您的应用程序才能传输信号。这会很快耗尽用户的电池电量。

【讨论】:

  • 感谢您的精彩解释。但是想象一下,如果我所有的用户都会一直在监听 iBeacons(默认情况下)。一旦他们中的一个决定向其他人发送一些数据,他会将应用程序拉到前台并使其自身成为 iBeacon 发送器。那么其他人会被告知用户的外观吗?或者其他人应该监听特定的 iBeacon(即事先了解使用前台应用程序的用户)?
  • 你必须监听特定的信标。您可以侦听特定的 UUID 而不指定主要或次要值,并要求范围更新。当您从未检测到信标到检测到一个或多个信标时,您将收到几秒钟的测距呼叫,其中包含范围内所有信标的信息。如果您切换到前台,您可以继续测距并将获得有关所有信标的信息。您可以让每个用户使用不同的主要和次要值作为他们的用户 ID(2 个 16 位值,或大约 40 亿个唯一 ID
【解决方案2】:

一种可能的解决方案是让每台设备在每个预定时间段将其位置发送到您的服务器(越频繁越好,但更占用资源)。然后,从服务器查询数据并获取您附近所有设备的位置。

请记住,这对于实时数据收集可能不是很有用。例如,如果您想每 30 秒左右发送一次数据,这不是一个好的选择。

如果您希望每 15-20 分钟左右获取一次数据,请使用此选项。

【讨论】:

  • 您是否认为每 20 秒向服务器发送一次地理位置会比每 20 秒跟踪附近的 BLE 设备“便宜”?每隔 20 秒检查一次蓝牙设备怎么样?
  • 每 20 秒?不,不要向服务器发送数据。我不知道BLE或普通蓝牙的范围是否超过50英尺。
猜你喜欢
  • 2015-01-30
  • 1970-01-01
  • 1970-01-01
  • 2017-02-22
  • 1970-01-01
  • 1970-01-01
  • 2020-11-01
  • 1970-01-01
  • 2020-02-13
相关资源
最近更新 更多