# TruexAdRenderer Web Integration: Quick Guide This document describes the how to use Infillion's TrueX web ad renderer, a library that allows the presentation of interactive ads, intended for use in "Full Episode Player" (FEP) scenarios such as video web sites or applications. The library provides a class called the `TruexAdRenderer` (TAR). TAR supports running within any web content, specifically for desktop and mobile web content, as well as for the "Connected TV" (CTV) platforms, such as Smart TVs and game consoles, i.e. for the so-called "10 foot" experience. ## Setup The TrueX ad renderer is available as an `npm` module. For the typical web based development around a `package.json` project file, you add the TrueX dependency as follows: ```sh npm add @truex/ad-renderer ``` this will add an entry in the `"dependencies"` section in the `package.json` file, something like: ```json "dependencies": { "@truex/ad-renderer": "1.12.5", ``` You then build and run your web app like usual, e.g. invoking `npm start` for webpack-based projects. Alternatively, if you prefer you can refer to the TAR library directly in a script tag, e.g. ```html ``` or if you want to always refer to the latest version: ```html ``` ### Initialization Once a TrueX ad is detected, the renderer needs to be created and displayed. The following code snippet provides an example of the typical approach of integrating to TAR. For example, it shows how you can call the `init` and `start` methods to get the ad displayed, and to listen for the key ad events a client publisher needs to respond to, ultimately to control how to resume the main video. We refer to a `vastConfigUrl` in this snippet, which you should be pull out of the TrueX ad response in the ad schedule from your ad server / SSAI provider. ```javascript import { TruexAdRendererCTV } from '@truex/ad-renderer'; ... videoController.pause(); let adFreePod = false; const tar = new TruexAdRendererCTV(vastConfigUrl); // or TruexAdRendererDesktop or TruexAdRendererMobile, as appropriate tar.subscribe(handleAdEvent); const vastConfig = await tar.init(); let adOverlay = await tar.start(vastConfig); ... function handleAdEvent(event) { const adEvents = tar.adEvents; switch (event.type) { case adEvents.adFreePod: adFreePod = true; // the user did sufficient interaction for an ad credit break; case adEvents.adError: console.error('ad error: ' + event.errorMessage); resumePlayback(); break; case adEvents.noAdsAvailable: case adEvents.adCompleted: // Ad is not available, or has completed. Depending on the adFreePod flag, either the main // video or the ad fallback videos are resumed. resumePlayback(); break; } } function resumePlayback() { if (adFreePod) { // The user has the credit, resume the main video after the ad break. videoController.skipAdBreak(); videoController.resumeMainVideo(); } else { // Continue with playing the remaining fallback ad videos in the ad break. videoController.skipCurrentAd(); videoController.resumeAdBreak(); } } ``` ## Next Steps [TruexAdRenderer-Web Documentation](DOCS.md) outlines use of the ad renderer, including its API interface and the observable events it fires. ### Reference Apps Here is a [reference application example](https://github.com/socialvibe/truex-ctv-web-reference-app) that uses the `TruexAdRenderer`, demonstrating its use from a main video, as well as including several platform launcher projects that demonstrate how to sideload the reference application to various devices. 1. [Generic Reference App](https://github.com/socialvibe/truex-ctv-web-reference-app) * Presents a "Generic" CSAI style web app that uses the `TruexAdRenderer`, demonstrating its use from a main video, as well as including several platform launcher projects that demonstrate how to sideload the reference application to various devices. 1. [Google Ad Manager: Server-side Ad Insertion Reference App](https://github.com/socialvibe/truex-ctv-web-google-ad-manager-reference-app) 1. [Google Ad Manager: Client-side Ad Insertion Reference App](https://github.com/socialvibe/truex-ctv-google-ima-csai-ref-app)