# Integração de notificações ricas do iOS

A partir do iOS 10, você pode anexar uma imagem estática ou animada, ou até mesmo um vídeo, às notificações push. O conteúdo será exibido diretamente na notificação quando o usuário pressioná-la com força (force-tap).

Habilitar essa funcionalidade é muito simples, com pouquíssima codificação envolvida. Vamos lá!

## 1. Criando uma Notification Service Extension

Primeiro, crie uma [Notification Service Extension](https://developer.apple.com/reference/usernotifications/unnotificationserviceextension). Essa extensão baixa o conteúdo que será mostrado ao usuário.

Adicione um novo target ao seu projeto (File -> New -> Target) e crie uma _Notification Service Extension_.

<img src="/ios-rich-notification-1.webp" alt="Criando uma Notification Service Extension"/>

<Aside type="caution">
 A Notification Service Extension tem um Apple App ID e um Provisioning profile separados!

Observe que a extensão de notificação tem seu próprio Bundle Id (ex: `com.pushwoosh.example.NotificationService`), bem como seu próprio **Apple App ID** e **Provisioning profile**, que devem ser configurados separadamente no Apple Developer Portal.
</Aside>

## 2. Código da Notification Service Extension

O código baixa o anexo e chama o manipulador de conteúdo da notificação.
Apenas copie e cole na sua extensão.

<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. Permitindo URLs de anexo não seguras

A Notification Service Extension é um binário separado e **tem seu próprio arquivo Info.plist**.
Adicione **App Transport Security Settings** com a flag **Allow Arbitrary Loads** definida como `true` ao arquivo **Info.plist da extensão**.

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

## 4. Enviando uma notificação rica

Para enviar uma notificação rica, basta especificar a URL do arquivo no campo **BANNER URL**.

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

Woosh! Pressione a notificação com força (force-tap) e pronto!

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

<Aside type="tip">
Aprenda como [fazer com que os vídeos em suas Notificações Ricas do iOS sejam reproduzidos automaticamente com o force touch](/pt/developer/pushwoosh-sdk/ios-sdk/customizing-ios-sdk/#autoplay-a-video-sent-in-a-rich-notification-with-force-touch)
</Aside>

## Compartilhe seu feedback conosco

Seu feedback nos ajuda a criar uma experiência melhor, então adoraríamos ouvir de você se tiver algum problema durante o processo de integração do SDK. Se você enfrentar alguma dificuldade, não hesite em compartilhar suas opiniões conosco [através deste formulário](https://docs.google.com/forms/d/e/1FAIpQLSd\_0b8jwn-V\_JmoPLIxIFYbHACCQhrzidOZV3ELywoQPXRSxw/viewform).