Created
September 27, 2021 16:06
-
-
Save tomavic/159f9cc3dc761f5a440921e9a60b25a4 to your computer and use it in GitHub Desktop.
OneSignalNotificationServiceExtension
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#import <OneSignal/OneSignal.h> | |
#import "NotificationService.h" | |
@interface NotificationService () | |
@property (nonatomic, strong) void (^contentHandler)(UNNotificationContent *contentToDeliver); | |
@property (nonatomic, strong) UNNotificationRequest *receivedRequest; | |
@property (nonatomic, strong) UNMutableNotificationContent *bestAttemptContent; | |
@end | |
@implementation NotificationService | |
- (void)didReceiveNotificationRequest:(UNNotificationRequest *)request withContentHandler:(void (^)(UNNotificationContent * _Nonnull))contentHandler { | |
self.receivedRequest = request; | |
self.contentHandler = contentHandler; | |
self.bestAttemptContent = [request.content mutableCopy]; | |
[OneSignal didReceiveNotificationExtensionRequest:self.receivedRequest withMutableNotificationContent:self.bestAttemptContent]; | |
// DEBUGGING: Uncomment the 2 lines below and comment out the one above to ensure this extension is excuting | |
// Note, this extension only runs when mutable-content is set | |
// Setting an attachment or action buttons automatically adds this | |
// NSLog(@"Running NotificationServiceExtension"); | |
// self.bestAttemptContent.body = [@"[Modified] " stringByAppendingString:self.bestAttemptContent.body]; | |
// Uncomment this line to set the default log level of NSE to VERBOSE so we get all logs from NSE logic | |
//[OneSignal setLogLevel:ONE_S_LL_VERBOSE visualLevel:ONE_S_LL_NONE]; | |
self.contentHandler(self.bestAttemptContent); | |
} | |
- (void)serviceExtensionTimeWillExpire { | |
// Called just before the extension will be terminated by the system. | |
// Use this as an opportunity to deliver your "best attempt" at modified content, otherwise the original push payload will be used. | |
[OneSignal serviceExtensionTimeWillExpireRequest:self.receivedRequest withMutableNotificationContent:self.bestAttemptContent]; | |
self.contentHandler(self.bestAttemptContent); | |
} | |
@end |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment