我正在开发一个关于swift的ibeacon应用程序,我想记录每个客户端/用户在信标范围内花费的分钟数。 我真的很感激任何建议。
答案 0 :(得分:1)
通常,您希望将此信息记录到服务器,以便您可以一次性查看来自不同用户的所有时间。这意味着每次信标出现或消失时都要进行Web服务调用。然后你可以在服务器上计算信标出现和信标消失之间的时间。
典型的实现会将以下字段发送到服务器:
event ("appear" or "disappear")
uuid
major
minor
device_id (you can generate a new unique identifier on app install)
您何时拨打网络服务电话?有两个答案。一个简单的和复杂的:
复杂答案
这个答案的复杂之处在于iOS应用程序通常使用通配符CLBeaconRegion
来跟踪信标,这使得一些标识符为零。当监视具有这样一个区域的信标时,你实际上并不知道哪个信标出现和消失 - 你只知道一组信标中的一个出现时,以及当同一组中的所有信标都消失时。
为了使用所有标识符跟踪各个信标,您必须使用测距API,每隔一段时间就会显示一个信标可见的更新。但是测距仅适用于前景(并且在该区域中的第一个信标出现或者全部消失后在背景中持续5秒),因此当您的应用程序进入后台时,它将无法访问有关确切哪些信标的细粒度信息可见。
可以构建结合了两种技术(测距和监控)的逻辑,因此您可以使用测距来跟踪开始时间和监控以跟踪停止时间 - 但是如果您有许多信标,它只会给您一个粗略的每个灯塔消失的时间的想法。
简单回答
如果您要跟踪的信标少于20个,那么这会变得更加简单,因为您可以为每个信标定义一个CLBeaconRegion
,并分别监控它们。 (iOS只允许您为每个应用定义20 CLBeaconRegion
个。)然后,您只需将显示/消失事件发送到您的服务器。使用此技术,您可以将您的网络服务调用放在didEnterRegion
和didExitRegion
回调中。