Nielsen SDK Documentation


API Versions


API Version 5.1.0 (Current)


How to upgrade from pre-DCR to DCR?

To upgrade from pre-DCR to DCR, you need to setup the Xcode development environment and initialize the Nielsen App SDK object as mentioned here.

Should we call the play and stop methods whenever the user clicks on the pause/play button?

Yes. Call stop method and stop sending the playhead when the user clicks on pause button and when content resumes playback call play, loadMetadata and start sendID3 / playheadPosition.

Is playheadPosition needed for reporting on live streams?

Playhead position should be reported for both live streaming and VOD content streaming.

  • For VOD content (not live) playing, playhead position must be number of seconds from the beginning of the content. This includes ads.
  • For live content playing, playhead position must be the current UTC value.

How to handle the delay in HLS streams from the actual live stream (often by at least 30 seconds)?

This delay need not be considered since it will apply to all stream viewing instances.

What is ChannelName? Is it the value in the Nielsen MediaView dictionary, or is it a value that corresponds to television?

ChannelName is the name of the channel of the playing content (e.g., MTV, ESPN, etc.). It is a requirement for iOS and Android apps to inform App SDK that this channel/content is being played at player side. Refer to play API for more details.

How to send the Pause event in an Interactive radio station streams as it does not have a stop function?

Call Nielsen App SDK stop API to send a pause / stop event. Upon a station change,

For Events, what is the difference between play and loadMetadata?

When content starts playing, call play and loadMetadata APIs

  • play being called the first time since initialization or following a previous stop call prepares the SDK to measure content being played. Calling play consecutively does nothing.
  • loadMetadata allows the metadata to be changed during playback.

Is Nielsen SDK dependent on Ad Support Framework? Does Nielsen support mobile apps without ads?

No, it is not dependent. Nielsen SDK supports mobile apps without ads.

How does the Nielsen SDK manage ‘Limit Ad Tracking’?

The SDK does not utilize the ‘Limit Ad Tracking’ functionality to allow users to opt out; rather, Nielsen presents its own “Opt-Out”. The ‘Limit Ad Tracking’ functionality is meant to allow end users of the app to avoid targeted advertising. Continued use of the Identifiers For Advertising (IDFA) for the purpose of measurement is in accordance with Apple’s guidelines.

Can we always send stop, then play, loadMetadata and setPlayheadPosition() even if it is brief buffering, as there is no way to predict the buffering time?

For App SDK (iOS and Android), do not call stop and play APIs in that sequence. Always call play first and then call stop, as play starts a new viewing session and stop stops the viewing session.

  • For brief buffering on all platforms, do not call stop right away. Instead, stop sending the playheadPosition / setPlayheadPosition() during the buffer time and start the playheadPosition / setPlayheadPosition() once the playback resumes. If there is a mechanism to know if buffering is crossing 30 sec or longer, then try to call stop at that point.

Is there any debug facility to see if App SDK APIs are being called successfully?

Include nol_devDebug to the SDK initialization call to check whether App SDK API calls are successful.

NSDictionary* appInformation = @{

            @”appid”: appid,

            @”appversion”: appversion,

            @”appname”: appname,

            @”sfcode”: sfcode,

            @”nol_devDebug”: @”INFO”};

DO NOT activate the Debug flag in production environment.

What are the different interrupt scenarios app developer should take care of?

There are various interrupt scenarios which app developer should take care of
  • Pause / Play
  • Network loss (Wi-Fi / Airplane / Cellular)
  • Call Interrupt ( SIM or Third party Skype / Hangout call)
  • Alarm Interrupt
  • Content Buffering
  • Lock / Unlock device (Video players only)
  • App going Background / Foreground (Only video players without PIP mode support )
  • Channel / Station Change Scenario
  • Unplugging of headphone

What should a radio / audio app developer do during interrupt scenarios?

Radio / audio app developer must trigger / stop the API calls during interrupt scenarios, as mentioned in Interrupt Scenarios section.

What should a video app developer do during interrupt scenarios?

Video app developer must trigger / stop the API calls during interrupt scenarios, as mentioned in Interrupt Scenarios section.

Why does SDK throw a ‘selector not recognized’ exception while calling loadMetadata for iOS?

This is an issue with the Apple linker. For 64-bit and iPhone OS applications, a linker bug prevents -ObjC to load object files from the static libraries (that contain only categories and no classes). The methods when found missing at runtime results in ‘selector not recognized’ exception. To fix this issue, add the -all_load flag or -force_load flags to Other Linker Flags in build settings for their application target.

  • -all_load forces the linker to load all object files from every archive it sees, even those without Objective-C code.
  • -force_load allows finer grain control of archive loading and is available in Xcode 3.2 and later. Each -force_load option must be provided a path to an archive, and every object file in that archive will be loaded.

For more details please click here.

What is Adobe VHL Joint SDK?

Adobe VHL JointSDK is a collaboration between Adobe and Nielsen to measure video viewer-ship, app launches, app crashes, advertisements, page views, and more. Adobe VHL JointSDK allows clients to obtain video demographic and volumetric (quantity) data along with published Nielsen ratings.

We are currently using App SDK 3.2.1 (for iOS). What is the recommended way to switch to Adobe VHL Joint SDK without affecting our current implementation? (OR) How do I get tracking metrics for both Nielsen and Adobe?

Adobe VHL Joint SDK component bundle contains Nielsen App SDK 4.0.0 which is capable of measuring all Nielsen measurement products like mTVR / DTVR, Digital Audio / Radio and DAR measurements along with Digital Content Ratings (DCR).

Starting from Nielsen App SDK version 4.0.0, the SDK no longer uses shared instance and allows instantiating multiple instances of NielsenAppApi object and can be used simultaneously without any issues. Maximum of 4 SDK instances per appid are supported in the releases 4.0.0 and above.

Perform these steps to implement Adobe VHL Joint SDK.

We are currently using App SDK 4.0.0 (for iOS). What is the recommended way to switch to Adobe VHL Joint SDK without affecting our current implementation? (OR) How do we get tracking metrics for both Nielsen and Adobe?

Perform the following steps to implement Adobe VHL Joint SDK.

  • Remove the NielsenAppApi.framework from the existing project since the Adobe VHL Plugin already bundles the Nielsen SDK components.
  • Import the NielsenAppApi header file into the class in order to ensure access to all of the Nielsen methods.
    • Contact Nielsen Technical Account Manager (TAM) to get the latest Nielsen header file.
  • Implement new products using the Adobe VHL methods. This will keep the previous Nielsen integration intact and allows capturing both Nielsen and Adobe tracking Metrics.