mirror of
https://github.com/zhigang1992/react-native-notifications.git
synced 2026-06-10 15:58:51 +08:00
37 lines
1.7 KiB
Objective-C
37 lines
1.7 KiB
Objective-C
#import "RNNotificationEventHandler.h"
|
|
#import "RNEventEmitter.h"
|
|
#import "RNNotificationUtils.h"
|
|
#import "RCTConvert+RNNotifications.h"
|
|
#import "RNNotificationParser.h"
|
|
|
|
@implementation RNNotificationEventHandler {
|
|
RNNotificationsStore* _store;
|
|
}
|
|
|
|
- (instancetype)initWithStore:(RNNotificationsStore *)store {
|
|
self = [super init];
|
|
_store = store;
|
|
return self;
|
|
}
|
|
|
|
- (void)didRegisterForRemoteNotificationsWithDeviceToken:(id)deviceToken {
|
|
NSString *tokenRepresentation = [deviceToken isKindOfClass:[NSString class]] ? deviceToken : [RNNotificationUtils deviceTokenToString:deviceToken];
|
|
[RNEventEmitter sendEvent:RNRegistered body:@{@"deviceToken": tokenRepresentation}];
|
|
}
|
|
|
|
- (void)didFailToRegisterForRemoteNotificationsWithError:(NSError *)error {
|
|
[RNEventEmitter sendEvent:RNRegistrationFailed body:@{@"code": [NSNumber numberWithInteger:error.code], @"domain": error.domain, @"localizedDescription": error.localizedDescription}];
|
|
}
|
|
|
|
- (void)didReceiveForegroundNotification:(UNNotification *)notification withCompletionHandler:(void (^)(UNNotificationPresentationOptions))completionHandler {
|
|
[_store setPresentationCompletionHandler:completionHandler withCompletionKey:notification.request.identifier];
|
|
[RNEventEmitter sendEvent:RNNotificationReceivedForeground body:[RNNotificationParser parseNotification:notification]];
|
|
}
|
|
|
|
- (void)didReceiveNotificationResponse:(UNNotificationResponse *)response completionHandler:(void (^)(void))completionHandler {
|
|
[_store setActionCompletionHandler:completionHandler withCompletionKey:response.notification.request.identifier];
|
|
[RNEventEmitter sendEvent:RNNotificationOpened body:[RNNotificationParser parseNotificationResponse:response]];
|
|
}
|
|
|
|
@end
|