Настройка iOS приложения

Настройка приложения для получения и отображения push-уведомлений

Для получения и отображения push-уведомлений выполните следующие шаги:

  1. Зарегистрируйте приложение в Apple Push Notification Service (APNs): Registering Your App with APNsarrow-up-right.

  2. Запросите разрешение на показ уведомлений: Asking Permission to Use Notificationsarrow-up-right.

  3. Реализуйте метод userNotificationCenter(_:willPresent:withCompletionHandler:) для отображения уведомлений, когда приложение запущено и активно: Handling Notifications and Notification-Related Actionsarrow-up-right.

  4. Реализуйте отправку токена на мобильный бекенд при вызове метода application(_:didRegisterForRemoteNotificationsWithDeviceToken:).

Пример AppDelegate после выполнения вышеуказанных действий

@main
class AppDelegate: UIResponder, UIApplicationDelegate, UNUserNotificationCenterDelegate {
    
    func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
        UNUserNotificationCenter.current().delegate = self
        UNUserNotificationCenter.current().requestAuthorization(options: [.badge, .sound, .alert]) { (granted, error) in
            if let error = error {
                print("Failed to request notification center authorization: \\(error)")
            }
        }
        
        application.registerForRemoteNotifications()
        return true
    }
    
    func application(_ application: UIApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken: Data) {
        let stringToken = deviceToken.map { String(format: "%02.2hhx", $0) }.joined()
        self.sendDeviceTokenToBackend(token: stringToken)
    }
    
    func application(_ application: UIApplication, didFailToRegisterForRemoteNotificationsWithError error: Error) {
        print("Failed to register for remote notifications: \\(error)")
        // Try again later.
    }
    
    // MARK: - UNUserNotificationCenterDelegate

    // The method will be called on the delegate only if the application is in the foreground.
    func userNotificationCenter(_ center: UNUserNotificationCenter,
                                willPresent notification: UNNotification,
                                withCompletionHandler completionHandler: @escaping (UNNotificationPresentationOptions) -> Void) {
        completionHandler([.alert, .sound, .badge])
    }
}

Отслеживание статусов доставки

При получении уведомления вам необходимо передавать на наш сервер информацию об идентификаторе сообщения на нашей платформе и статусе уведомления. Для этого необходимо выполните следующие шаги:

  1. Добавьте к приложению расширение Notification Service Extensionarrow-up-right.

  2. В методе didReceive(_:withContentHandler:) расширения отправляйте следующий HTTP-запрос:

В ответ наш сервер должен вернуть 204 No Content.

Как добавить расширение Notification Service Extension?

  1. В Xcode выберите FileNewTarget.

  2. Выберите из списка шаблонов Notification Service Extension и нажмите Next.

  1. Введите название расширения и нажмите Finish.

Пример реализации расширения

circle-info

Время выполнения метода didReceive(_:withContentHandler:) ограничено 30 секундами, однако мы рекомендуем устанавливать меньший таймаут запроса, так как уведомление пользователю будет показано только после вызова contentHandler.

Отправка уведомлений

При отправке уведомлений используется ключ в формате.p8 для авторизации на сервере APNs, который вам нужно передать i-Digital.

Как создать ключ p8?

  1. Войдите в ваш Appple Developer Accountarrow-up-right и перейдите на страницу Certificates, Identifiers & Profilesarrow-up-right.

  2. В меню слева выберите Keys и нажмите на синюю кнопку (+).

  1. Введите название ключа, отметьте Apple Push Notifications service (APNs) и нажмите Continue.

  1. Нажмите Register, после чего скачайте созданный ключ, нажав Download.

Как передать созданный p8 ключ в i-Digital?

Отправьте письмо на [email protected] с темой "Подключение PUSH i-digital direct", указав в теле письма следующее:

Последнее обновление