@@ -25,8 +25,6 @@ @implementation RNiBeacon
2525
2626RCT_EXPORT_MODULE ()
2727
28- @synthesize bridge = _bridge;
29-
3028#pragma mark Initialization
3129
3230- (instancetype )init
@@ -42,6 +40,17 @@ - (instancetype)init
4240 return self;
4341}
4442
43+ - (NSArray <NSString *> *)supportedEvents
44+ {
45+ return @[
46+ @" authorizationStatusDidChange" ,
47+ @" beaconsDidRange" ,
48+ @" regionDidEnter" ,
49+ @" regionDidExit" ,
50+ @" didDetermineState"
51+ ];
52+ }
53+
4554#pragma mark
4655
4756-(CLBeaconRegion *) createBeaconRegion : (NSString *) identifier
@@ -207,8 +216,8 @@ -(NSString *)nameForAuthorizationStatus:(CLAuthorizationStatus)authorizationStat
207216
208217-(void )locationManager : (CLLocationManager *)manager didChangeAuthorizationStatus : (CLAuthorizationStatus)status
209218{
210- NSString *statusName = [self nameForAuthorizationStatus: status];
211- [self .bridge.eventDispatcher sendDeviceEventWithName :@" authorizationStatusDidChange" body: statusName];
219+ NSString *statusName = [self nameForAuthorizationStatus: status];
220+ [self sendEventWithName :@" authorizationStatusDidChange" body: statusName];
212221}
213222
214223-(void )locationManager : (CLLocationManager *)manager rangingBeaconsDidFailForRegion : (CLBeaconRegion *)region withError : (NSError *)error
@@ -224,6 +233,25 @@ -(void)locationManager:(CLLocationManager *)manager didFailWithError:(NSError *)
224233 NSLog (@" Location manager failed: %@ " , error);
225234}
226235
236+ -(NSString *)stringForState : (CLRegionState)state {
237+ switch (state) {
238+ case CLRegionStateInside: return @" inside" ;
239+ case CLRegionStateOutside: return @" outside" ;
240+ case CLRegionStateUnknown: return @" unknown" ;
241+ default : return @" unknown" ;
242+ }
243+ }
244+
245+ - (void ) locationManager : (CLLocationManager *)manager didDetermineState : (CLRegionState)state forRegion : (CLRegion *)region
246+ {
247+ NSDictionary *event = @{
248+ @" state" : [self stringForState: state],
249+ @" identifier" : region.identifier ,
250+ };
251+
252+ [self sendEventWithName: @" didDetermineState" body: event];
253+ }
254+
227255-(void ) locationManager : (CLLocationManager *)manager didRangeBeacons :
228256(NSArray *)beacons inRegion : (CLBeaconRegion *)region
229257{
@@ -252,7 +280,7 @@ -(void) locationManager:(CLLocationManager *)manager didRangeBeacons:
252280 @" beacons" : beaconArray
253281 };
254282
255- [self .bridge.eventDispatcher sendDeviceEventWithName :@" beaconsDidRange" body: event];
283+ [self sendEventWithName :@" beaconsDidRange" body: event];
256284}
257285
258286-(void )locationManager : (CLLocationManager *)manager
@@ -262,7 +290,7 @@ -(void)locationManager:(CLLocationManager *)manager
262290 @" uuid" : [region.proximityUUID UUIDString ],
263291 };
264292
265- [self .bridge.eventDispatcher sendDeviceEventWithName :@" regionDidEnter" body: event];
293+ [self sendEventWithName :@" regionDidEnter" body: event];
266294}
267295
268296-(void )locationManager : (CLLocationManager *)manager
@@ -272,7 +300,7 @@ -(void)locationManager:(CLLocationManager *)manager
272300 @" uuid" : [region.proximityUUID UUIDString ],
273301 };
274302
275- [self .bridge.eventDispatcher sendDeviceEventWithName :@" regionDidExit" body: event];
303+ [self sendEventWithName :@" regionDidExit" body: event];
276304}
277305
278306
0 commit comments