将 iBeacon 监控逻辑放在应用程序委托中以便在应用程序会话期间存活是否明智?
Would it be wise to put iBeacon monitoring logic in the app delegate in order to live for the duration of the app session?
我想让我的应用程序监控 iBeacons,而不依赖于显示的某个视图控制器。为了避免重复代码,是否应该将iBeacon监控逻辑放在app delegate中?基本上,我希望该应用程序在用户进入某个区域时显示本地推送通知,同时仍然能够在不同屏幕上浏览该应用程序。
您实际上不必将逻辑放入 AppDelegate(尽管对于简单的应用程序我经常这样做)。要让您的应用程序在后台启动,您需要做的关键是 触发逻辑以从 AppDelegate 的 didFinishLaunching 方法开始监控。 只要方法调用设置监控(甚至如果它通过调用
另一个方法中的逻辑 class)。它将导致您的监控回调方法在之后立即被调用。
只要您在 AppDelegate 中持有对 class 逻辑的引用(例如,使其实例成为 AppDelegate 中的 class 变量),它就不会被垃圾收集。
如果您希望在应用的其他部分访问此 class 的状态,只需将其设为单例即可。然后你可以调用同一个 class 实例来从各种视图控制器访问你的信标跟踪状态。
您可以在 BeaconTracker class 我为一个完全使用这种单例方法的开源项目构建的项目中看到这方面的示例。你可以在同一个项目中浏览AppDelegate和View控制器,看看它是如何使用的。
我想让我的应用程序监控 iBeacons,而不依赖于显示的某个视图控制器。为了避免重复代码,是否应该将iBeacon监控逻辑放在app delegate中?基本上,我希望该应用程序在用户进入某个区域时显示本地推送通知,同时仍然能够在不同屏幕上浏览该应用程序。
您实际上不必将逻辑放入 AppDelegate(尽管对于简单的应用程序我经常这样做)。要让您的应用程序在后台启动,您需要做的关键是 触发逻辑以从 AppDelegate 的 didFinishLaunching 方法开始监控。 只要方法调用设置监控(甚至如果它通过调用 另一个方法中的逻辑 class)。它将导致您的监控回调方法在之后立即被调用。
只要您在 AppDelegate 中持有对 class 逻辑的引用(例如,使其实例成为 AppDelegate 中的 class 变量),它就不会被垃圾收集。
如果您希望在应用的其他部分访问此 class 的状态,只需将其设为单例即可。然后你可以调用同一个 class 实例来从各种视图控制器访问你的信标跟踪状态。
您可以在 BeaconTracker class 我为一个完全使用这种单例方法的开源项目构建的项目中看到这方面的示例。你可以在同一个项目中浏览AppDelegate和View控制器,看看它是如何使用的。