我想构建和应用程序,可以在65英尺范围内使用我的应用程序检测其他iPhone。据我所知,我有以下选择:
使用蓝牙定期检查是否有我的应用程序在该范围内的设备。将找到的设备列表发送到服务器。这里的问题是电池消耗。是否真的会在一段时间后自动禁用蓝牙?
我可以将BLE技术用于此目的吗?如果是这样,你知道哪些设备支持BLE吗?
您认为最佳选择是什么?我错过了其他选择吗?
由于
更新 我计划每20秒或甚至更频繁地进行一次搜索。
答案 0 :(得分:8)
这个问题没有简单的答案。
蓝牙有两种口味:“常规”蓝牙,用于免提设备,耳机等,以及BLE(蓝牙低功耗)
必须配对常规蓝牙设备。 (我对常规蓝牙比BLE不太熟悉,所以请用一点点解释这个位。)为了配对,必须将它们置于“可发现”模式,广播它们的ID。这是一个电池耗尽,只是简单地完成。这不是一个“永远在线”的解决方案。
BLE的射程可达60米,因此它可以满足您的需求。
BLE设备可以长时间“宣传”为“外围设备”。其他蓝牙设备可以充当“中心”,并要求在检测到某些外围设备时得到通知。我不确定你是否可以将iOS设备广告(广播)作为BLE外设,而它在后台和/或设备被锁定,但它肯定会在它运行时做广告。我很确定你可以注册,当你从后台检测到某个BLE外设时会收到通知,但不是肯定的。
iBeacons是BLE的特定用途,具有一些额外的限制和一些额外的能力。 iBeacon是一个简单的发送器,它定期发送UUID加上主要和次要值以及信号强度校准值(通常每秒一次)。您不能将任何其他数据添加到iBeacon传输。当应用程序位于前台时,iOS只能充当iBeacon发射器。如果您的应用移动到后台,它将停止传输。期。
但是,您甚至可以从后台收听iBeacon信号。并且,如果您已注册为iBeacon的监听器并且系统因内存不足而终止您的应用程序,则系统仍会代表您监听这些信标。如果iOS检测到您正在侦听的信标,则会在需要时重新启动,并在后台通知。然后,您可以发布本地通知以引起用户的注意。
iBeacons可能是您最好的选择,但您需要用户在前台主动运行您的应用程序以传输信号。这将很快耗尽用户的电池。
答案 1 :(得分:1)
一种可能的解决方案是让每个设备每隔预定时间段将其位置发送到您的服务器(更频繁,更好但资源更密集)。然后,从服务器查询数据并获取您附近所有设备的位置。
请记住,这可能对实时数据收集不是很有用。例如,如果您想每30秒左右发送一次数据,这不是一个好的选择。
如果您想每15-20分钟左右获取一次数据,请使用此选项。