# Crear notificaciones push interactivas en iOS

iOS 8 introdujo las notificaciones interactivas, permitiendo a los usuarios realizar acciones directamente desde el banner de notificación. Pushwoosh ahora ofrece **Categorías de iOS**, que te permiten crear botones personalizados dentro del Panel de Control de Pushwoosh. [Aprende más](/es/product/messaging-channels/push-notifications/advanced-push-features/ios-interactive-push)

## API

Cuando tu aplicación llama a [`registerDevice`](/es/developer/api-reference/device-api/#registerdevice), la API de Pushwoosh devuelve una respuesta que contiene una lista de Categorías disponibles con sus ID y los detalles de cada botón, como se muestra a continuación:

```json
{
  "status_code": 200,
  "status_message": "OK",
  "response": {
    "iosCategories": [
      {
        "categoryId": 65,
        "buttons": [
          {
            "id": 0,
            "label": "Rate",
            "type": "1",
            "startApplication": 1
          },
          {
            "id": 1,
            "label": "Later",
            "type": "0",
            "startApplication": 0
          }
        ]
      }
    ]
  }
}
```

Estas Categorías ahora están disponibles en el dispositivo, por lo que pueden mostrarse correctamente cuando llega un mensaje y tu aplicación no se está ejecutando en primer plano.

Para enviar tu notificación push con una categoría desde un Journey de Pushwoosh, simplemente selecciónala en la configuración de la plataforma iOS mientras redactas tu mensaje. En caso de que estés enviando tus notificaciones push de forma remota a través de la API de Pushwoosh, en las solicitudes de [`createMessage`](/es/developer/api-reference/messages-api/#createmessage) debes usar el parámetro `ios_category` con el ID de Categoría correspondiente como valor:

```json
{
  "categoryId": 65  // Optional. String value. iOS8 category ID from Pushwoosh
}
```

Cuando llega un mensaje push que contiene un ID de categoría, el SDK de Pushwoosh muestra la notificación con el conjunto de botones que contiene esta categoría.

## Botones y acciones en el SDK de iOS de Pushwoosh

Para realizar diversas acciones al abrir una aplicación, debes crear una implementación personalizada de `UNUserNotificationCenterDelegate` y sobrescribir su método `didReceiveNotificationResponse`:

#### CustomDelegate


```swift
class CustomDelegate: NSObject, UNUserNotificationCenterDelegate {
    func userNotificationCenter(_ center: UNUserNotificationCenter, didReceive response: UNNotificationResponse, withCompletionHandler completionHandler: @escaping () -> Void) {
        let identifier = response.actionIdentifier
        let category = response.notification.request.content.categoryIdentifier

        if category == "10212" {
            if identifier == "1" {
                // DO SOMETHING
            } else {
                // DO SOMETHING ELSE
            }
        }

        completionHandler()
    }
}
```

Donde `identifier` es el ID de un botón, y `category` se deriva del payload de la notificación.

Luego, crea una instancia de esta clase y pásala al SDK de Pushwoosh usando el método proxy:

#### AppDelegate

```swift
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
    Pushwoosh.configure.registerForPushNotifications()

    let customDelegate = CustomDelegate()
    Pushwoosh.configure.addNotificationCenterDelegate(customDelegate)

    return true
}
```

<img src="/messaging-channels-ios-interactive-push-1.png" alt="Notificación push interactiva de iOS con botones de acción personalizados mostrados en el banner de notificación"/>