Skip to content

Instantly share code, notes, and snippets.

@kingbin
Forked from andybangs/GSEventEmitter.h
Created June 13, 2017 14:27
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save kingbin/1b8a02c9565621e4b535d31904e8067c to your computer and use it in GitHub Desktop.
Save kingbin/1b8a02c9565621e4b535d31904e8067c to your computer and use it in GitHub Desktop.
Example RCTEventEmitter Subclass
#import "RCTEventEmitter.h"
#import "RCTBridge.h"
@interface GSEventEmitter : RCTEventEmitter <RCTBridgeModule>
+ (BOOL)application:(UIApplication *)application didSightBeacon:(NSString *)beaconID;
+ (BOOL)application:(UIApplication *)application didDepartBeacon:(NSString *)beaconID;
@end
#import "GSEventEmitter.h"
// Notification/Event Names
NSString *const kBeaconSighted = @"GSEventEmitter/beaconSighted";
NSString *const kBeaconDeparted = @"GSEventEmitter/beaconDeparted";
@implementation GSEventEmitter
RCT_EXPORT_MODULE();
- (NSDictionary<NSString *, NSString *> *)constantsToExport {
return @{ @"BEACON_SIGHTED": kBeaconSighted,
@"BEACON_DEPARTED": kBeaconDeparted,
};
}
- (NSArray<NSString *> *)supportedEvents {
return @[kBeaconSighted,
kBeaconDeparted
];
}
- (void)startObserving {
for (NSString *event in [self supportedEvents]) {
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(handleNotification:)
name:event
object:nil];
}
}
- (void)stopObserving {
[[NSNotificationCenter defaultCenter] removeObserver:self];
}
# pragma mark Public
+ (BOOL)application:(UIApplication *)application didSightBeacon:(NSString *)beaconID {
[self postNotificationName:kBeaconSighted withPayload:beaconID];
return YES;
}
+ (BOOL)application:(UIApplication *)application didDepartBeacon:(NSString *)beaconID {
[self postNotificationName:kBeaconDeparted withPayload:beaconID];
return YES;
}
# pragma mark Private
+ (void)postNotificationName:(NSString *)name withPayload:(NSObject *)object {
NSDictionary<NSString *, id> *payload = @{@"payload": object};
[[NSNotificationCenter defaultCenter] postNotificationName:name
object:self
userInfo:payload];
}
- (void)handleNotification:(NSNotification *)notification {
[self sendEventWithName:notification.name body:notification.userInfo];
}
@end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment