Puede adjuntar archivos de imagen a las notificaciones de Apple. La adición de componentes visuales puede aumentar significativamente la participación de los usuarios con las notificaciones push.
Para recibir notificaciones push enriquecidas en su aplicación iOS:
Implemente la mensajería push para la aplicación completando los pasos indicados en Mensajería push.
Compruebe que puede enviar un mensaje push de texto a la aplicación.
Añada una extensión del servicio de notificaciones completando los siguientes pasos:
NotificationService.m
existe.Abra el archivo NotificationService.m
y compruebe que existen los siguientes métodos delegados:
Un método para recibir una solicitud de notificación.
Un método para gestionar la caducidad de la extensión de servicio.
Para recibir notificaciones push enriquecidas, se utiliza el primer método :
(void)didReceiveNotificationRequest:(UNNotificationRequest *)request withContentHandler:(void (^)(UNNotificationContent *contentToDeliver))contentHandler;
Con este método, puede usar la URL de medios desde userInfo
con la clave attachment-url
. Después de descargar el archivo en un directorio local, agregue la ruta local a bestAttemptContent.attachments
.
Este es un ejemplo de código para este método:
- (void)didReceiveNotificationRequest:(UNNotificationRequest *)request withContentHandler:(void (^)(UNNotificationContent * _Nonnull))contentHandler {
self.contentHandler = contentHandler;
self.bestAttemptContent = [request.content mutableCopy];
NSDictionary* userInfo = request.content.userInfo;
if(userInfo[@"attachment-url"]){
NSURL* url = [[NSURL alloc] initWithString:userInfo[@"attachment-url"]];
NSURLSessionDownloadTask* task = [[NSURLSession sharedSession] downloadTaskWithURL:url completionHandler:^(NSURL * _Nullable location, NSURLResponse * _Nullable response, NSError * _Nullable error) {
if(!location){
return;
}
NSString* tmpDirectory = NSTemporaryDirectory();
NSString* tmpFilePath = [NSString stringWithFormat:@"file://%@%d%d%@", tmpDirectory, arc4random_uniform(100000),
arc4random_uniform(100000), [url lastPathComponent]];
NSURL* tmpUrl = [[NSURL alloc] initWithString:tmpFilePath];
NSError * fileError = nil;
[[NSFileManager defaultManager] moveItemAtURL:location toURL:tmpUrl error:&fileError];
if(fileError){
return;
}
UNNotificationAttachment* attachment = [UNNotificationAttachment attachmentWithIdentifier:@"video" URL:tmpUrl options:nil error:&fileError];
if(fileError){
return;
}
self.bestAttemptContent.attachments = @[attachment];
self.contentHandler(self.bestAttemptContent);
}];
[task resume];
}
}
Para obtener más información sobre las notificaciones push enriquecidas con iOS, consulte UNNotificationAttachment.