Skip to main content

DIVA Player analytics setup

What you learn

Learn how DIVA Player is used in the AXIS application and how to set up DIVA Player analytics plugins.

Before starting

  • Ensure your project is checked out in your local workspace.
  • Install all project dependencies.

Instantiation

DIVA Player allows you to set up two analytics plugins for tracking video analytics data: Conviva and Youbora.

Environment Variables

To configure Diva analytics plugins, ensure the following environment variables are set:

# Conviva related variables
CLIENT_CONVIVA_CUSTOMER_KEY=<customer_key>
CLIENT_CONVIVA_PLATFORM=Web
CLIENT_CONVIVA_DEBUG=true

# Youbora related variables
CLIENT_YOUBORA_ACCOUNT_CODE=<youbora_account_code>
CLIENT_YOUBORA_PLAYER_VERSION=5.2.0

DIVA Player Analytics Setup

The DivaPlayerStandard component prepares the analytics plugins and shares the setup with DIVA Player:

const { onMediaAnalytics: handleMediaAnalytics } = useMediaAnalytics({
isConvivaOn: !!config.convivaCustomerKey,
isYouboraOn: !!config.youboraAccountCode,
isAllowAnalyticsTracking: true,
});

The useMediaAnalytics hook handles both plugins:

export const useMediaAnalytics = ({ isConvivaOn, isYouboraOn, isAllowAnalyticsTracking }: Props) => {
useEffect(() => {
// Conviva plugin instantiation
}, [isConvivaOn, userName]);

useEffect(() => {
// Youbora plugin instantiation
}, [isYouboraOn, userName]);

const onMediaAnalytics = useCallback(
(event: MediaEvent | MediaTvEvent) => {
// Raise analytics events to plugins
},
[convivaPlugin, youboraPlugin]
);

return {
onMediaAnalytics
};
};

Conviva Plugin Configuration

Conviva plugin is distributed by the DIVA product team and can be configured as follows:

export const useMediaAnalytics = ({ isConvivaOn, isYouboraOn, isAllowAnalyticsTracking }: Props) => {
...
useEffect(() => {
const config = getConvivaConfig({
isConvivaOn,
convivaCustomerKey: moduleConfig.convivaCustomerKey,
divaVersion: DivaCommonSDK.getDivaVersion(),
isConvivaDebug: moduleConfig.convivaDebug,
convivaGatewayUrl: moduleConfig.convivaGatewayURl,
userName: userName
});

if (config) {
const plugin = new ConvivaPlugin();

plugin.init(config);
setConvivaPlugin(plugin);

return () => {
plugin.detachPlugin();
};
}

return undefined;
}, [isConvivaOn, userName]);

const onMediaAnalytics = useCallback(
(event: MediaEvent|MediaTvEvent) => {
if(isAllowAnalyticsTracking) {
if (convivaPlugin) {
convivaPlugin.handleEvent(event as unknown as ConvivaMediaEvent);
}
...
}
},
[convivaPlugin]
);

return {
onMediaAnalytics
};
};

Youbora Plugin Instantiation and Configuration

Similarly, the Youbora plugin can be instantiated and configured as follows:

export const useMediaAnalytics = ({ isConvivaOn, isYouboraOn, isAllowAnalyticsTracking }: Props) => {
...

useEffect(() => {
const config = getYouboraConfig({
isYouboraOn,
divaVersion: DivaCommonSDK.getDivaVersion(),
youboraAccountCode: moduleConfig.youboraAccountCode,
userName: userName
});

if (config) {
const plugin = new YouboraPlugin();

plugin.init(config);
setYouboraPlugin(plugin);

return () => {
plugin.detachPlugin();
};
}

return undefined;

}, [isYouboraOn, userName]);

const onMediaAnalytics = useCallback(
(event: MediaEvent|MediaTvEvent) => {
if(isAllowAnalyticsTracking) {
if (youboraPlugin) {
youboraPlugin.handleEvent(event as unknown as YouboraMediaEvent);
}
...
}
},
[youboraPlugin]
);

return {
onMediaAnalytics
};
};

Was this page helpful?