我正在使用 Swift 开发一个 iOS 应用程序来监控信标事件。这是我第一次真正的灯塔尝试。
我正在使用 Estimote 信标,但没有使用 Estimote SDK。我正在使用核心位置和带有 didExit 和 didEnter 事件的 CLLocationManager。
我只监听登录到我的应用程序的当前用户注册的信标。例如,John Doe 可以注册到信标 A 和 B,而 Mary Sue 只注册到信标 C。我遇到了很多错误的叶子,想知道是否是因为我在哪里实现我的代码。
我知道在验证离开事件时默认有 30 秒的延迟,但我遇到了超过 30 秒的时间段,没有来自空白范围的蓝牙信号。也许实现一个 30 分钟的窗口而不是 30 秒的休假验证?
由于用户必须登录才能知道要监控哪些信标,因此位置管理器驻留在用户的默认配置文件 View Controller 中。即使手机被锁定,我也成功获得了信标交互,但它并不一致。我很担心,因为我知道 View Controller 本身是由 iPhone 自行决定暂停/激活的,并且可能会暴露我的逻辑缺陷。
所有面向位置的代码都应该放在应用委托(delegate)文件中吗?如果我从我的配置文件 View 到应用程序委托(delegate)实现一个协议(protocol),我可以先在应用程序委托(delegate)中实例化它,然后在用户登录后检索信标数据。
在我的研究中,我一直在努力寻找“iOS 信标约定”,只是提供一些结果的示例。不太确定什么才是正确的做法。
谢谢!
最佳答案
如果进入事件很快发生,通常使用软件过滤器来忽略虚假区域退出事件。
为了使其独立于任何一个 ViewController,重要的是让 AppDelegate 触发逻辑。这里有两个选择:
将区域监控回调和过滤逻辑直接放在 AppDelegate 中。这适用于小型和简单的应用。
将回调和过滤逻辑放在自定义类中,并从 AppDelegate 的 didFinishLaunching 方法对其进行初始化。对于更大、更复杂的应用程序来说,这是保持 AppDelegate 简单干净的最佳方法.
无论哪种方式,从 didFinishLaunching 方法触发监控的开始是至关重要的。如果您的应用程序通过区域转换自动启动,这将确保正确的后台 CoreLocation 设置。
关于ios - iOS后台信标监控,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43971650/