# Intégration des notifications riches iOS

Depuis iOS 10, vous pouvez joindre une image statique ou animée, ou même une vidéo, à vos notifications push. Elle s'affichera directement dans la notification lorsque l'utilisateur effectuera un appui forcé dessus.

L'activation de cette fonctionnalité est très simple et ne nécessite que très peu de code. Allons-y !

## 1. Création de l'extension de service de notification

Créez d'abord une [extension de service de notification (Notification Service Extension)](https://developer.apple.com/reference/usernotifications/unnotificationserviceextension). Cette extension télécharge le contenu qui sera montré à l'utilisateur.

Ajoutez une nouvelle cible à votre projet (File -> New -> Target) et créez une _Notification Service Extension_.

<img src="/ios-rich-notification-1.webp" alt="Création de l'extension de service de notification"/>

<Aside type="caution">
 L'extension de service de notification a son propre Apple App ID et son propre profil de provisionnement !

Notez que l'extension de notification a son propre Bundle Id (par ex. : `com.pushwoosh.example.NotificationService`) ainsi que son propre **Apple App ID** et son propre **profil de provisionnement (Provisioning profile)** qui doivent être configurés séparément dans le portail des développeurs Apple.
</Aside>

## 2. Code de l'extension de service de notification

Le code télécharge la pièce jointe et appelle le gestionnaire de contenu de la notification.
Il vous suffit de le copier-coller dans votre extension.

<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. Autoriser les URL de pièces jointes non sécurisées

L'extension de service de notification est un binaire distinct et **possède son propre fichier Info.plist**.
Ajoutez les **paramètres de sécurité du transport de l'application (App Transport Security Settings)** avec l'indicateur **Autoriser les chargements arbitraires (Allow Arbitrary Loads)** défini sur ```true``` dans le fichier **Info.plist de l'extension**.

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

## 4. Envoi d'une notification riche

Pour envoyer une notification riche, il vous suffit de spécifier l'URL du fichier dans le champ **BANNER URL**.

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

Woosh ! Appuyez fort sur la notification et le tour est joué !

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

<Aside type="tip">
Apprenez comment [faire en sorte que les vidéos de vos notifications push riches iOS se lancent automatiquement avec un appui forcé](/fr/developer/pushwoosh-sdk/ios-sdk/customizing-ios-sdk/#autoplay-a-video-sent-in-a-rich-notification-with-force-touch)
</Aside>

## Partagez vos commentaires avec nous

Vos commentaires nous aident à créer une meilleure expérience, nous serions donc ravis de vous entendre si vous rencontrez des problèmes lors du processus d'intégration du SDK. Si vous rencontrez des difficultés, n'hésitez pas à nous faire part de vos réflexions [via ce formulaire](https://docs.google.com/forms/d/e/1FAIpQLSd\_0b8jwn-V\_JmoPLIxIFYbHACCQhrzidOZV3ELywoQPXRSxw/viewform).