后台 iOS 中的信标监控.



我正在 Swift 中开发一个监控信标事件的 iOS 应用程序。这是我第一次真正的灯塔努力.

我正在使用Estimote信标,但没有使用Estimote SDK。我正在使用核心位置和带有didExit和didEnter事件的CLLocationManager。

我只侦听在登录到我的应用程序的当前用户处注册的信标。例如, 约翰·多伊可以在信标 A 和 B 注册, 而玛丽苏只注册到信标 C.我正在经历很多错误的叶子,想知道这是否是因为我在实现代码的地方。

我知道在验证离开事件时默认有 30 秒的延迟,但我遇到了超过 30 秒的时间,没有来自空白点范围的蓝牙信号。也许实施 30 分钟的窗口而不是 30 秒的休假验证?

由于用户必须登录才能知道要监视哪些信标, 位置管理器驻留在用户的默认配置文件视图控制器中.即使手机被锁定,我也成功地获得了信标交互, 但它不一致.我很担心,因为我知道视图控制器本身是由iPhone自行决定暂停/激活的,并且可能会暴露我的逻辑中的缺陷。

是否应将所有面向位置的代码都放在应用委托文件中?如果我实现从配置文件视图到应用委托的协议,我可以先在应用委托中实例化它,然后在用户登录后检索信标数据。

我一直在努力在我的研究中找到"iOS 信标约定", 只是提供一些结果的示例.不太确定什么实际上被认为是正确的做法。

谢谢!

如果不久之后发生进入事件,通常会使用软件过滤器忽略虚假区域退出事件。

要使其独立于任何一个 ViewController,请务必让逻辑由 AppDelegate 触发。 这里有两个选择:

  • 将区域监控回调和筛选逻辑直接放在 AppDelegate 中。 这适用于小型和简单的应用。

  • 将回调和筛选逻辑放在自定义类中,并从 AppDelegate 的 didFinishLaunch 方法对其进行初始化。对于更大和更复杂的应用程序,这是保持应用程序委派简单和干净的最佳方法。

无论哪种方式,从didFinishLaunch方法触发监视的启动都是至关重要的。这可确保在应用通过区域转换自动启动时进行正确的后台 CoreLocation 设置。