npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

@fnet/ima

v0.1.53

Published

This project, `@fnet/ima`, is designed to manage and display video advertisements on a web-based video player interface. It acts as a middleware layer that integrates Google's IMA (Interactive Media Ads) SDK to enable seamless advertisement playback in yo

Downloads

849

Readme

@fnet/ima

This project, @fnet/ima, is designed to manage and display video advertisements on a web-based video player interface. It acts as a middleware layer that integrates Google's IMA (Interactive Media Ads) SDK to enable seamless advertisement playback in your web applications.

How It Works

The primary function of @fnet/ima is to load and manage video ad content using Google's IMA SDK. It initializes ad resources, requests ads using VAST (Video Ad Serving Template) providers, and handles ad playback events and errors. When integrated into a web application, it facilitates a smooth ad experience by managing the various states and operations of video advertisements.

Key Features

  • Ad Display Management: Utilizes Google's IMA SDK to manage ad display containers and load ads effectively.
  • Event Handling: Provides an event-driven architecture to manage ad-related events like load, start, complete, error, and more.
  • Ad Interaction Controls: Offers controls to start, stop, pause, resume, and skip ads.
  • Responsive Resizing: Automatically adjusts ad display size when the window is resized or the player goes fullscreen.
  • Customizable VAST Providers: Supports integration with custom VAST providers for ad request configuration.

Conclusion

The @fnet/ima project provides a straightforward solution for integrating video advertisements using Google's IMA SDK in web applications. It simplifies ad management and enhances the user experience by efficiently handling ad lifecycle and playback events. Through its clear API and event-driven approach, it aids developers in creating interactive media environments with reliable ad support.

Developer Guide for @fnet/ima

Overview

The @fnet/ima library provides a streamlined integration with Google's Interactive Media Ads (IMA) SDK, allowing developers to easily manage video ads within their web applications. The main functionalities include initializing ad containers, loading and displaying ads, and controlling ad playback through a simple API. This guide will help you utilize the core components of the library to manage video advertisements effectively, ensuring a seamless ad experience in your applications.

Installation

To install the @fnet/ima library, you can use either npm or yarn. Here are the commands:

# Using npm
npm install @fnet/ima

# Using yarn
yarn add @fnet/ima

Usage

The following sections provide examples and explanations on how to implement the @fnet/ima library in your project.

Initialization

To start using the library, you first need to initialize it with the required configuration:

import imaLoader from '@fnet/ima';

async function setupIMA() {
  const config = {
    container: document.getElementById('ad-container'), // HTML container for ads
    player: document.getElementById('video-player'), // Video player element
    width: 640, // Optional: Ad container width
    height: 360, // Optional: Ad container height
    logger: console, // Optional: Logger for ad events
  };

  const imaHandler = await imaLoader(config);

  // Further interactions with imaHandler as shown in examples below
}

Requesting Ads

Once the imaHandler is initialized, you can request ads through the following method:

async function requestAd() {
  try {
    await imaHandler.requestAds();
    console.log('Ad requested successfully.');
  } catch (error) {
    console.error('Failed to request ad:', error);
  }
}

Controlling Ads

Use the following methods to control ad playback:

  • Start Ads: Begin ad playback after ads have been loaded.

    imaHandler.start();
  • Pause and Resume Ads:

    imaHandler.pause();
    imaHandler.resume();
  • Skip Ads:

    imaHandler.skip();
  • Stop Ads:

    imaHandler.stop();

Ad Event Handling

Listen to ad events to manage and respond to various ad lifecycle events:

imaHandler.on('adsManagerLoaded', () => {
  console.log('Ads Manager Loaded');
});

imaHandler.on('adStarted', () => {
  console.log('Ad Started');
});

imaHandler.on('adCompleted', () => {
  console.log('Ad Completed');
});

// Remove listeners when not needed
imaHandler.off('adStarted');

Examples

Below are some practical code examples to showcase using @fnet/ima.

Example: Basic Ad Integration

import imaLoader from '@fnet/ima';

async function setupIMA() {
  const config = { container: document.getElementById('ad-container'), player: document.getElementById('video-player') };
  const imaHandler = await imaLoader(config);

  imaHandler.on('adsManagerLoaded', () => console.log('Ads loaded'));

  try {
    await imaHandler.requestAds();
    imaHandler.start();
  } catch (error) {
    console.error('Ad request failed:', error);
  }
}

setupIMA();

Example: Advanced Ad Controls

async function advancedAdControl() {
  const config = { container: document.getElementById('ad-container'), player: document.getElementById('video-player') };
  const imaHandler = await imaLoader(config);
  
  await imaHandler.requestAds();

  if (await userWantsToSkip()) {
    imaHandler.skip();
  }

  window.addEventListener('resize', () => {
    imaHandler.resize(window.innerWidth, window.innerHeight);
  });
}

advancedAdControl();

Acknowledgement

This library utilizes Google's IMA SDK to manage and display video ads. Any contributions or collaborations from the broader developer community should be recognized per your project's specific guidelines.

Input Schema

$schema: https://json-schema.org/draft/2020-12/schema
type: object
properties:
  container:
    type: object
    description: The HTML container element for displaying ads.
  player:
    type: object
    description: The media player object used for playing ads.
  width:
    type: integer
    description: The width of the ad container.
  height:
    type: integer
    description: The height of the ad container.
  logger:
    type: object
    description: Logger object for handling log events.
required:
  - container
  - player