1 Umumiy ma'lumot va API
OMNIBOX Android ilovalari uchun SDK-siz, yengil integratsiya usulini taqdim etadi. Barcha reklama so'rovlari oddiy GET so'rovi orqali amalga oshiriladi va reklamalar standart WebView yoki native video pleyerlar yordamida ko'rsatiladi.
Asosiy Endpoint
https://omnibox.digital/ads/direct
So'rov Parametrlari
| Parametr | Turi | Majburiy | Tavsif |
|---|---|---|---|
plc |
String | Ha | Placement ID (Menejerdan oling) |
w |
Int | Ha | Kenglik (px) |
h |
Int | Ha | Balandlik (px) |
cb |
Long | Ha | Cache Buster (Timestamp) |
t |
String | Shartli |
Bo'sh: WebView/HTMLapp: In-Stream Video (VAST)
|
2 Displey Reklama (Bannerlar)
Quyidagi "Asosiy Talablar" bajarilishi shart:
- JavaScript-ni yoqish
- Avto-ijroga ruxsat berish (video bannerlar uchun)
- Click-larning tashqi brauzerda ochilishini ta'minlash
Kotlin Implementation
val webView: WebView = findViewById(R.id.bannerWebView)
// 1. URL tuzish
val placementId = "android_banner_300x250"
val url = "https://omnibox.digital/ads/direct?plc=$placementId&w=300&h=250&cb=${System.currentTimeMillis()}"
// 2. WebView sozlash
webView.settings.apply {
javaScriptEnabled = true // MANDATORY
domStorageEnabled = true
mediaPlaybackRequiresUserGesture = false
}
webView.setBackgroundColor(0)
// 3. Click Handling
webView.webViewClient = object : WebViewClient() {
override fun shouldOverrideUrlLoading(view: WebView?, request: WebResourceRequest?): Boolean {
val link = request?.url.toString()
// If not an internal asset, open in browser
if (!link.contains("omnibox.digital")) {
val intent = Intent(Intent.ACTION_VIEW, Uri.parse(link))
view?.context?.startActivity(intent)
return true
}
return false
}
}
webView.loadUrl(url)
3 Interstitial Reklama
Muhim Eslatma
HTML WebView native Activity-ni yopa olmaydi. Siz WebView ustiga native "Yopish" (X) tugmasini joylashtirishingiz kerak.
FrameLayout (Parent)
├── WebView (Match Parent)
└── ImageButton (Close Button, Top-End aligned)
Implementation
class InterstitialActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_interstitial)
val webView: WebView = findViewById(R.id.interstitialWebView)
val closeBtn: View = findViewById(R.id.btnClose)
// Calculate screen size
val displayMetrics = resources.displayMetrics
val w = (displayMetrics.widthPixels / displayMetrics.density).toInt()
val h = (displayMetrics.heightPixels / displayMetrics.density).toInt()
val url = "https://omnibox.digital/ads/direct?plc=INTERSTITIAL_PLC&w=$w&h=$h&cb=${System.currentTimeMillis()}"
closeBtn.setOnClickListener {
finish()
}
// Same settings as Banner
webView.settings.javaScriptEnabled = true
webView.settings.mediaPlaybackRequiresUserGesture = false
webView.webViewClient = object : WebViewClient() {
override fun shouldOverrideUrlLoading(view: WebView?, request: WebResourceRequest?): Boolean {
val link = request?.url.toString()
if (!link.contains("omnibox.digital")) {
startActivity(Intent(Intent.ACTION_VIEW, Uri.parse(link)))
return true
}
return false
}
}
webView.loadUrl(url)
}
}
4 In-Stream Video (ExoPlayer)
Muhim: t=app
Reklama URL manzilida &t=app bo'lishi SHART. Bu
serverga VPAID (JS) ni chetlab o'tib, toza MP4 (VAST Wrapper) qaytarishni aytadi.
// 1. Ad URL (Note t=app)
val adTagUrl = "https://omnibox.digital/ads/direct?plc=video_preroll&w=1920&h=1080&t=app&cb=${System.currentTimeMillis()}"
// 2. MediaItem with Ads
val contentUri = Uri.parse("https://content.com/movie.mp4")
val mediaItem = MediaItem.Builder()
.setUri(contentUri)
.setAdsConfiguration(
MediaItem.AdsConfiguration.Builder(Uri.parse(adTagUrl)).build()
)
.build()
// 3. Initialize ExoPlayer with IMA
val player = ExoPlayer.Builder(context)
.setMediaSourceFactory(
DefaultMediaSourceFactory(context)
.setLocalAdInsertionComponents({ _ -> imaAdsLoader }, playerView)
)
.build()
player.setMediaItem(mediaItem)
player.prepare()
player.play()
5 In-Stream (Maxsus Pleyerlar)
Agar siz maxsus video engine (masalan, VLC, C++ Players) ishlatsangiz, qo'lda VAST parsing qilishingiz kerak.
Mantiqiy Ketma-ketlik
-
So'rov yuborish:
https://ia...&t=app(Wrapper rejimini yoqish uchun) -
Parsing:
- Agar
<Wrapper>:VASTAdTagURIni oling va qayta so'rov yuboring. - Agar
<InLine>:MediaFile(mp4) vaTrackingEventslarni oling.
- Agar
-
Tracking (Kuzatish):
- Video boshlanganda ->
ImpressionvastartURL-lariga so'rov yuboring. - Tugaganda ->
completeURL-lariga so'rov yuboring.
- Video boshlanganda ->