# Criar push interativo para iOS

O iOS 8 introduziu notificações interativas, permitindo que os usuários realizem ações diretamente do banner de notificação. A Pushwoosh agora oferece **Categorias do iOS**, permitindo que você crie botões personalizados no Painel de Controle da Pushwoosh. [Saiba mais](/pt/product/messaging-channels/push-notifications/advanced-push-features/ios-interactive-push)

## API

Quando seu aplicativo chama [`registerDevice`](/pt/developer/api-reference/device-api/#registerdevice), a API da Pushwoosh retorna a resposta que contém uma lista de Categorias disponíveis com seus IDs e detalhes para cada botão, da seguinte forma:

```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
          }
        ]
      }
    ]
  }
}
```

Essas Categorias agora estão disponíveis no dispositivo, para que possam ser exibidas corretamente quando uma mensagem chegar e seu aplicativo não estiver em execução em primeiro plano.

Para enviar seu push com uma categoria a partir da Journey da Pushwoosh, basta selecioná-la nas configurações da plataforma iOS ao compor sua mensagem. Caso você esteja enviando seus pushes remotamente através da API da Pushwoosh, nas solicitações [`createMessage`](/pt/developer/api-reference/messages-api/#createmessage) você deve usar o parâmetro `ios_category` com o ID da Categoria correspondente como valor:

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

Quando uma mensagem push contendo um ID de categoria chega, o SDK da Pushwoosh exibe a notificação com um conjunto de botões que essa categoria contém.

## Botões e ações no SDK iOS da Pushwoosh

Para realizar várias ações ao abrir um aplicativo, você deve criar uma implementação personalizada de `UNUserNotificationCenterDelegate` e sobrescrever seu 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" {
                // FAÇA ALGO
            } else {
                // FAÇA OUTRA COISA
            }
        }

        completionHandler()
    }
}
```

Onde `identifier` é um ID de botão, e `category` é derivado do payload da notificação.

Em seguida, crie uma instância desta classe e passe-a para o SDK da Pushwoosh usando o 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="Notificação push interativa do iOS com botões de ação personalizados exibidos no banner de notificação"/>