Show Menu
TEMAS×

Recibir notificaciones push enriquecidas

Puede adjuntar archivos de imagen a sus notificaciones de Apple. Agregar componentes visuales puede aumentar de forma significativa la interacción del usuario con las notificaciones push.
Para recibir notificaciones push enriquecidas en su aplicación iOS:
  1. Implemente la mensajería push para la aplicación completando los pasos indicados en Mensajería push .
  2. Compruebe que puede enviar un mensaje push de texto a la aplicación.
  3. Agregue una extensión del servicio de notificaciones completando los siguientes pasos:
    1. En el proyecto Xcode, seleccione Archivo > Nuevo > Target .
    2. Seleccione Extensión del servicio de notificaciones .
    3. Compruebe que el archivo NotificationService.m existe.
  4. 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 del 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 acerca de notificaciones push enriquecidas en iOS, consulte UNNotificationAttachment .