iOS:检测附近的应用程序用户

iOS:检测附近的应用程序用户,ios,iphone,bluetooth,geolocation,bluetooth-lowenergy,Ios,Iphone,Bluetooth,Geolocation,Bluetooth Lowenergy,我想建立和应用程序,可以检测到其他iPhone与我的应用程序在65英尺范围内。据我所知,我有以下选择: 使用蓝牙定期检查范围内是否有带有我的应用程序的设备。将找到的设备列表发送到服务器。这里的问题是电池消耗。蓝牙是否会在一段时间后自动禁用 我可以为此使用BLE技术吗?如果是,您知道哪些设备支持BLE吗 你认为最好的选择是什么?我是否错过了其他选择 谢谢 更新 我计划每20秒甚至更频繁地运行一次搜索。一种可能的解决方案是让每台设备每隔预定的时间段将其位置发送到服务器(频率越高越好,但资源越密集)。

我想建立和应用程序,可以检测到其他iPhone与我的应用程序在65英尺范围内。据我所知,我有以下选择:

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

  • 我可以为此使用BLE技术吗?如果是,您知道哪些设备支持BLE吗

  • 你认为最好的选择是什么?我是否错过了其他选择

    谢谢

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

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

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


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

    这个问题没有简单的答案

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

    常规蓝牙设备必须配对。(我对常规蓝牙的熟悉程度不如BLE,所以我对这一点的解释有点保留。)为了配对,它们必须进入“可发现”模式,即广播它们的ID。这是一种电池耗尽,并且只进行了短暂的操作。这不是一个“总是开”的解决方案

    BLE的射程可达60米,因此它应该能够满足您在这方面的需求

    BLE设备可以作为“外设”长期“宣传”。其他蓝牙设备可以充当“中心”,并在检测到某些外围设备时请求得到通知。我不确定当iOS设备在后台和/或设备被锁定时,是否可以将其作为可扩展外围设备进行播发(广播),但它肯定会在运行时进行播发。我敢肯定,当你从后台检测到某个可编程外围设备时,你可以注册得到通知,但不是肯定的

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

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


    iBeacons可能是您的最佳选择,但您需要您的用户在前台积极运行您的应用程序,以便传输信号。这会很快耗尽用户的电池。

    您认为每20秒向服务器发送一次地理定位比每20秒跟踪附近的可移动设备“便宜”吗?每20秒检查一次蓝牙设备怎么样?每20秒?不,不要向服务器发送数据。我不知道BLE或普通蓝牙的范围是否超过50英尺。请注意,您所说的仅适用于在前台查找实际运行您的应用程序的附近设备,而不只是查找其他设备。@rmaddy,我知道。这正是我需要的。谢谢你的解释。但是想象一下,如果我的所有用户都一直在监听iBeacons(默认情况下)。一旦其中一个决定向其他人发送一些数据,他将把应用程序拉到前台,使自己成为iBeacon发射机。其他人会被告知用户的外观吗?或者其他人应该监听某个特定的iBeacon(即事先了解前台应用程序的用户)?您必须监听特定的信标。您可以侦听特定的UUID,而不指定主要值或次要值,并请求范围更新。当你从检测不到信标到检测一个或多个信标时,你将得到几秒钟的测距呼叫,其中包含范围内所有信标的信息。如果你切换到前景,你可以继续测距,并将获得有关所有信标的信息。您可以让每个用户使用不同的主值和次值作为其用户ID(2个16位值,或大约40亿个唯一ID)