# iOS | Настройка гарантированной доставки
:::warning{title=" Убедитесь, что эти шаги выполнены успешно:"}

 * [Настройка точек интеграции](https://developers.mindbox.ru/docs/add-ios-integration)
 * [Получение ключей для iOS-приложения и настройка подключения к APNs](https://developers.mindbox.ru/docs/apns-keys-setup)
 * [Добавление SDK в приложение](https://developers.mindbox.ru/docs/add-sdk-flutter)
 * [Инициализация SDK](https://developers.mindbox.ru/docs/sdk-initialization-flutter)
 * [Отправка push-notifications](https://developers.mindbox.ru/docs/ios-send-push-notifications-flutter)
:::

import Iosguaranteedeliverysetupxcode from '/src/_Iosguaranteedeliverysetupxcode.mdx';

<Iosguaranteedeliverysetupxcode />

***

## Регистрация фоновых задач

<Tabs defaultValue="1" className="w-full">

    <TabsList className="flex w-max gap-2">
      <TabsTrigger value="1">Быстрая настройка</TabsTrigger>
      <TabsTrigger value="2">Самостоятельная настройка</TabsTrigger>
    </TabsList>
  
  <TabsContent value="1">
  :::tip
      Если ваш **`AppDelegate`** наследуется от **`MindboxFlutterAppDelegate`**, то никаких дополнительных изменений для гарантированной доставки не требуется.
    :::
  </TabsContent>
  <TabsContent value="2">
  **Если вы не использовали`MindboxFlutterAppDelegate`, тогда вам нужно выполнить инструкцию до конца и реализовать все методы вручную.**

    :::info
      <Link to="https://github.com/mindbox-cloud/flutter-sdk/blob/develop/example/flutter_example/ios/Runner/AppDelegate.swift">Пример реализации</Link>
    :::

    Чтобы фоновые задачи работали, их нужно зарегистрировать в файле `AppDelegate.swift`

    ```swift
    import UIKit
    import Flutter
    import Mindbox
    import MindboxNotifications

    @UIApplicationMain
    @objc class AppDelegate: FlutterAppDelegate {

        override func application(
            _ application: UIApplication,
            didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?
        ) -> Bool {

            // Регистрация фоновых задач для iOS 13+
            if #available(iOS 13.0, *) {
                Mindbox.shared.registerBGTasks()
            } else {
                UIApplication.shared.setMinimumBackgroundFetchInterval(
                    UIApplication.backgroundFetchIntervalMinimum
                )
            }

            return super.application(application, didFinishLaunchingWithOptions: launchOptions)
        }

        // Обработка фоновых задач для iOS < 13
        override func application(
            _ application: UIApplication,
            performFetchWithCompletionHandler completionHandler: @escaping (UIBackgroundFetchResult) -> Void
        ) {
            Mindbox.shared.application(
                application,
                performFetchWithCompletionHandler: completionHandler
            )
        }
    }
    ```
  </TabsContent>
</Tabs>

<br />
