0

我正在 swift 上开发一个 ibeacon 应用程序,我想记录每个客户/用户在信标范围内花费的分钟数。我真的很感激任何建议。

4

1 回答 1

1

通常,您希望将此信息记录到服务器,这样您就可以在一个地方查看来自不同用户的所有时间。这意味着每次信标出现或消失时都会调用 Web 服务。然后您可以在服务器上计算从信标出现到信标消失之间的时间。

典型的实现会将以下字段发送到服务器:

event ("appear" or "disappear")
uuid
major 
minor
device_id (you can generate a new unique identifier on app install)

您什么时候进行 Web 服务调用?有两个答案。一个简单的一个和一个复杂的:

复杂的答案

使这个答案复杂化的是,iOS 应用程序通常使用通配符来跟踪信标,该通配符CLBeaconRegion使某些标识符为零。在监视具有此类区域的信标时,您实际上并不知道哪些信标出现和消失 - 您只知道一组信标中的一个何时出现,以及同一组中的所有信标何时消失。

为了跟踪带有所有标识符的单个信标,您必须使用测距 API,它会在每秒钟更新一次信标可见。但是测距只能在前台工作(并且在该区域中的第一个信标出现或全部消失后在后台持续 5 秒),因此当您的应用程序进入后台时,它无法访问关于确切哪些信标是的细粒度信息可见的。

可以构建结合这两种技术(测距和监控)的逻辑,因此您可以使用测距来跟踪开始时间并使用监控来跟踪停止时间——但在您有许多信标的情况下,它只能让您大致了解每个单独的信标消失的时间。

简单的答案

如果您要跟踪的信标少于 20 个,那么这将变得更加简单,因为您可以CLBeaconRegion为每个信标定义一个,并分别监控它们。(iOS 只允许您CLBeaconRegion为每个应用程序定义 20 秒。)然后您可以简单地为每个应用程序发送出现/消失事件到您的服务器。使用这种技术,您可以将 Web 服务调用放入didEnterRegiondidExitRegion回调中。

于 2015-10-08T20:40:48.407 回答