Перейти к основному содержимому
Altcraft Docs LogoAltcraft Docs Logo
Пользователям iconПользователям
Разработчикам iconРазработчикам
Администраторам iconАдминистраторам
Русский
  • Русский
  • English
Войти
    API пользователяВзаимодействие с APIМатчинг
      Профилиarrow
    • Импортировать профильОбновить профильДобавить профиль в базу данныхПолучить информацию о профилеИмпортировать профиль в RabbitMQМассовое добавление профилей в базу данныхМассовое обновление профилейМассовый импорт профилейПриостановить все профили в базе данныхВосстановить все приостановленные профили в базе данныхУдалить профильУпрощенный импорт профиляФункциональное обновление полей базыФункциональное обновление полей подпискиВыгрузка профилей в файлПолучение данных по нескольким профилямОбъединение нескольких профилейОтписать профиль от ресурсаРазделение профиля
        Историяarrow
      • Получить историю одного профиляПолучить историю нескольких профилей
        Связи профилейarrow
      • Добавить связьУдалить связьУсилить/ослабить связьПерезаписать значения свойств связиПолучить информацию о связях профиляПолучить список связей профиля
        Подпискиarrow
      • Добавить или редактировать подпискуПолучить все подписки профиляПолучить все подписки нескольких профилейПолучить информацию о подписке профиляУдалить подписку профиляВосстановить удаленную подписку профиляПриостановить все подпискиВосстановить все приостановленные подписки
      Базы данныхarrow
    • Получить список баз данныхПолучить информацию о базе данныхПолучить информацию о полях базы данныхОчистка базы данных для тестированияПолучить статистику по базе данныхОбновить статистику по базе данных
      Ресурсыarrow
    • Получить список ресурсовПолучить информацию о ресурсеПолучить информацию о полях подписки ресурсаПолучить статистику по ресурсамОбновить статистику по ресурсам
      Сегментыarrow
    • Добавить сегментОбновить сегментПолучить информацию о сегментеПолучить список сегментовУдалить сегментПолучить статистику по сегментамОбновить статистику по сегментамДобавить или удалить профильПолучить данные профилей статического или обновляемого сегмента
      Стоп-спискиarrow
    • Добавить стоп-списокПереименовать стоп-списокПолучить информацию о стоп-спискеПолучить информацию о нескольких стоп-списковУдалить стоп-списокВыгрузить данные из стоп-списка в файл
        Добавление и удаление из стоп-спискаarrow
      • Проверить email-адрес в стоп-спискеДобавить email-адрес в стоп-списокДобавить один или несколько email-адресов в стоп-списокУдалить email-адрес из стоп-спискаУдалить все email-адреса из стоп-спискаПроверить домен в стоп-спискеДобавить домен в стоп-списокДобавить один или несколько доменов в стоп-списокУдалить домен из стоп-спискаУдалить все домены из стоп-спискаПроверить номер телефона в стоп-спискеДобавить номер телефона в стоп-списокДобавить один или несколько номеров в стоп-списокУдалить номер из стоп-спискаУдалить все номера из стоп-списка
      Шаблоныarrow
    • Получить список шаблоновПолучить информацию о шаблонеУдалить шаблонДобавить шаблон сообщенияОбновить шаблон сообщенияChannel object
      Рассылкиarrow
    • Получить список рассылокПолучить информацию о рассылкеПолучить лог рассылкиКлонировать рассылкуУдалить рассылкуАктивировать рассылкуДеактивировать рассылкуПолучить статус рассылки
        Броадкаст рассылкиarrow
      • Получить список броадкаст рассылокПолучить информацию о броадкаст рассылкеДобавить броадкаст рассылкуОбновить броадкаст рассылкуЗапустить броадкаст рассылку
        Регулярные рассылкиarrow
      • Получить список регулярных рассылокПолучить информацию о регулярной рассылкеДобавить регулярную рассылкуОбновить регулярную рассылкуЗапустить регулярную рассылку
        Триггерыarrow
      • Получить список триггерных рассылокПолучить информацию о триггерной рассылкеДобавить триггерную рассылкуОбновить триггерную рассылкуЗапуск триггерной рассылки (API call)Импорт профиля + Отправка триггераЗадание на массовую отправку триггераЗадание на массовый импорт профилей + отправка триггераМассовая отправка триггераМассовый импорт профилей + отправка триггераКлонировать триггер рассылкуData array
      Кампанииarrow
    • Получить информацию о кампанииПолучить список кампанийАктивация кампанииЗавершение кампанииДеактивация кампанииПолучить статус кампании
      Сценарии (цепочки)arrow
    • Отправить профиль клиента в сценарийОдновременный импорт и запуск профиля в сценарийМассовый импорт и запуск профилей в сценарийЗадание на массовый импорт и запуск профилей в сценарийПолучить список сценариевАктивировать сценарийДеактивировать сценарий
      Промокодыarrow
    • Импортировать промокодыПолучить информацию о промокодеАктивировать промокодОбновить промокодПривязать промокод к профилюОтвязать промокод от профиляПолучить все промокоды
      Программы лояльностиarrow
    • Получить уровень профиля в программе лояльностиЭкспорт транзакций балловСгораемые баллы за периодПолучение транзакций по счёту профиляПолучение списка триггерных промоакцийНачисление баллов участникуСписание баллов участникаПодтверждение временной транзакцииПредварительный расчет заказаПодтверждение заказаОтмена временной транзакцииОтмена балльной транзакцииПолучение баланса балльного счётаРегистрация участника в программе лояльностиУдаление участника из программы лояльности
      Целиarrow
    • Регистрация события достижения цели
      Пуши приложенийarrow
    • Обработка и добавление подпискиДобавить события с app push
      Маркетarrow
      • Объекты маркетаarrow
      • Структура заказа (order data object)Product data objectСтруктура SKU (SKU data object)Категории (categories array)Custom fields array
        Заказыarrow
      • Импорт заказа и статусов позицийПолучить список заказовУдалить заказПолучить статус заказаИзменение статуса позиции заказа
        Продукты и SKUarrow
      • Импорт продуктов, SKU и категорийПолучение списка продуктовПолучение списка SKUИмпорт SKU и категорийУдалить продуктыУдалить SKU
      Отчеты и статистикаarrow
    • Получить сводный отчетПолучить отчет о возвратахПолучить отчет о недоставках
      Сендерыarrow
    • Получить список сендеров
        Виртуальные сендерыarrow
      • Получить список виртуальных сендеровПолучить информацию о виртуальном сендереКлонировать виртуальный сендерДобавить виртуальный сендерОбновить виртуальный сендерУдалить виртуальный сендер
      Объектыarrow
    • AKMTA objectContent objectEmail rule objectFile objectProfile data objectSMS rule objectSender objectSender typesStart schedule objectSubscription objectTrigger types
      Запросы к внешним базам данныхarrow
      • Запросы сегментацииarrow
      • Добавить запрос сегментацииОбновить запрос сегментацииПолучить информацию о запросе сегментацииПолучить список запросов на сегментациюУдалить запрос сегментации
        Запросы для шаблоновarrow
      • Добавить запрос для шаблоновОбновить запрос для шаблоновПолучить информацию о запросе для шаблоновПолучить список запросов для шаблоновУдалить запрос для шаблонов
      Прочееarrow
    • Загрузить файлПолучить веб-версию сообщенияPush провайдерыДедупликация запросовРабота с API через RabbitMQСписок гендерных идентификацийПолучить допустимые значения полей browsers, devices, tz, oses, languages
    Список API-методовИмпорт и настройка коллекции API-методов в Postman
      SDKarrow
      • mSDKarrow
        • Androidarrow
        • Быстрый стартКонфигурация SDKФункционал SDKПубличный API SDK
            Настройка провайдеровarrow
          • Firebase Cloud MessagingHuawei Mobile ServicesRuStore
          iOSarrow
        • Быстрый стартКонфигурация SDKФункционал SDKПубличный API SDK
            Настройка провайдеровarrow
          • Apple Push Notification ServiceFirebase Cloud MessagingHuawei Mobile Services
          React Native (Android/iOS)arrow
        • Быстрый стартКонфигурация SDKФункционал SDKПубличный API SDKНастройка провайдеров
        Работа с ролевым и JWT-токеном
  • SDK
  • mSDK
  • iOS
  • Быстрый старт

Быстрый старт

В статье приведен пример быстрой интеграции Altcraft mSDK с Apple Push Notification System (APNS) и Firebase Cloud Messaging (FCM). После выполнения указанных шагов ваше приложение сможет получать push-уведомления Altcraft.

Для использования Huawei Mobile Services необходимо добавить соответствующие SDK в проект и реализовать их интерфейсы, используя тот же подход, что показан для APNS и FCM.

Шаг 0. Предварительные условия​

  • Получен доступ к APNS получен на сайте;
  • Приложение настроено в проекте Firebase, GoogleServiceInfo.plist загружен.

Шаг 1. Подключение Altcraft mSDK к приложению​

Добавьте пакеты из репозиториев с помощью Swift Package Manager:

  • Репозиторий Altcraft SDK;
  • Репозиторий Firebase.

Шаг 2. Добавление GoogleServiceInfo в приложение​

Добавьте GoogleServiceInfo.plist в папку вашего приложения:

Шаг 3. Подготовка приложения​

Настройте следующие параметры таргета приложения:

  • General:
    • Проверьте, что библиотека Altcraft добавлена в Frameworks, Libraries, and Embedded Content таргета приложения:
  • Проверьте, что библиотека FirebaseMessaging добавлена в Frameworks, Libraries, and Embedded Content таргета приложения:
  • Signing & Capabilities:

    • PushNotifications;
    • AppGroups — укажите идентификатор для группы (добавление идентификатора App Group необходимо обмена информацией с Notification Service Extension);
    • Background Modes — выберите Background fetch, Remoute notification, Background processing.
  • Info:

    • Добавьте ключи и значения:
КлючТипЗначение
Permitted background task scheduler identifiersArray"lib.Altcraft.bgTask.systemControl"
FirebaseAppDelegateProxyEnabledBooleanNO

Первый ключ необходим для регистрации bgTask-задачи, которая будет выполнять повтор неудачных запросов к серверу в background-режиме. Второй ключ — для отключения автоматической подмены (method swizzling) методов AppDelegate, которую Firebase Messaging выполняет по умолчанию.

Шаг 4. Реализация JWTInterface​

Выполните реализацию протокола SDK, предназначенного для предоставления JWT-токена. Для этого создайте класс, реализующий JWTInterface, и переопределите getJWT():

import Altcraft

class JWTProvider: JWTInterface {
func getToken() -> String? {
//ваш код, возвращающий JWT
}
}
К сведению

getJWT() — синхронная функция. Поток выполнения SDK будет приостановлен до получения JWT. Рекомендуется, чтобы getJWT() возвращал значение немедленно — из кэша (in-memory, SharedPreferences или EncryptedSharedPreferences) — это ускорит выполнение запросов. Желательно подготовить актуальный JWT как можно раньше (на старте приложения) и сохранить его в кэш, чтобы при обращении SDK токен был доступен без задержек. При отсутствии значения допустимо вернуть nil.

Шаг 5. Реализация FCMInterface​

Выполните реализацию протокола SDK, предназначенного для предоставления и удаления FCM-токена. Для этого создайте класс, реализующий FCMInterface, и переопределите getToken(), deleteToken().

import FirebaseMessaging
import Altcraft

class FCMProvider: FCMInterface {

/// Возвращает текущий FCM-токен
func getToken(completion: @escaping (String?) -> Void) {

///токен apns, полученный из userDefault
let apnsToken = getAPNsTokenDataFromUserDefaults()

///установить токен apns для fcm перед запросом токена fcm
Messaging.messaging().apnsToken = apnsToken

///функция запроса токена fcm
Messaging.messaging().token { token, error in
if error != nil {
completion(nil)
} else {
completion(token)
}
}
}

/// Удаляет текущий токен FCM
func deleteToken(completion: @escaping (Bool) -> Void) {
Messaging.messaging().deleteToken { error in
if error != nil {
completion(false)
} else {
completion(true)
}
}
}
}

Шаг 6. Реализация APNSInterface​

Выполните реализацию протокола SDK, предназначенного для предоставления APNS-токена. Для этого создайте класс, реализующий APNSInterface, и переопределите getToken():

import Altcraft

class APNSProvider: APNSInterface {
/// Извлекает текущий токен APNs из локального хранилища
func getToken(completion: @escaping (String?) -> Void) {
let token = getAPNsTokenFromUserDefault() - передайте токен apns
completion(token)
}
}

Шаг 7. Настройка Altcraft SDK и Firebase SDK в AppDelegate​

Altcraft SDK:

  • выполните передачу идентификатора AppGroups в Altcraft SDK;
  • выполните регистрацию backgroundTasks Altcraft SDK;
  • установите JWT-, APNS-, FCM-провайдеров;
  • выполните регистрацию в центре уведомлений.

FirebaseSDK:

  • выполните установку конфигурации;
Пример правильной настройки Altcraft SDK и Firebase SDK в AppDelegate
class AppDelegate: UIResponder, UIApplicationDelegate,  UNUserNotificationCenterDelegate {
func application(
_ application: UIApplication,
didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?
) -> Bool {
//установка конфигурации FirebaseSDK
FirebaseApp.configure()

//AltcraftSDK
///установка идентификатора AppGroup
AltcraftSDK.shared.setAppGroup(groupName: "group.your_company.name")
///регистрации BGTAsk
AltcraftSDK.shared.backgroundTasks.registerBackgroundTask()
///установка JWTProvider
AltcraftSDK.shared.setJWTProvider(provider: JWTProvider())
///установка APNSProvider
AltcraftSDK.shared.pushTokenFunctions.setAPNSTokenProvider(APNSProvider())
///установка FCMProvider
AltcraftSDK.shared.pushTokenFunctions.setFCMTokenProvider(FCMProvider())
///регистрация в центре уведомлений
AltcraftSDK.shared.notificationManager.registerForPushNotifications(for: application)

return true
}

func application(
_ application: UIApplication,
didRegisterForRemoteNotificationsWithDeviceToken apnsToken: Data
) {
//сохраните apns токен в userDefault
setAPNsTokenInUserDefault(apnsToken)
}
}
  • выполните установку delegate;
  • передайте APNS-токен в Firebase в функции AppDelegate.application(_:didFinishLaunchingWithOptions:). Это гарантирует правильную инициализацию Firebase и доступность FCM-токена в background-режиме, например, во время выполнения BGTask. Так как APNS-токен не доступен в AppDelegate.application(_:didFinishLaunchingWithOptions:), используете сохраненное значение, например, в UserDefaults.

Шаг 8. Создание Notification Service Extension​

Создайте расширение приложения Notification Service Extension:

  • Выполните File — New — Target — Notification Service Extension;
  • Выберите название (Product Name) для таргета расширения;
  • Активируйте его.

Выполните в Notification Service Extension:

  • General:
    • Укажите Minimum Deployments — это параметр сборки в Xcode, который определяет минимальную версию операционной системы, на которой будет работать Notification Service Extension;
    • Добавьте библиотеку Altcraft в разделе Frameworks, Libraries and Embedded Content.
  • Signing & Capabilities:
    • AppGroups — укажите идентификатор AppGroup.

Затем настройте SDK в UNNotificationServiceExtension. Для этого замените весь автоматически сгенерированный код NSE на код из примера ниже:

Пример реализации UNNotificationServiceExtension
import Altcraft
import UserNotifications

class NotificationService: UNNotificationServiceExtension {

/// - important! Set app groups identifier.
let appGroupID = "group.your.id"

/// - important! Set the provider to JWT if you are using JWT authentication.
let jwtProvider = JWTProvider()


override func didReceive(_ request: UNNotificationRequest, withContentHandler contentHandler: @escaping (UNNotificationContent) -> Void) {

AltcraftNSE.shared.setAppGroup(groupName: appGroupID)
AltcraftNSE.shared.setJWTProvider(provider: jwtProvider)

contentHandler(request.content)

if AltcraftNSE.shared.isAltcraftPush(request) {
AltcraftNSE.shared.handleNotificationRequest(request: request, contentHandler: contentHandler)
} else {
contentHandler(request.content)
}
}
override func serviceExtensionTimeWillExpire() {
AltcraftNSE.shared.serviceExtensionTimeWillExpire()
}
}
Обратите внимание

Если вы не используете JWT-аутентификацию, исключите функцию установки JWT-провайдера AltcraftSDK.shared.setJWTProvider(provider: jwtProvider).

Шаг 9. Инициализация SDK​

Создайте переменную конфигурации и выполните инициализацию с помощью функции initialization(), где ios-firebase выбран приоритетным провайдером:

let config = AltcraftConfiguration.Builder()
.setApiUrl("your_api_url")
.setProviderPriorityList([Constants.ProviderName.firebase])
.build()

AltcraftSDK.shared.initialization(configuration: config)

В данном примере в качестве приоритетного провайдера установлен ios-firebase. Вы также можете установить APNS в качестве приоритетного провайдера:

let config = AltcraftConfiguration.Builder()
.setApiUrl("your_api_url")
.setProviderPriorityList([Constants.ProviderName.apns])
.build()

AltcraftSDK.shared.initialization(configuration: config)

Вы можете не устанавливать параметр setProviderPriorityList, тогда будет использоваться приоритет по умолчанию — ios-apns -> ios-firebase -> ios-huawei:

let config = AltcraftConfiguration.Builder()
.setApiUrl("your_api_url")
.build()

AltcraftSDK.shared.initialization(configuration: config)

Шаг 10. Выполнение подписки на push-уведомления​

Выполните подписку на push-уведомления с помощью функции pushSubscribe(), передав необходимые параметры:

AltcraftSDK.shared.pushSubscriptionFunctions.pushSubscribe(
profileFields: ["_fname": "user_first_name", "_lname": "user_last_name"]
)
Последнее обновление 10 мар. 2026 г.
Предыдущая страница
iOS
Следующая страница
Конфигурация SDK
  • Шаг 0. Предварительные условия
  • Шаг 1. Подключение Altcraft mSDK к приложению
  • Шаг 2. Добавление GoogleServiceInfo в приложение
  • Шаг 3. Подготовка приложения
  • Шаг 4. Реализация JWTInterface
  • Шаг 5. Реализация FCMInterface
  • Шаг 6. Реализация APNSInterface
  • Шаг 7. Настройка Altcraft SDK и Firebase SDK в AppDelegate
  • Шаг 8. Создание Notification Service Extension
  • Шаг 9. Инициализация SDK
  • Шаг 10. Выполнение подписки на push-уведомления
© 2015 - 2026 Altcraft. Все права защищены.