Перейти к основному содержимому
Версия: 5.1.0

Уведомления

Для работы пуш уведомлений необходимо включить и настроить их отправку на нашем сервере. Для получения подробной инструкции напишите на support@edna.ru.

Передача токена

В SDK достаточно передать из приложения токен устройства:

Можно использовать до инициализации экземпляра ChatCenterUISDK

func application(_ application: UIApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken: Data) {
ChatCenterUISDK.setDeviceToken(deviceToken)
}

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

В случае если пуши в приложении до этого не использовались, необходимо предварительно настроить их в вашем аккаунте Apple и самом приложении.

примечание

Для работы didRegisterForRemoteNotificationsWithDeviceToken необходим запрос разрешений на получение уведомлений в приложении:

UNUserNotificationCenter.current().requestAuthorization(options: [.alert, .sound]) { granted, _ in
guard granted else {
return
}

UNUserNotificationCenter.current().getNotificationSettings { settings in
guard settings.authorizationStatus == .authorized else {
return
}
DispatchQueue.main.async {
UIApplication.shared.registerForRemoteNotifications()
}
}
}

Проверка пушей

Для определенных действий (например, переход по пушу в чат), может потребоваться метод для определения принадлежности пуша к ChatCenter:

static func isChatCenterNotification(_ userInfo: [String: Any]) -> Bool

Параметры:

  • userInfo: Словарь с информацией о Push-уведомлении от APNS.

Возвращает: Bool - true, если уведомление относится к ChatCenterUI SDK, иначе false.

Пример использования:

func application(_ application: UIApplication, didReceiveRemoteNotification userInfo: [AnyHashable : Any], fetchCompletionHandler completionHandler: @escaping (UIBackgroundFetchResult) -> Void) {
if ChatCenterUISDK.isChatCenterNotification(userInfo as! [String : Any]) {
// Это уведомление от ChatCenterUI SDK, обрабатываем его
// ...
} else {
// Это другое уведомление
// ...
}
}

Переход по уведомлению

Для открытия в приложении чата по с цитированием выбранного пуш уведомления (или его отображения в уже открытом), необходимо вызвать метод:

func handleNotification(userInfo: [String: Any]) throws

Параметры:

  • userInfo: Словарь с информацией о Push-уведомлении.

Выбрасывает: Ошибки, если произошла проблема при обработке уведомления.

Пример использования:

func application(_ application: UIApplication, didReceiveRemoteNotification userInfo: [AnyHashable : Any], fetchCompletionHandler completionHandler: @escaping (UIBackgroundFetchResult) -> Void) {
// Проверяем, является ли уведомление от ChatCenterUI SDK
if ChatCenterUISDK.isChatCenterNotification(userInfo) {
do {
try chatCenterSDK?.handleNotification(userInfo: userInfo as! [String : Any])
completionHandler(.newData)
} catch {
print("Ошибка при обработке уведомления: \(error)")
completionHandler(.failed)
}
} else {
// Обработка других уведомлений
completionHandler(.noData)
}
}