您当前的位置: 鹰眼iOS SDK > > 缓存轨迹的处理
缓存轨迹的处理

简介

鹰眼iOS SDK在网络不畅时,将采集到的轨迹持久化在客户端本地,称为轨迹缓存。在网络畅通的情况下,SDK基本不会存在轨迹数据的缓存。开发者可以查询SDK缓存的轨迹数据所属的终端实体名称、时间段、数量等信息,但无法获取具体的位置信息。也可以清空指定entity在指定时间段内的轨迹缓存。轨迹缓存清除之后,将不再上传至鹰眼服务端,且无法还原,清空之前,请谨慎确认对应的终端实体名称和时间段无误。

鹰眼iOS SDK提供了对缓存轨迹信息的查询和删除操作。


通过 BTKTrackAction 类中的 -(void)queryTrackCacheInfoWith:(BTKQueryTrackCacheInfoRequest *)request delegate:(id<BTKTrackDelegate>)delegate; 方法,查询客户端缓存的轨迹数据所属的终端实体名称、时间段、数量等信息。


通过 BTKTrackAction 类中的 -(void)clearTrackCacheWith:(BTKClearTrackCacheRequest *)request delegate:(id<BTKTrackDelegate>)delegate; 方法,清空满足指定条件的轨迹缓存数据。

查询缓存信息

通过 -(void)queryTrackCacheInfoWith:(BTKQueryTrackCacheInfoRequest *)request delegate:(id<BTKTrackDelegate>)delegate; 方法,查询客户端缓存轨迹数据所属的终端实体名称、时间段、数量等信息;

以下代码片段表示,查询缓存在本机上的所有entity的时间段和轨迹点数量信息。

// 构造请求对象
BTKQueryTrackCacheInfoRequest *request = [[BTKQueryTrackCacheInfoRequest alloc] initWithEntityNames:nil serviceID:100000 tag:333];
// 发起请求
[[BTKTrackAction sharedInstance] queryTrackCacheInfoWith:request delegate:self];

清空缓存信息

通过 -(void)clearTrackCacheWith:(BTKClearTrackCacheRequest *)request delegate:(id<BTKTrackDelegate>)delegate; 方法,清空客户端缓存的轨迹信息。

以下代码片段表示,清空缓存在本机上,属于 “entityA” 的前天的轨迹,以及属于 “entityB” 的昨天的轨迹。

NSUInteger now = [[NSDate date] timeIntervalSince1970];
// 设置entityA名下,要清空的轨迹缓存的起止时间
BTKClearTrackCacheOption *op1 = [[BTKClearTrackCacheOption alloc] initWithEntityName:@"entityA" startTime:(now - 84400 * 3) endTime:(now - 84400 * 2)];
// 设置entityA名下,要清空的轨迹缓存的起止时间
BTKClearTrackCacheOption *op2 = [[BTKClearTrackCacheOption alloc] initWithEntityName:@"entityB" startTime:(now - 84400 * 2) endTime:(now - 84400)];
// 设置清空的条件
NSMutableArray *options = [NSMutableArray arrayWithCapacity:2];
[options addObject:op1];
[options addObject:op2];
// 构造请求对象
BTKClearTrackCacheRequest *request = [[BTKClearTrackCacheRequest alloc] initWithOptions:options serviceID:100000 tag:33];
// 发起请求
[[BTKTrackAction sharedInstance] clearTrackCacheWith:request delegate:self];