mirror of
https://github.com/zhigang1992/react-native-notifications.git
synced 2026-06-13 17:45:45 +08:00
45 lines
2.0 KiB
Objective-C
45 lines
2.0 KiB
Objective-C
#import "RNNotificationEventHandler.h"
|
|
#import "RNNotificationsBridgeQueue.h"
|
|
#import "RNEventEmitter.h"
|
|
|
|
@implementation RNNotificationEventHandler
|
|
|
|
- (void)didReceiveForegroundPayload:(NSDictionary *)payload {
|
|
// if ([RNNotificationsBridgeQueue sharedInstance].jsIsReady == YES) {
|
|
[RNEventEmitter sendEvent:NotificationReceivedForeground body:payload];
|
|
// }
|
|
}
|
|
|
|
- (void)didOpenNotificationPayload:(NSDictionary *)payload {
|
|
// if ([RNNotificationsBridgeQueue sharedInstance].jsIsReady == YES) {
|
|
[RNEventEmitter sendEvent:NotificationOpened body:payload];
|
|
// }
|
|
}
|
|
|
|
- (void)handleActionWithIdentifier:(NSString *)identifier forPayload:(NSDictionary *)payload withResponse:(NSString *)response completionHandler:(void (^)())completionHandler {
|
|
[self emitNotificationActionForIdentifier:identifier response:response userInfo:payload completionHandler:completionHandler];
|
|
}
|
|
|
|
- (void)emitNotificationActionForIdentifier:(NSString *)identifier response:(NSString *)response userInfo:(NSDictionary *)userInfo completionHandler:(void (^)())completionHandler {
|
|
NSString* completionKey = [NSString stringWithFormat:@"%@.%@", identifier, [NSString stringWithFormat:@"%ldd", (long)[[NSDate date] timeIntervalSince1970]]];
|
|
NSMutableDictionary* info = [[NSMutableDictionary alloc] initWithDictionary:@{ @"identifier": identifier, @"completionKey": completionKey }];
|
|
|
|
if (response != NULL) {
|
|
info[@"text"] = response;
|
|
}
|
|
|
|
// add notification custom data
|
|
if (userInfo != NULL) {
|
|
info[@"notification"] = userInfo;
|
|
}
|
|
|
|
// Emit event to the queue (in order to store the completion handler). if JS thread is ready, post it also to the notification center (to the bridge).
|
|
[[RNNotificationsBridgeQueue sharedInstance] postAction:info withCompletionKey:completionKey andCompletionHandler:completionHandler];
|
|
|
|
// if ([RNNotificationsBridgeQueue sharedInstance].jsIsReady == YES) {
|
|
[RNEventEmitter sendEvent:NotificationActionReceived body:userInfo];
|
|
// }
|
|
}
|
|
|
|
@end
|