OMNIBOX Flutter SDK Dart · iOS · Android
Кроссплатформенная интеграция рекламы через Prebid Mobile SDK. Баннер и outstream-видео.
Скачать SDK
Архив iabox_prebid-flutter-sdk-1.0.0.zip — плагин, INTEGRATION.md и демо-приложение
Обзор
Руководство для партнёров по подключению IABox Prebid Flutter SDK (iOS + Android).
SDK — обёртка над Prebid Mobile SDK (iOS 3.3.0 / Android 3.3.1). Поддерживаются баннерная, interstitial и outstream-видео реклама в Standalone-режиме.
Dart API одинаковый на обеих платформах. Настройка нативного слоя отличается — см. разделы ниже.
Порядок интеграции
- Получить архив
iabox_prebid-flutter-sdk-1.0.0.zipот iaBox - Установка — добавить плагин в
pubspec.yaml,flutter pub get - Настройка Android / iOS — manifest, Info.plist,
pod install - Инициализация SDK —
IABoxPrebid.initialize()при запуске - Баннер или outstream —
IABoxBanner/IABoxOutstreamVideoпосле инициализации
На iOS перед инициализацией желательно запросить ATT-разрешение (см. Настройка iOS).
Что вы получаете
Архив iabox_prebid-flutter-sdk-1.0.0.zip. Внутри — папка iabox_prebid/ с плагином, инструкцией и демо.
Отдельно от менеджера iaBox: configId, accountId, при необходимости serverUrl (https://ia.box/ads/prebid).
iabox_prebid/
├── INTEGRATION.md
├── pubspec.yaml
├── lib/
├── android/
├── ios/
└── example/
import 'package:iabox_prebid/iabox_prebid.dart';
Требования
| Параметр | Android | iOS |
|---|---|---|
| Flutter | >= 3.16.0 | >= 3.16.0 |
| Dart | >= 3.0.0 | >= 3.0.0 |
| min OS | Android 6.0 (API 23) | iOS 14.0 |
| compileSdk / Xcode | compileSdk 34 | Xcode 15.0+ |
| Prebid SDK | prebid-mobile-sdk 3.3.1 | PrebidMobile 3.3.0 |
Установка
1. Распакуйте архив
Скопируйте папку iabox_prebid в проект, например в packages/iabox_prebid/.
2. Подключите зависимость
Вариант A — локальная папка (архив от iaBox):
3. Установите зависимости
Выполните flutter pub get. На iOS: cd ios && pod install.
4. Импортируйте
Доступны IABoxPrebid, IABoxBanner, IABoxOutstreamVideo.
5. Настройте платформу
См. разделы Android и iOS ниже.
dependencies:
flutter:
sdk: flutter
iabox_prebid:
path: packages/iabox_prebid
dependencies:
iabox_prebid:
git:
url: URL_FROM_IABOX
ref: v1.0.0
cd packages/iabox_prebid/example
flutter pub get
cd ios && pod install && cd ..
flutter run
Настройка Android
Добавьте разрешения, queries для Android 11+ и AdBrowserActivity в AndroidManifest.xml. Установите minSdk 23 в build.gradle.
android {
defaultConfig {
minSdk 23
targetSdk 34
}
}
android.useAndroidX=true
android.enableJetifier=true
Настройка iOS
После flutter pub get выполните pod install. Добавьте ATT и ATS в Info.plist. Запрашивайте ATT после появления UI.
На iOS баннерные креативы с adboxsdk.new.js рендерятся через WKWebView внутри плагина — дополнительный нативный код не нужен.
cd ios
pod install
cd ..
NSUserTrackingUsageDescription
This identifier will be used to deliver personalized ads to you.
NSAppTransportSecurity
NSAllowsArbitraryLoads
import 'package:app_tracking_transparency/app_tracking_transparency.dart';
Future requestATT() async {
final status = await AppTrackingTransparency.trackingAuthorizationStatus;
if (status == TrackingStatus.notDetermined) {
await AppTrackingTransparency.requestTrackingAuthorization();
}
}
Инициализация SDK
Вызывается один раз при запуске, до показа рекламы. Возвращает Future<bool>.
| Параметр | Тип | Обяз. | Описание |
|---|---|---|---|
accountId | String | ✅ | ID аккаунта (обычно Bundle ID) |
serverUrl | String | ✅ | URL Prebid Server |
timeoutMs | int | ❌ (10000) | Таймаут аукциона, мс |
shareGeoLocation | bool | ❌ (true) | Передавать геолокацию |
SDK инициализируется один раз. Ошибка/statusне критична — bid requests идут на/openrtb2/auction.
await IABoxPrebid.initialize(
accountId: 'YOUR_ACCOUNT_ID',
serverUrl: 'https://ia.box/ads/prebid',
timeoutMs: 10000,
shareGeoLocation: true,
);
Future _initAds() async {
final success = await IABoxPrebid.initialize(
accountId: 'YOUR_ACCOUNT_ID',
serverUrl: 'https://ia.box/ads/prebid',
timeoutMs: 10000,
shareGeoLocation: true,
);
setState(() => _isAdReady = success);
}
Outstream-видео
Outstream проигрывается внутри контента. Используйте IABoxOutstreamVideo — видео рендерит Prebid, отдельный плеер не нужен.
Android: добавьте AdBrowserActivity в манифест; поддерживаются onVideoCompleted и hideOnComplete.
iOS: onVideoCompleted / hideOnComplete не поддерживаются — уберите виджет вручную.
Не прячьте outstream в Offstage или контейнер с нулевой высотой при первом показе (Android).
IABoxOutstreamVideo(
configId: 'YOUR_VIDEO_CONFIG_ID',
width: 300,
height: 250,
protocols: const [2, 3, 4, 5],
hideOnComplete: true,
onAdLoaded: () {},
onAdFailed: () {},
onAdClicked: () {},
onVideoCompleted: () {},
)
Privacy / GDPR
Вызывайте setPrivacyConfig до загрузки рекламы. Поддержка IAB TCF v2 и GPP.
await IABoxPrebid.setPrivacyConfig(
tcfString: 'CPxxxxxxxxxxxxxxxxx',
gppString: 'DBABMA~CPxxxx',
gppSid: [7],
);
События и колбэки
Колбэки виджета: onAdLoaded, onAdFailed, onAdClicked, onVideoCompleted (только Android).
Глобальный поток: IABoxPrebid.events.listen(...) — onBannerLoaded, onBannerFailed, onVideoLoaded и др.
final sub = IABoxPrebid.events.listen((event) {
switch (event['method']) {
case 'onBannerLoaded':
break;
case 'onBannerFailed':
break;
case 'onVideoCompleted':
break;
}
});
Решение проблем
| Проблема | Решение |
|---|---|
initialize() вернул false | Проверьте serverUrl и accountId; увеличьте timeoutMs |
| Баннер не показывается | Убедитесь в успешной инициализации; проверьте configId |
| Пакет не найден | Добавьте path: в pubspec, flutter pub get |
| Android: клик не открывает браузер | Добавьте AdBrowserActivity в манифест |
| iOS: No module PrebidMobile | Выполните cd ios && pod install |
| deviceId из нулей | Пользователь не дал ATT — проверьте Info.plist |
Демо-приложение
Полный пример — каталог example/ в комплекте SDK.
| Плагин | Prebid iOS | Prebid Android |
|---|---|---|
| 1.0.0 | 3.3.0 | 3.3.1 |