Prism ARDocsGet the SDK
Ad FormatsOverlay Ads

Ad Formats

Overlay Ads

Standard IAB display and OTT-style video rendered inside native spatial UI surfaces. No new creative production required — your existing 2D assets run on day one.

How Overlay Ads Work

Overlay placements attach to visionOS windows or Android XR panels as floating surfaces. They render at a fixed position within your app's window group, composited by the OS so they respect depth and occlusion naturally. Creatives are fetched over HTTPS, cached locally, and rendered at full native resolution.

Display

Static or animated image, HTML5 banner, or rich media MRAID unit.

Video

Pre-roll, mid-roll, or companion video. VAST 4.x / VPAID compatible.

Rich Media

Expandable, interstitial, and rewarded units via MRAID 3.0.

Supported Ad Sizes

FormatDimensionsNotes
Banner728 × 90Horizontal bar at edge of window
MREC300 × 250Standard medium rectangle
Full Panel1920 × 1080Full window takeover
OTT Video16:9 anyPre-roll or mid-roll video

Adding an Overlay Placement

Create a Placement in the dashboard with type Overlay, then use the Placement ID in your app:

Swift (visionOS)
import PrismAR
import SwiftUI

struct MainWindow: View {
    var body: some View {
        ZStack(alignment: .bottom) {
            AppContent()

            PrismAdView(
                placementId: "YOUR_OVERLAY_PLACEMENT_ID",
                adSize: .banner  // .mrec, .fullPanel, .video
            )
            .padding(.bottom, 20)
        }
    }
}
Kotlin (Android XR)
import ai.prismar.sdk.PrismAdView
import ai.prismar.sdk.AdSize

@Composable
fun MainScreen() {
    Box {
        AppContent()

        PrismAdView(
            placementId = "YOUR_OVERLAY_PLACEMENT_ID",
            adSize = AdSize.BANNER, // MREC, FULL_PANEL, VIDEO
            modifier = Modifier
                .align(Alignment.BottomCenter)
                .padding(bottom = 20.dp)
        )
    }
}

Ad Lifecycle Events

Listen to ad events to handle load success/failure and track impressions in your own analytics:

Swift
PrismAdView(placementId: "YOUR_PLACEMENT_ID")
    .onAdLoaded { impression in
        print("Ad loaded: \(impression.id)")
    }
    .onAdFailed { error in
        print("Ad failed: \(error.localizedDescription)")
    }
    .onAdClicked {
        print("Ad clicked")
    }