# Интеграция Rich-уведомлений для iOS

Начиная с iOS 10, вы можете прикреплять к push-уведомлениям статическое или анимированное изображение или даже видео. Оно будет отображаться прямо в уведомлении, когда пользователь нажмет на него с усилием (force-tap).

Включить эту функциональность очень просто, и это почти не требует написания кода. Давайте сделаем это!

## 1. Создание Notification Service Extension

Сначала создайте [Notification Service Extension](https://developer.apple.com/reference/usernotifications/unnotificationserviceextension). Это расширение загружает контент, который будет показан пользователю.

Добавьте новую цель (target) в ваш проект (File -> New -> Target) и создайте _Notification Service Extension_.

<img src="/ios-rich-notification-1.webp" alt="Создание Notification Service Extension"/>

<Aside type="caution">
 Notification Service Extension имеет отдельные Apple App ID и Provisioning profile!

Обратите внимание, что расширение уведомлений имеет собственный Bundle ID (например, `com.pushwoosh.example.NotificationService`), а также собственные **Apple App ID** и **Provisioning profile**, которые необходимо настроить отдельно на портале разработчиков Apple.
</Aside>

## 2. Код Notification Service 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. Разрешение небезопасных URL-адресов вложений

Notification Service Extension — это отдельный бинарный файл, у которого есть **собственный файл Info.plist**.
Добавьте **App Transport Security Settings** с флагом **Allow Arbitrary Loads**, установленным в значение ```true```, в **файл Info.plist расширения**.

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

## 4. Отправка rich-уведомления

Чтобы отправить rich-уведомление, просто укажите URL-адрес файла в поле **BANNER URL**.

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

Вуаля! Нажмите на уведомление с усилием (force-tap), и все готово!

<video src="/ios-rich-notification-3.webm" title="Пример" autoplay loop muted playsinline />

<Aside type="tip">
Узнайте, как [настроить автовоспроизведение видео в Rich Push-уведомлениях для iOS при нажатии с усилием (force touch)](/ru/developer/pushwoosh-sdk/ios-sdk/customizing-ios-sdk/#autoplay-a-video-sent-in-a-rich-notification-with-force-touch)
</Aside>

## Поделитесь с нами своим мнением

Ваши отзывы помогают нам улучшать наш продукт, поэтому мы будем рады, если вы поделитесь с нами своим мнением в случае возникновения проблем в процессе интеграции SDK. Если вы столкнетесь с какими-либо трудностями, пожалуйста, не стесняйтесь поделиться своими мыслями с нами [через эту форму](https://docs.google.com/forms/d/e/1FAIpQLSd\_0b8jwn-V\_JmoPLIxIFYbHACCQhrzidOZV3ELywoQPXRSxw/viewform).