Skip to content

Commit

Permalink
[NEW] #523
Browse files Browse the repository at this point in the history
  • Loading branch information
ckrey committed Apr 9, 2018
1 parent 5924e0e commit 55eb99b
Show file tree
Hide file tree
Showing 4 changed files with 22 additions and 3 deletions.
4 changes: 4 additions & 0 deletions OwnTracks/OwnTracks/LocationManager.h
Expand Up @@ -48,12 +48,16 @@ typedef NS_ENUM(NSInteger, LocationMonitoring) {
- (void)wakeup;
- (void)sleep;
- (void)stop;

- (void)startRegion:(CLRegion *)region;
- (void)stopRegion:(CLRegion *)region;
- (void)resetRegions;
@property (NS_NONATOMIC_IOSONLY, readonly) BOOL insideBeaconRegion;
- (BOOL)insideBeaconRegion:(NSString *)identifier;
@property (NS_NONATOMIC_IOSONLY, readonly) BOOL insideCircularRegion;
- (BOOL)insideCircularRegion:(NSString *)identifier;
@property (readonly, strong, nonatomic) NSMutableDictionary *insideBeaconRegions;
@property (readonly, strong, nonatomic) NSMutableDictionary *insideCircularRegions;

@end

6 changes: 4 additions & 2 deletions OwnTracks/OwnTracks/LocationManager.m
Expand Up @@ -465,13 +465,13 @@ - (void)locationManager:(CLLocationManager *)manager
switch (state) {
case CLRegionStateInside:
if (![circular containsCoordinate:manager.location.coordinate]) {
DDLogVerbose(@"[LocationManager] didDeterminState false positive!");
DDLogVerbose(@"[LocationManager] didDetermineState false positive!");
state = CLRegionStateOutside;
}
break;
case CLRegionStateOutside:
if ([circular containsCoordinate:manager.location.coordinate]) {
DDLogVerbose(@"[LocationManager] didDeterminState false negative!");
DDLogVerbose(@"[LocationManager] didDetermineState false negative!");
state = CLRegionStateInside;
}
break;
Expand All @@ -494,6 +494,7 @@ - (void)locationManager:(CLLocationManager *)manager
DDLogVerbose(@"[LocationManager] didEnterRegion %@", region);

if (![self removeHoldDown:region]) {
[self locationManager:manager didDetermineState:CLRegionStateInside forRegion:region];
[self.delegate regionEvent:region enter:YES];
}
}
Expand All @@ -506,6 +507,7 @@ - (void)locationManager:(CLLocationManager *)manager
[self removeHoldDown:region];
[self.pendingRegionEvents addObject:[PendingRegionEvent holdDown:region for:3.0 to:self]];
} else {
[self locationManager:manager didDetermineState:CLRegionStateOutside forRegion:region];
[self.delegate regionEvent:region enter:NO];
}
}
Expand Down
11 changes: 11 additions & 0 deletions OwnTracks/OwnTracks/OwnTracking.m
Expand Up @@ -420,6 +420,17 @@ - (NSDictionary *)waypointAsJSON:(Waypoint *)waypoint {
// [json setValue:@(batteryState) forKey:@"bs"];
//}

NSMutableArray <NSString *> *inRegions = [[NSMutableArray alloc] init];
for (Region *region in waypoint.belongsTo.hasRegions) {
if (region.share.boolValue) {
if ([LocationManager sharedInstance].insideCircularRegions[region.name] ||
[LocationManager sharedInstance].insideBeaconRegions[region.name]) {
[inRegions addObject:region.name];
}
}
}
json[@"inregions"] = inRegions;

return json;
}

Expand Down
4 changes: 3 additions & 1 deletion OwnTracks/OwnTracks/OwnTracksAppDelegate.m
Expand Up @@ -815,7 +815,9 @@ - (BOOL)handleMessage:(Connection *)connection data:(NSData *)data onTopic:(NSSt
to:[NSNumber saveCopy:dictionary[@"to"]]];

} else if ([@"waypoints" saveEqual:dictionary[@"action"]]) {
[self waypoints];
[self performSelectorOnMainThread:@selector(waypoints)
withObject:nil
waitUntilDone:NO];

} else if ([@"action" saveEqual:dictionary[@"action"]]) {
NSString *content = [NSString saveCopy:dictionary[@"content"]];
Expand Down

0 comments on commit 55eb99b

Please sign in to comment.