// // NotificationService.m // JuickPush // // Created by Vitaly Takmazov on 18/10/2018. // Copyright © 2018 com.juick. All rights reserved. // #import "NotificationService.h" @interface NotificationService () @property (nonatomic, strong) void (^contentHandler)(UNNotificationContent *contentToDeliver); @property (nonatomic, strong) UNMutableNotificationContent *bestAttemptContent; @end @implementation NotificationService - (void)didReceiveNotificationRequest:(UNNotificationRequest *)request withContentHandler:(void (^)(UNNotificationContent * _Nonnull))contentHandler { self.contentHandler = contentHandler; self.bestAttemptContent = [request.content mutableCopy]; NSURL *avatarURL = [NSURL URLWithString:request.content.userInfo[@"avatarUrl"]]; NSURLSession* downloadSession = [NSURLSession sharedSession]; [[downloadSession downloadTaskWithURL:avatarURL completionHandler:^(NSURL * _Nullable location, NSURLResponse * _Nullable response, NSError * _Nullable error) { if (!error) { NSError *err = nil; NSString *temporaryDirectory = [NSTemporaryDirectory() stringByAppendingPathComponent:[response suggestedFilename]]; [[NSFileManager defaultManager] moveItemAtPath:location.path toPath:temporaryDirectory error:&err]; UNNotificationAttachment *avatarAttachment = [UNNotificationAttachment attachmentWithIdentifier:avatarURL.lastPathComponent URL:[NSURL fileURLWithPath:temporaryDirectory] options:nil error:&err]; self.bestAttemptContent.attachments = @[avatarAttachment]; self.contentHandler(self.bestAttemptContent); } }] resume]; } - (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. self.contentHandler(self.bestAttemptContent); } @end