ITG delivers in-content overlay and pause ads directly on top of your video player -with no rebuild of your app's architecture. This page summarizes the integration path for each platform.


<aside>

Web & Smart TV (HTML5)


Supported environments: Chrome, Smart TVs (Samsung, LG, Hisense), web apps, Chromium 53+

Integration Steps

  1. Drop a <script> tag into your HTML
  2. Call init() with 4 parameters
<script id="inthegame-script" src="<https://html5.inthegame.io/v2-7/main.js>"></script>
window.inthegame.init({
  device: 'tv',           // 'web' | 'mobile' | 'tv'
  videoPlayerId: 'myVideoElement',
  accountId: 'YOUR_ACCOUNT_ID',
  channelSlug: 'YOUR_CHANNEL_SLUG'
});

๐Ÿš€ 2 steps to first ad impression.

๐Ÿ”— Full integration guide โ†’ | Live demo โ†’

</aside>


<aside>

Apple TV & iOS (Swift)

Supported environments: tvOS, iOS ยท AVPlayer, Kaltura, Bitmovin, Mediastream

Integration Steps

  1. Add Swift package in Xcode โ†’ https://github.com/Inthegamesdk/itg-apple-sdk.git
  2. Use Inthegametv (tvOS) or InthegametviOS (iOS)
  3. Wrap your player in ITGPlayerViewController -3 lines of code
let adapter = ITGAVPlayerAdapter(AVPlayer(), playerViewController: AVPlayerViewController())
let itgController = ITGPlayerViewController(channelSlug: "YOUR_CHANNEL_SLUG",
                                            accountId: "YOUR_ACCOUNT_ID",
                                            playerAdapter: adapter)
present(itgController, animated: true)

โšก 3 lines of Swift.

The ITGPlayerViewController wrapper handles all communication between your player and the ITG overlay automatically.

๐Ÿ”— Full integration guide โ†’

</aside>


<aside>

Android TV & Mobile (Kotlin)

Supported environments: Android TV, Fire TV, mobile ยท ExoPlayer, Media3, Bitmovin, Kaltura

Integration Steps

  1. Add the ITG Maven repository to settings.gradle
  2. Add the core dependency + your player adapter to build.gradle
  3. Initialize ITGPlaybackComponent and attach it to your player
// build.gradle
implementation 'io.inthegame.sdk:core:2.7.0.21'
implementation 'io.inthegame.sdk:media3:2.7.0.4'  // or exoplayer, bitmovin, kaltura
// In your Activity or Fragment
mITGComponent = ITGPlaybackComponent(this)
val adapter = ITGMedia3PlayerAdapter(playerView = playerViewInstance)
mITGComponent?.init(
    activity = this,
    playerAdapter = adapter,
    savedState = savedInstanceState,
    accountId = "YOUR_ACCOUNT_ID",
    channelSlug = "YOUR_CHANNEL_SLUG"
)
yourContainer.addView(mITGComponent, 0)

๐Ÿ”ง Adapters available for ExoPlayer, Media3, Bitmovin, and Kaltura.

Player adapters abstract all player-specific events -swap players without changing ITG integration code.

๐Ÿ”— Full integration guide โ†’

</aside>


<aside>

Roku (BrightScript)

Supported environments: Roku OS, SceneGraph

Integration Steps

  1. Load the ITG ComponentLibrary once at app startup
  2. Call initITGLibrary("channelSlug") on every channel change
' Step 1: Load at startup (once)
sub loadITGLibrary()
    m.componentLibrary = CreateObject("roSGNode", "ComponentLibrary")
    m.componentLibrary.uri = "https://link_to_itg_roku_library"
    m.componentLibrary.observeField("loadStatus", "onLoadStatusLibraryChanged")
end sub
' Step 2: Init per channel
initITGLibrary("YOUR_CHANNEL_SLUG")

๐Ÿ“ก 1 init call per channel.

Roku's ComponentLibrary model keeps ITG fully isolated from your app's SceneGraph -no conflicts with existing nodes.

๐Ÿ”— Full integration guide โ†’

</aside>


Need help? Contact your ITG integration engineer or reach out at [email protected]