Документация Accelera

IOS SDK

Установка через XCODE

Accelera SDK

Библиотека Accelera — это модульный SDK для интеграции динамического контента (баннеров, сторис и попапов) и push-уведомлений в ваше iOS-приложение.

📦 Установка через Swift Package Manager

  1. Откройте Xcode

  2. File → Add Packages...

  3. Введите URL:

    https://github.com/cubesolutionsgit/accelera-ios-sdk-spm.git

  4. Выберите версию cамую свежую версию (пример 0.6.4 )

  5. Важно: выберите только один продукт из списка:

ПродуктОписание
AcceleraПуш уведомления + Accelera Stories
AcceleraBannersТолько Accelera Stories
AcceleraNotificationsТолько пуш-уведомления (Firebase)

* Accelera использует Firebase , а не APN. Таким образом, вы контролируете отправку из единого кабинета Firebase

⚙️ Конфигурация

Стандартная инициализация

import Accelera

Accelera.shared.configure(
 config: AcceleraConfig(
     url: "https://your-api-endpoint.com",
     systemToken: "your-system-token"
 )
)

URL - это базовый url для отправки / получения данных с бекенда Accelera

systemToken - Секрет для обмена данными с бекендом

Ставится на каждую страницу, где используется API Accelera

:bearded_person: Идентификация пользователя

Для передачи основных идентифицирующих данных пользователя приложения, а так же для добавления дополнительных данных о пользователе используется метод

Accelera.shared.setUserInfo(
    "{\"clientId\": \"123\", \"language\": \"KZ\", \"theme\": \"dark\"}"
)

В примере, мы указываем 2 обязательных параметра : clientId и language. Мы добавили опциональный параметр theme , который мы так же можем использовать для сегментации и персонализации.



Добавление контента на страницы приложения

Контент добавляется в блоки SwiftUI. Блоки (placeholder’ы) наполняются контентом согласно настроенным правилам и бизнес логике на стороне Accelera. Вам необходимо выбрать места, где будут демонстрироваться блоки контента такие как баннеры и сторис.

Блоки контента сопоставляются со слотами внутри платформы. 1 блок = 1 слот.

Хорошей практикой является создание и добавление мест для показа контента офферов с добавлением слотов в платформе.

SwiftUI

В SwiftUI можно использовать AcceleraAutoHeightPlaceholderWrapper, чтобы высота UIView-placeholder автоматически синхронизировалась с высотой загруженного контента и уменьшалась до 0, когда контент исчезает.

import SwiftUI
import UIKit
import Accelera // Для продукта Accelera
// import AcceleraBanners // Для продукта AcceleraBanners

struct HomeView: View {
    @State private var bannerPlaceholder: UIView?
    @State private var isBannerVisible = false

    var body: some View {
        VStack(spacing: 0) {
            AcceleraAutoHeightPlaceholderWrapper(
                onVisibilityChanged: { isBannerVisible = $0 }
            ) { placeholder in
                bannerPlaceholder = placeholder

                Accelera.shared.attachContentPlaceholder(
                    to: placeholder,
                    with: ["type": "banner"].asData
                )
            }
            .padding(.vertical, isBannerVisible ? 16 : 0)

            MainContentView()
        }
    }

    private func refreshBanner() {
        guard let bannerPlaceholder else { return }
        Accelera.shared.refreshContentPlaceholder(in: bannerPlaceholder)
    }

    private func detachBanner() {
        guard let bannerPlaceholder else { return }
        Accelera.shared.detachContentPlaceholder(from: bannerPlaceholder)
    }
}

refreshContentPlaceholder повторно загружает баннер с теми же параметрами, detachContentPlaceholder убирает его из контейнера.

Необязательный onVisibilityChanged позволяет добавлять внешние отступы только тогда, когда высота контента больше 0. Сам placeholder остаётся в иерархии и доступен для повторной загрузки.

ℹ️ Параметры метода **attachContentPlaceholder**

ПараметрТипОписание
toUIViewView-контейнер для отображения контента
withDataКонфигурация контента в формате JSON. Может содержать тип и параметры
🔸 Типы контента:
  • "stories" — сторис (горизонтальная лента историй, при клике можно открыть на полный экран)
  • "banner" — баннеры (статичный или карусель)
🔸 Данные из платформы (настраивается в интерфейсе):
  • "сhannel" — название канала
  • "slot" — название слота

Данные по каналу и слоту можно получить от пользователя платформы с экрана “Каналы”

🔹 Пример
Accelera.shared.attachContentPlaceholder(
    to: bannerPlaceholder,
    with: [
        "type": "banner",
        "channel": "main_screen",
        "slot":"main_page"
        
    ].asData
)

Конкретный набор параметров зависит от вашей серверной конфигурации и бизнес-логики.

Попапы

Попапы отображают полноэкранный динамический контент поверх текущего экрана.

Попап показывается сразу после активации метода Accelera.shared.showPopup() ! Его можно использовать по внутренним событиям внутри приложения, таким как возращение экрана в активный режим или нажатию на элементы приложений!

Обязательные параметры для Попапов

🔸 Данные из платформы (настраивается в интерфейсе):
  • "сhannel" — название канала
  • "slot" — название слота
Accelera.shared.showPopup(
    from: self,
    data: [
        "type": "popup",
        "slot": "main_popup",
        "channel":"dev"
    ].asData
)

Получение пуш-уведомлений

Для получения Пуш уведомлений, вам требуется

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

UNUserNotificationCenter.current().delegate = self

Подразумевается, что конфигурация уже выполнена

Передача событий о клике

Формат данных

{"deviceId":"416AC343-0EB2-40CC-8089-C6E63C697385","event":"clicked","context":{"message_id":"98f60cff-5d5e-4d1f-a5cd-0c076dc7bd53"}}




Реализовать UNUserNotificationCenterDelegate — извлечь message_id из userInfo
Передать message_id в setUserInfo

  1. Настроить Firebase (GoogleService-Info.plist, FirebaseApp.configure())
  2. Реализовать UNUserNotificationCenterDelegate — извлечь message_id из userInfo
  3. Передать message_id в setUserInfo

Пример

// UNUserNotificationCenterDelegate
func userNotificationCenter(_ center: UNUserNotificationCenter,
                            didReceive response: UNNotificationResponse,
                            withCompletionHandler completionHandler: @escaping () -> Void) {

    let userInfo = response.notification.request.content.userInfo

    if let messageId = userInfo["message_id"] as? String {
        let json = """
        {"deviceId":"\(UIDevice.current.identifierForVendor?.uuidString ?? "")","event":"clicked","context":{"message_id":"\(messageId)"}}
        """
        Accelera.shared.setUserInfo(json)
    }

    completionHandler()
}

Более подробно сложные случаи описаны на <https://github.com/cubesolutionsgit/accelera-ios-sdk-spm>

На этой странице