QKGeofenceManager 1.2.4

QKGeofenceManager 1.2.4

测试已测试
Lang语言 Obj-CObjective C
许可证 MIT
发布最新发布2014年12月

Eric Webster 维护。



  • Eric Webster

旨在通过将区域限制从20个增加到(理论上)无限来改进 CoreLocation 的区域监控。它还通过处理一些样板式的错误处理,使区域监控体验更加流畅。

使用方法

QKGeofenceManager 的接口如下

@interface QKGeofenceManager : NSObject<CLLocationManagerDelegate>

@property (nonatomic, weak) id<QKGeofenceManagerDelegate> delegate;
@property (nonatomic, weak) id<QKGeofenceManagerDataSource> dataSource;
@property (nonatomic, readonly) QKGeofenceManagerState state;

+ (instancetype)sharedGeofenceManager;

- (void)reloadGeofences;

@end

它使用dataSource/delegate模式提供CLCircularRegion数组

@protocol QKGeofenceManagerDataSource <NSObject>

@required
- (NSArray *)geofencesForGeofenceManager:(QKGeofenceManager *)geofenceManager;

@end

以及发送内部/退出事件。

@protocol QKGeofenceManagerDelegate <NSObject>

@optional
- (void)geofenceManager:(QKGeofenceManager *)geofenceManager isInsideGeofence:(CLRegion *)geofence;
- (void)geofenceManager:(QKGeofenceManager *)geofenceManager didExitGeofence:(CLRegion *)geofence;
- (void)geofenceManager:(QKGeofenceManager *)geofenceManager didChangeState:(QKGeofenceManagerState)state;
- (void)geofenceManager:(QKGeofenceManager *)geofenceManager didFailWithError:(NSError *)error;

@end

当用户进入或当前位于地理围栏内时,QKGeofenceManager 调用 geofenceManager:isInsideGeofence:。当管理者从以下三种状态之一变化时调用 geofenceManager:didChangeState:QKGeofenceManagerStateIdleQKGeofenceManagerStateProcessingQKGeofenceManagerStateFailed

示例

提供的示例允许用户添加地理围栏并在表格视图中显示它们。当按下刷新按钮时,QKGeofenceManager 做其神奇的事情,并确定用户位于哪些地理围栏内。进入和离开地理围栏将相应更新表格视图。

您还可以通过在表格视图中选择它并在地图上拖动标记来编辑地理围栏(默认位于当前位置)。