# Integración de notificaciones enriquecidas en iOS

A partir de iOS 10, puedes adjuntar una imagen estática o animada, o incluso un video, a las notificaciones push. Se mostrará directamente en la notificación cuando el usuario la presione con fuerza (force-tap).

Habilitar esta funcionalidad es muy sencillo y requiere muy poca codificación. ¡Vamos a ello!

## 1. Crear una Extensión de Servicio de Notificaciones

Primero, crea una [Extensión de Servicio de Notificaciones (Notification Service Extension)](https://developer.apple.com/reference/usernotifications/unnotificationserviceextension). Esta extensión descarga el contenido que se mostrará al usuario.

Añade un nuevo *target* a tu proyecto (File -> New -> Target) y crea una _Notification Service Extension_.

<img src="/ios-rich-notification-1.webp" alt="Creando una Extensión de Servicio de Notificaciones"/>

<Aside type="caution">
 ¡La Extensión de Servicio de Notificaciones tiene un Apple App ID y un Perfil de Aprovisionamiento (Provisioning profile) separados!

Ten en cuenta que la extensión de notificación tiene su propio Bundle ID (por ejemplo: `com.pushwoosh.example.NotificationService`), así como su propio **Apple App ID** y **Perfil de Aprovisionamiento (Provisioning profile)**, que deben configurarse por separado en el Portal de Desarrolladores de Apple.
</Aside>

## 2. Código de la Extensión de Servicio de Notificaciones

El código descarga el archivo adjunto y llama al manejador de contenido de la notificación.
Simplemente cópialo y pégalo en tu extensión.

<Tabs syncKey="code-example">
<TabItem label="Swift">
```swift
import UserNotifications
import PushwooshFramework

class NotificationService: UNNotificationServiceExtension {

    var contentHandler: ((UNNotificationContent) -> Void)?
    var bestAttemptContent: UNMutableNotificationContent?

    override func didReceive(_ request: UNNotificationRequest, withContentHandler contentHandler: @escaping (UNNotificationContent) -> Void) {
        PWNotificationExtensionManager.shared().handle(request, contentHandler: contentHandler)
    }
}
```
</TabItem>

<TabItem label="Objective-C">
```objective-c
#import "PWNotificationExtensionManager.h"

@interface NotificationService : UNNotificationServiceExtension

@end

@implementation NotificationService

- (void)didReceiveNotificationRequest:(UNNotificationRequest *)request withContentHandler:(void (^)(UNNotificationContent * _Nonnull))contentHandler {
    [[PWNotificationExtensionManager sharedManager] handleNotificationRequest:request contentHandler:contentHandler];
}

@end
```
</TabItem>
</Tabs>

## 3. Permitir URLs de adjuntos no seguras

La Extensión de Servicio de Notificaciones es un binario separado y **tiene su propio archivo Info.plist**.
Añade **App Transport Security Settings** con la bandera **Allow Arbitrary Loads** establecida en `true` al archivo **Info.plist de la extensión**.

**Info.plist**:
```xml
<key>NSAppTransportSecurity</key>
<dict>
	<key>NSAllowsArbitraryLoads</key>
	<true/>
</dict>
```

## 4. Enviar una notificación enriquecida

Para enviar una notificación enriquecida, simplemente especifica la URL del archivo en el campo **BANNER URL**.

<img src="/ios-rich-notification-2.webp" alt=""/>

¡Woosh! ¡Presiona con fuerza la notificación y listo!

<video src="/ios-rich-notification-3.webm" title="Ejemplo" autoplay loop muted playsinline />

<Aside type="tip">
Aprende cómo [hacer que los videos en tus Notificaciones Push Enriquecidas de iOS se reproduzcan automáticamente con force touch](/es/developer/pushwoosh-sdk/ios-sdk/customizing-ios-sdk/#autoplay-a-video-sent-in-a-rich-notification-with-force-touch)
</Aside>

## Comparte tus comentarios con nosotros

Tus comentarios nos ayudan a crear una mejor experiencia, por lo que nos encantaría saber de ti si tienes algún problema durante el proceso de integración del SDK. Si encuentras alguna dificultad, no dudes en compartir tus opiniones con nosotros [a través de este formulario](https://docs.google.com/forms/d/e/1FAIpQLSd\_0b8jwn-V\_JmoPLIxIFYbHACCQhrzidOZV3ELywoQPXRSxw/viewform).