FMPPush

Описание

Класс FMPPush предназначен для работы с push-уведомлениями.

class FMPPush

Свойства

Свойство Описание

service

Сервис push-уведомлений.

var service: FMPPush.Service { get }

token

Текущий токен устройства.
var token: String { get }

Методы

Метод Описание
addToken(completion:) Добавление текущего токена устройства в список доступных пользователю токенов на сервере.
func addToken(completion: @escaping (AddTokenResult) -> Void)

Параметры:

  • completion. Замыкающее выражение, содержащее результат выполнения метода.

copy() Получение экземпляра класса-строителя для копирования FMPPush. Возвращает экземпляр класса-строителя FMPPush.Builder.
func copy() -> FMPPush.Builder
removeToken(completion:) Удаление текущего токена устройства из списка доступных пользователю токенов на сервере.
func removeToken(completion: @escaping (RemoveTokenResult) -> Void)

Параметры:

  • completion. Замыкающее выражение, содержащее результат выполнения метода.

send(_:completion:) Отправка push-уведомления. Уведомление отправляется конкретному пользователю, если в свойстве recipient структуры Message указано значение user. Если указано значение topic, то push-уведомление будет отправлено всем подписчикам указанной темы сообщений.
func send(_ message: Message, completion: @escaping (SendResult) -> Void)

Параметры:

  • message. Push-уведомление;

  • completion. Замыкающее выражение, содержащее результат выполнения метода.

subscribe(to:completion:) Подписка на сообщения указанных тем.
func subscribe(to topics: [String], completion: @escaping (SubscribeResult) -> Void)

Параметры:

  • topics. Массив названий тем сообщений;

  • completion. Замыкающее выражение, содержащее результат выполнения метода.

tokens(completion:)

Получение списка токенов устройств для текущего пользователя.
func tokens(completion: @escaping (TokensResult) -> Void)

Параметры:

  • completion. Замыкающее выражение, содержащее результат выполнения метода.

topics(completion:) Получение списка тем сообщений, доступных текущему пользователю.
func topics(completion: @escaping (TopicsResult) -> Void)

Параметры:

  • completion. Замыкающее выражение, содержащее результат выполнения метода.

unsubscribe(from:completion:) Отписка от сообщений указанных тем.
func unsubscribe(from topics: [String], completion: @escaping (UnsubscribeResult) -> Void)

Параметры:

  • topics. Массив названий тем сообщений;

  • completion. Замыкающее выражение, содержащее результат выполнения метода.

Псевдонимы типов

Псевдоним типа Описание
AddTokenResult Результат запроса на добавление текущего токена устройства в список доступных пользователю токенов на сервере. Используется методом addToken(completion:).
typealias AddTokenResult = Result<Bool, Error>
RemoveTokenResult Результат запроса на удаление текущего токена устройства из списка доступных пользователю токенов на сервере. Используется методом removeToken(completion:).
typealias RemoveTokenResult = Result<Bool, Error>
SendResult Результат запроса на отправку push-уведомления. Используется методом send(_:completion:).
typealias SendResult = Result<Bool, Error>
SubscribeResult Результат запроса на подписку на сообщения указанных тем. Используется методом subscribe(to:completion:).
typealias SubscribeResult = Result<Bool, Error>
TokensResult Результат запроса на получение списка токенов устройств для текущего пользователя. Используется методом tokens(completion:).
typealias TokensResult = Result<[Token], Error>
TopicsResult Результат запроса на получение списка тем сообщений, доступных текущему пользователю. Используется методом topics(completion:).
typealias TopicsResult = Result<[Topic], Error>
UnsubscribeResult Результат запроса на отмену подписки на сообщения указанных тем. Используется методом unsubscribe(from:completion:).
typealias UnsubscribeResult = Result<Bool, Error>

Примеры

Получение списка токенов устройств:

// Построим экземпляр класса FMPPush
let push: FMPPush = fmp.push.build()
 
// Получим список токенов
push.tokens { (result) in
    switch result {
    case .success(let tokens):
        // Выведем идентификаторы токенов
        print(tokens.map {$0.token})
    case .failure(let error):
        // Выведем код и описание ошибки
        print((error as? FMPError)?.code, (error as? FMPError)?.description)
    }
}

Получение списка тем сообщений:

// Построим экземпляр класса FMPPush
let push: FMPPush = fmp.push.build()
 
// Получим список тем сообщений
push.topics { (result) in
    switch result {
    case .success(let topics):
        // Выведем названия тем
        print(topics.map {$0.name})
    case .failure(let error):
        // Выведем код и описание ошибки
        print((error as? FMPError)?.code, (error as? FMPError)?.description)
    }
}

Добавление/удаление текущего токена устройства на сервере:

// Построим экземпляр класса FMPPush
let push: FMPPush = fmp.push.build()
 
// Добавим токен устройства на сервер
push.addToken { (result) in
    switch result {
    case .success(_):
    // Успешное добавление токена
    case .failure(let error):
        // Выведем код и описание ошибки
        print((error as? FMPError)?.code, (error as? FMPError)?.description)
    }
}
 
// Удалим токен устройства с сервера
push.removeToken { (result) in
    switch result {
    case .success(_):
    // Успешное удаление токена
    case .failure(let error):
        // Выведем код и описание ошибки
        print((error as? FMPError)?.code, (error as? FMPError)?.description)
    }
}

Подписка/отписка на темы сообщений:

// Построим экземпляр класса FMPPush
let push: FMPPush = fmp.push.build()
 
// Подпишемся на несколько тем сообщений
push.subscribe(to: ["topic1","topic2"]) { (result) in
    switch result {
    case .success(_):
    // Успешная подписка
    case .failure(let error):
        // Выведем код и описание ошибки
        print((error as? FMPError)?.code, (error as? FMPError)?.description)
    }
}
 
// Отпишемся от нескольких тем сообщений
push.unsubscribe(from: ["topic1","topic2"]) { (result) in
    switch result {
    case .success(_):
    // Успешная отмена подписки
    case .failure(let error):
        // Выведем код и описание ошибки
        print((error as? FMPError)?.code, (error as? FMPError)?.description)
    }
}

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

// Построим экземпляр класса FMPPush
let push: FMPPush = fmp.push.build()
 
// Сформируем push-уведомление пользователю
let message: Data = "{\"title\": \"Title\"}".data(using: .utf8)!
let userMessage = FMPPush.Message(template: "template", recipient: .user("login"), message: message)
 
// Отправим push-уведомление пользователю
push.send(userMessage) { (result) in
    switch result {
    case .success(_):
        // Успешная отправка уведомления на сервер мобильной платформы для отправки пользователю
    case .failure(let error):
        // Выведем код и описание ошибки
        print((error as? FMPError)?.code, (error as? FMPError)?.description)
    }
}
 
// Сформируем push-уведомление пользователям, которые подписаны на указанную тему сообщений
let message: Data = "{\"title\": \"Title\"}".data(using: .utf8)!
let topicMessage = FMPPush.Message(template: "template", recipient: .topic("topic"), message: message)
 
// Отправим push-уведомление подписчикам
push.send(topicMessage) { (result) in
    switch result {
    case .success(_):
        // Успешная отправка уведомления на сервер мобильной платформы для отправки подписчикам
    case .failure(let error):
        // Выведем код и описание ошибки
        print((error as? FMPError)?.code, (error as? FMPError)?.description)
    }
}

Копирование экземпляра класса FMPPush:

// Построим экземпляр класса FMPPush
let push: FMPPush = fmp.push.build()
 
// Скопируем экземпляр класса FMPPush
let pushCopy: FMPPush = push.copy().build()

См. также:

Фреймворк FMPKit | Классы