Класс FMPPush предназначен для работы с push-уведомлениями.
class FMPPush
Свойство | Описание |
service |
Сервис push-уведомлений. var service: FMPPush.Service { get } |
token |
Текущий токен устройства.
var token: String { get } |
Метод | Описание |
addToken(completion:) | Добавление текущего токена устройства в список доступных пользователю
токенов на сервере.
func addToken(completion: @escaping (AddTokenResult) -> Void) Параметры:
|
copy() | Получение экземпляра класса-строителя для копирования FMPPush.
Возвращает экземпляр класса-строителя FMPPush.Builder.
func copy() -> FMPPush.Builder |
removeToken(completion:) | Удаление текущего токена устройства из списка доступных пользователю
токенов на сервере.
func removeToken(completion: @escaping (RemoveTokenResult) -> Void) Параметры:
|
send(_:completion:) | Отправка push-уведомления. Уведомление отправляется конкретному
пользователю, если в свойстве recipient структуры Message
указано значение user.
Если указано значение topic,
то push-уведомление будет отправлено всем подписчикам указанной
темы сообщений.
func send(_ message: Message, completion: @escaping (SendResult) -> Void) Параметры:
|
subscribe(to:completion:) | Подписка на сообщения указанных тем.
func subscribe(to topics: [String], completion: @escaping (SubscribeResult) -> Void) Параметры:
|
tokens(completion:) |
Получение списка токенов устройств для текущего пользователя.
func tokens(completion: @escaping (TokensResult) -> Void) Параметры:
|
topics(completion:) | Получение списка тем сообщений, доступных текущему пользователю.
func topics(completion: @escaping (TopicsResult) -> Void) Параметры:
|
unsubscribe(from:completion:) | Отписка от сообщений указанных тем.
func unsubscribe(from topics: [String], completion: @escaping (UnsubscribeResult) -> Void) Параметры:
|
Псевдоним типа | Описание |
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()
См. также: