<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://engineeringportal.nielsen.com/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=ShaneHartman</id>
	<title>Engineering Client Portal - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://engineeringportal.nielsen.com/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=ShaneHartman"/>
	<link rel="alternate" type="text/html" href="https://engineeringportal.nielsen.com/wiki/Special:Contributions/ShaneHartman"/>
	<updated>2026-04-04T17:18:05Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.39.5</generator>
	<entry>
		<id>https://engineeringportal.nielsen.com/w/index.php?title=loadMetadata&amp;diff=3491</id>
		<title>loadMetadata</title>
		<link rel="alternate" type="text/html" href="https://engineeringportal.nielsen.com/w/index.php?title=loadMetadata&amp;diff=3491"/>
		<updated>2019-03-03T16:45:03Z</updated>

		<summary type="html">&lt;p&gt;ShaneHartman: updated VCID key name to subbrand&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Breadcrumb|}} {{Breadcrumb|Digital}} {{Breadcrumb|iOS SDK API Reference}}  {{CurrentBreadcrumb}}&lt;br /&gt;
[[Category:Digital]]&lt;br /&gt;
[[Category:iOS SDK API Reference]]&lt;br /&gt;
The application uses this API to send metadata to the SDK. App constructs a JSON dictionary and calls loadMetadata. The API that accepts the JSON string has been deprecated.&lt;br /&gt;
&lt;br /&gt;
In case of a preroll ad, call loadMetadata with metadata values for content followed by loadMetadata with ad (preroll) metadata.&lt;br /&gt;
&lt;br /&gt;
== Syntax ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;objective-c&amp;quot;&amp;gt; &lt;br /&gt;
– (void)loadMetadata:(id)metadata;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Input Parameters ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Parameter !! Description !! JSON Object&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=10 | jsonMetaData&lt;br /&gt;
| '''DTVR'''&lt;br /&gt;
| &amp;lt;syntaxhighlight lang=&amp;quot;objective-c&amp;quot;&amp;gt; &lt;br /&gt;
NSDictionary *metadata = @&lt;br /&gt;
{&lt;br /&gt;
  @&amp;quot;adModel&amp;quot;: @&amp;quot;1&amp;quot;&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|'''DAR'''&lt;br /&gt;
type should always be “ad” for DAR&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;objective-c&amp;quot;&amp;gt; &lt;br /&gt;
NSDictionary *metadata = @&lt;br /&gt;
{&lt;br /&gt;
  @&amp;quot;type&amp;quot;: @&amp;quot;ad&amp;quot;,&lt;br /&gt;
  @&amp;quot;ocrtag&amp;quot;: @&amp;quot;http://secure-gl.imrworldwide.com/cgi-bin/m?ci= ENTXX5&amp;amp;am=3&amp;amp;ep=1&amp;amp;at=view&amp;amp;rt=banner&amp;amp;st=image&amp;amp;ca=cmp97144&amp;amp;cr=1186239&amp;amp;pc=3739659&amp;amp;r=2011370876&amp;quot;&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|'''Digital Audio'''&lt;br /&gt;
type should always be “radio”. See [[Digital Audio Metadata]].&lt;br /&gt;
| &amp;lt;syntaxhighlight lang=&amp;quot;objective-c&amp;quot;&amp;gt; &lt;br /&gt;
NSDictionary *metadata = @&lt;br /&gt;
{&lt;br /&gt;
  @&amp;quot;dataSrc&amp;quot;: @&amp;quot;cms&amp;quot;,&lt;br /&gt;
  @&amp;quot;type&amp;quot;: @&amp;quot;radio&amp;quot;,&lt;br /&gt;
  @&amp;quot;assetid&amp;quot;: @&amp;quot;WXYZ-FM&amp;quot;,&lt;br /&gt;
  @&amp;quot;stationType&amp;quot;: @&amp;quot;3&amp;quot;,&lt;br /&gt;
  @&amp;quot;provider&amp;quot;: @&amp;quot;MyRadioProvider&amp;quot;&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|'''DCR'''&lt;br /&gt;
type should be “content”, “static”, “preroll”, “midroll” or “postroll”.&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;objective-c&amp;quot;&amp;gt; &lt;br /&gt;
// Audio &amp;amp; Video Measurement:&lt;br /&gt;
NSDictionary *metadata = @&lt;br /&gt;
{&lt;br /&gt;
  @&amp;quot;type&amp;quot;: @&amp;quot;content&amp;quot;,&lt;br /&gt;
  @&amp;quot;assetid&amp;quot;: @&amp;quot;vid345-67483&amp;quot;,&lt;br /&gt;
  @&amp;quot;program&amp;quot;: @&amp;quot;ProgramName&amp;quot;,&lt;br /&gt;
  @&amp;quot;title&amp;quot;: @&amp;quot;Program S3, EP1&amp;quot;,&lt;br /&gt;
  @&amp;quot;length&amp;quot;: @&amp;quot;3600&amp;quot;,&lt;br /&gt;
  @&amp;quot;segB&amp;quot;: @&amp;quot;CustomSegmentValueB&amp;quot;,&lt;br /&gt;
  @&amp;quot;segC&amp;quot;: @&amp;quot;CustomSegmentValueC&amp;quot;,&lt;br /&gt;
  @&amp;quot;crossId1&amp;quot;: @&amp;quot;Reference11&amp;quot;,&lt;br /&gt;
  @&amp;quot;crossId2&amp;quot;: @&amp;quot;Reference22&amp;quot;,&lt;br /&gt;
  @&amp;quot;subbrand&amp;quot;: @&amp;quot;cXX&amp;quot;,&lt;br /&gt;
  @&amp;quot;isfullepisode&amp;quot;: @&amp;quot;y&amp;quot;,&lt;br /&gt;
  @&amp;quot;airdate&amp;quot;: @&amp;quot;20161013 20:00:00&amp;quot;,&lt;br /&gt;
  @&amp;quot;adloadtype&amp;quot;: @&amp;quot;2&amp;quot;&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;objective-c&amp;quot;&amp;gt; &lt;br /&gt;
// Static Measurement:&lt;br /&gt;
NSDictionary *metadata = @&lt;br /&gt;
{&lt;br /&gt;
  @&amp;quot;type&amp;quot;: @&amp;quot;static&amp;quot;,&lt;br /&gt;
  @&amp;quot;section&amp;quot;: @&amp;quot;siteSection&amp;quot;,&lt;br /&gt;
  @&amp;quot;segA&amp;quot;: @&amp;quot;segmentA&amp;quot;,&lt;br /&gt;
  @&amp;quot;segB&amp;quot;: @&amp;quot;segmentB&amp;quot;,&lt;br /&gt;
  @&amp;quot;segC&amp;quot;: @&amp;quot;segmentC&amp;quot;,&lt;br /&gt;
  @&amp;quot;crossId1&amp;quot;: @&amp;quot;Reference11&amp;quot;&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;objective-c&amp;quot;&amp;gt; &lt;br /&gt;
// Ad Measurement:&lt;br /&gt;
NSDictionary *metadata = @&lt;br /&gt;
{&lt;br /&gt;
  @&amp;quot;type&amp;quot;: @&amp;quot;preroll&amp;quot;,&lt;br /&gt;
  @&amp;quot;assetid&amp;quot;: @&amp;quot;AD361-84413&amp;quot;,&lt;br /&gt;
  @&amp;quot;title&amp;quot;: @&amp;quot;MyAdName&amp;quot;&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|'''DCR Germany'''&lt;br /&gt;
type should be &amp;quot;content&amp;quot;, &amp;quot;static&amp;quot;, &amp;quot;preroll&amp;quot;, &amp;quot;midroll&amp;quot; or &amp;quot;postroll&amp;quot;.&lt;br /&gt;
| &amp;lt;syntaxhighlight lang=&amp;quot;objective-c&amp;quot;&amp;gt; &lt;br /&gt;
NSURL *url = [NSURL URLWithString:@&amp;quot;http://nielsense-assets.s3.amazonaws.com/id3/001/prog_index.m3u8&amp;quot;];&lt;br /&gt;
NSDictionary *assetInfoDict = @&lt;br /&gt;
{&lt;br /&gt;
//SDK Metadata&lt;br /&gt;
  @&amp;quot;type&amp;quot;: @&amp;quot;content&amp;quot;,&lt;br /&gt;
  @&amp;quot;assetid&amp;quot;: @&amp;quot;vid345-67483&amp;quot;,&lt;br /&gt;
  @&amp;quot;program&amp;quot;: @&amp;quot;ProgramName&amp;quot;,&lt;br /&gt;
  @&amp;quot;title&amp;quot;: @&amp;quot;Program S3, EP1&amp;quot;,&lt;br /&gt;
  @&amp;quot;length&amp;quot;: @&amp;quot;3600&amp;quot;,&lt;br /&gt;
  @&amp;quot;segB&amp;quot;: @&amp;quot;CustomSegmentValueB&amp;quot;,&lt;br /&gt;
  @&amp;quot;segC&amp;quot;: @&amp;quot;CustomSegmentValueC&amp;quot;,&lt;br /&gt;
  @&amp;quot;crossId1&amp;quot;: @&amp;quot;Reference11&amp;quot;,&lt;br /&gt;
  @&amp;quot;crossId2&amp;quot;: @&amp;quot;Reference22&amp;quot;,&lt;br /&gt;
  @&amp;quot;subbrand&amp;quot;: @&amp;quot;cXX&amp;quot;,&lt;br /&gt;
  @&amp;quot;isfullepisode&amp;quot;: @&amp;quot;y&amp;quot;,&lt;br /&gt;
  @&amp;quot;airdate&amp;quot;: @&amp;quot;20161013 20:00:00&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
  //Custom Properties&lt;br /&gt;
  @&amp;quot;nol_c{number}&amp;quot;: @&amp;quot;p{Number},value&amp;quot;&lt;br /&gt;
};&lt;br /&gt;
[nielsenMeter loadMetadata:assetInfoDict];&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
//Ad Measurement:&lt;br /&gt;
//SDK Metadata&lt;br /&gt;
NSDictionary *assetInfoDict = @&lt;br /&gt;
{&lt;br /&gt;
  @&amp;quot;type&amp;quot;: @&amp;quot;preroll&amp;quot;,&lt;br /&gt;
  @&amp;quot;assetid&amp;quot;: @&amp;quot;AD361-84413&amp;quot;,&lt;br /&gt;
  @&amp;quot;title&amp;quot;: @&amp;quot;MyAdName&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
  //Custom Properties&lt;br /&gt;
  @&amp;quot;nol_c{number}&amp;quot;: @&amp;quot;p{Number},value&amp;quot;&lt;br /&gt;
};&lt;br /&gt;
[nielsenMeter loadMetadata:assetInfoDict];&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Output Parameters ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Output Parameters (Return value) !! Description&lt;br /&gt;
|-&lt;br /&gt;
| Void ||&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>ShaneHartman</name></author>
	</entry>
	<entry>
		<id>https://engineeringportal.nielsen.com/w/index.php?title=setPlayheadPosition_(Browser)&amp;diff=3109</id>
		<title>setPlayheadPosition (Browser)</title>
		<link rel="alternate" type="text/html" href="https://engineeringportal.nielsen.com/w/index.php?title=setPlayheadPosition_(Browser)&amp;diff=3109"/>
		<updated>2019-01-10T18:37:02Z</updated>

		<summary type="html">&lt;p&gt;ShaneHartman: updated input parameter to reflect spec for live playhead position&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Breadcrumb|}} {{Breadcrumb|Digital}} {{Breadcrumb|Browser SDK API Reference}} {{CurrentBreadcrumb}}&lt;br /&gt;
[[Category:Digital]]&lt;br /&gt;
[[Category:Browser SDK API Reference]]&lt;br /&gt;
For situations where CMS data is used in conjunction with Nielsen’s SDK, the application needs to call &amp;lt;code&amp;gt;setPlayheadPosition&amp;lt;/code&amp;gt; in the SDK every second. For proper reporting, the SDK should:&lt;br /&gt;
*Receive a playhead position update every second on the playback of content.&lt;br /&gt;
*Not receive playhead updates when the content playback is paused, is being buffered, or stopped.&lt;br /&gt;
'''When streaming VOD (Video On Demand)''', the playhead position is the current location of the player from the beginning of the asset in seconds (0, 1, 2, 3, …).&lt;br /&gt;
'''When streaming live content,''' the playhead position passed is the current Unix timestamp (seconds since Jan-1-1970 UTC).&lt;br /&gt;
'''For Digital Audio streaming Live or On Demand content,''' the playhead position passed is the current Unix timestamp (seconds since Jan-1-1970 UTC).&lt;br /&gt;
&lt;br /&gt;
== Syntax ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
ggPM('49', playheadposition); //For VA users only&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''International (Germany) implementation'''&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
ggPM(&amp;quot;setPlayheadPosition&amp;quot;, playheadposition); // Except VA users&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Input Parameters ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Parameter !! Description&lt;br /&gt;
|-&lt;br /&gt;
| event || setPlayheadPosition&lt;br /&gt;
|-&lt;br /&gt;
| playheadposition || An Integer value representing the time in content in seconds (VOD – Video On Demand) or the current Unix timestamp (seconds since Jan-1-1970 UTC) (live).&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Notes ==&lt;br /&gt;
The playhead position must be passed as an integer in parameter 2. Send the progress event to SDK at an interval not greater than 10 seconds, when the content is playing. An interval of one second is recommended for most implementations. For accurate time tracking, it is important to send the whole range of playhead positions from the player.&lt;br /&gt;
*If playing starts at zero, pass the first value as zero (not ‘one’).&lt;br /&gt;
*When the player is paused or stopped, send &amp;lt;code&amp;gt;setPlayheadPosition&amp;lt;/code&amp;gt; along with the respective [[stop (Browser)|stop]] / [[end (Browser)|end]] to the SDK.&lt;br /&gt;
&lt;br /&gt;
=== Video On Demand Content ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
ggPM(setPlayheadPosition, setPlayheadPosition);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Live Content through JavaScript ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
ggPM(setPlayheadPosition, (Date.now()/1000));&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Live Event through Flash ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
ggCom.getInstance().PM('setPlayheadPosition',Math.floor((new Date()).getTime()/1000));&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>ShaneHartman</name></author>
	</entry>
	<entry>
		<id>https://engineeringportal.nielsen.com/w/index.php?title=playheadPosition&amp;diff=3108</id>
		<title>playheadPosition</title>
		<link rel="alternate" type="text/html" href="https://engineeringportal.nielsen.com/w/index.php?title=playheadPosition&amp;diff=3108"/>
		<updated>2019-01-10T18:35:33Z</updated>

		<summary type="html">&lt;p&gt;ShaneHartman: updated input parameter to reflect spec for live playhead position&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Breadcrumb|}} {{Breadcrumb|Digital}} {{Breadcrumb|iOS SDK API Reference}}  {{CurrentBreadcrumb}}&lt;br /&gt;
[[Category:Digital]]&lt;br /&gt;
[[Category:iOS SDK API Reference]]&lt;br /&gt;
&lt;br /&gt;
For situations where CMS data is used in conjunction with Nielsen SDK the application needs to call the &amp;lt;code&amp;gt;playheadPosition&amp;lt;/code&amp;gt; in the SDK every one second until a pause / stop. The playhead position is the current location in seconds of the playhead from the beginning of the asset.&lt;br /&gt;
&lt;br /&gt;
== Syntax ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;objective-c&amp;quot;&amp;gt;&lt;br /&gt;
– (void) playheadPosition: (long long) playheadPos&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Sending playheadposition for content ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;objective-c&amp;quot;&amp;gt;&lt;br /&gt;
AVPlayer *player;&lt;br /&gt;
CMTime curTime=[player currentTime];&lt;br /&gt;
int pos = CMTimeGetSeconds(curTime);&lt;br /&gt;
[nAppApiObject playheadPosition:pos];&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Sending playheadposition for ad ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;objective-c&amp;quot;&amp;gt;&lt;br /&gt;
CMTime curTime=[adplayer currentTime];&lt;br /&gt;
long pos=CMTimeGetSeconds(curTime);&lt;br /&gt;
[nAppApiObject playheadPosition:pos];&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;'''Note:''' In case the individual ad details are not available, send ad pod (presence) details through the [[loadMetadata]] &amp;amp; playhead position and through &amp;lt;code&amp;gt;playheadPosition&amp;lt;/code&amp;gt;.&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Input Parameters ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Parameter !! Description&lt;br /&gt;
|-&lt;br /&gt;
| playheadPos || An Integer value representing the time in content in seconds  (VOD – Video On Demand) or the current Unix timestamp (seconds since Jan-1-1970 UTC) (live).&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Output Parameters ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Output Parameters (Return value) !! Description&lt;br /&gt;
|-&lt;br /&gt;
| Void ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Notes ==&lt;br /&gt;
The player application must send the value of the playhead to the SDK every one second. The player application can schedule a timer with a one-second-period in a timer event and send the playhead position.&lt;br /&gt;
&lt;br /&gt;
=== Buffering state ===&lt;br /&gt;
*Do not supply playhead position while the content is being buffered.&lt;br /&gt;
*If the content is in buffering state continuously for more than 30 seconds, call [[stop]] API.&lt;br /&gt;
&lt;br /&gt;
=== Live Content ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;objective-c&amp;quot;&amp;gt;&lt;br /&gt;
long long pos = [[NSDate date] timeIntervalSince1970];&lt;br /&gt;
[nAppApiObject playheadPosition:pos];&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== On-demand Content ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;objective-c&amp;quot;&amp;gt;&lt;br /&gt;
CMTime curTime=[player currentTime];&lt;br /&gt;
long pos=CMTimeGetSeconds(curTime);&lt;br /&gt;
[nAppApiObject playheadPosition:pos];&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Ad Content ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;objective-c&amp;quot;&amp;gt;&lt;br /&gt;
CMTime curTime=[adplayer currentTime];&lt;br /&gt;
long pos=CMTimeGetSeconds(curTime);&lt;br /&gt;
[nAppApiObject playheadPosition:pos];&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;'''Note:''' The playhead positions for ad and content should be maintained separately.&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&amp;lt;blockquote&amp;gt;'''Note:''' If playhead is not available from audio / video measurement, allow the app to start a timer (1-5 seconds) and send playhead position to SDK based on the timer event. Once the actual playhead is available, let the app send the proper playhead position. This allows the SDK to calculate and provide a closer value for duration.&amp;lt;/blockquote&amp;gt;&lt;/div&gt;</summary>
		<author><name>ShaneHartman</name></author>
	</entry>
	<entry>
		<id>https://engineeringportal.nielsen.com/w/index.php?title=Digital_Measurement_Metadata&amp;diff=2792</id>
		<title>Digital Measurement Metadata</title>
		<link rel="alternate" type="text/html" href="https://engineeringportal.nielsen.com/w/index.php?title=Digital_Measurement_Metadata&amp;diff=2792"/>
		<updated>2018-06-05T20:18:10Z</updated>

		<summary type="html">&lt;p&gt;ShaneHartman: Added decimal and trailing zero to length parameter&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Breadcrumb|}} {{Breadcrumb|Digital}} {{Breadcrumb|DCR &amp;amp; DTVR}}  {{CurrentBreadcrumb}}&lt;br /&gt;
[[Category:Digital]]&lt;br /&gt;
&lt;br /&gt;
The metadata received for each asset is used for classification and reporting. There are reserved Nielsen keys for collecting the required metadata.&lt;br /&gt;
&lt;br /&gt;
=== Reserved Keys ===&lt;br /&gt;
Content and Ad Metadata can be passed through key-values using the Nielsen reserved keys. The last column in the table below indicates metadata parameters that will be displayed in reporting.&lt;br /&gt;
&lt;br /&gt;
==== Content Metadata ====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Key&lt;br /&gt;
! Description&lt;br /&gt;
! style=&amp;quot;width: 14%;&amp;quot; | Values&lt;br /&gt;
! style=&amp;quot;width: 12%;&amp;quot; | Required for Audio/Video?&lt;br /&gt;
! style=&amp;quot;width: 12%;&amp;quot; | Required for Static (page)?&lt;br /&gt;
! Reported for&lt;br /&gt;
|-&lt;br /&gt;
| clientid || Brand value is automatically populated through the App ID provided. The value passed here will override the default value. (e.g. Multiple brands in App) || custom || Optional || Optional || Audio / Video and Static Measurement&lt;br /&gt;
|-&lt;br /&gt;
| subbrand || VCID value is automatically populated through the App ID provided. This value passed here will override the default value. (e.g. Multiple Sub-brands in App) || custom || Optional || Optional || Audio / Video and Static Measurement&lt;br /&gt;
|-&lt;br /&gt;
| type ||&lt;br /&gt;
Type of measurement:&lt;br /&gt;
*audio / video – &amp;quot;content&amp;quot;&lt;br /&gt;
*page – &amp;quot;static&amp;quot;&lt;br /&gt;
*ad – &amp;quot;preroll&amp;quot;, &amp;quot;midroll&amp;quot; or &amp;quot;postroll&amp;quot;&lt;br /&gt;
|| &amp;quot;content&amp;quot;, &amp;quot;static&amp;quot; || Mandatory || Mandatory || &lt;br /&gt;
|-&lt;br /&gt;
| assetid || ID assigned to content. Must be unique across all content at the episode level. || custom&amp;lt;br&amp;gt;(no [[Special Characters]]) || Mandatory || Not Required || &lt;br /&gt;
|-&lt;br /&gt;
| section || Section of site || custom || Not Required || Mandatory || &lt;br /&gt;
|-&lt;br /&gt;
| isfullepisode || Full episode flag ||&lt;br /&gt;
*&amp;quot;y&amp;quot; or &amp;quot;lf&amp;quot; - full episode&lt;br /&gt;
*&amp;quot;n&amp;quot; or &amp;quot;sf&amp;quot; - short form&lt;br /&gt;
|| Mandatory || Not Required ||&lt;br /&gt;
|-&lt;br /&gt;
| program || Program name || custom || Mandatory || Not Required || Audio / Video Measurement&lt;br /&gt;
|-&lt;br /&gt;
| title || Episode title || custom || Mandatory || Not Required || Audio / Video Measurement&lt;br /&gt;
|-&lt;br /&gt;
| length || Length of content in seconds for VOD. 86400 may be used for Live content if the exact content length is not known.  || custom || Mandatory || Not Required ||&lt;br /&gt;
|-&lt;br /&gt;
| segA || Segment A (this is not available for audio / video Measurement reporting as the episode title is reported) || custom || Not Required || Not Required || Static Measurement&lt;br /&gt;
|-&lt;br /&gt;
| segB || Segment B || custom || Not Required || Not Required || Audio / Video and Static Measurement&lt;br /&gt;
|-&lt;br /&gt;
| segC || Segment C || custom || Not Required || Not Required || Audio / Video and Static Measurement&lt;br /&gt;
|-&lt;br /&gt;
| crossId1 || Standard episode ID. Gracenote/TMS ID should be used when available. Must be unique per episode. || custom || Optional || Not Required ||&lt;br /&gt;
|-&lt;br /&gt;
| crossId2 || Content originator (required only for distributors) || custom || Optional || Not Required ||&lt;br /&gt;
|-&lt;br /&gt;
| airdate || Original (local) air date and time (Eastern Time for US) || YYYYMMDD HH24:MI:SS || Mandatory || Not Required ||&lt;br /&gt;
|-&lt;br /&gt;
| pipmode ||&lt;br /&gt;
Current state of picture-in-picture (PIP) mode on device.&lt;br /&gt;
*&amp;quot;true&amp;quot; if audio / video measurement is displayed in PIP mode&lt;br /&gt;
*&amp;quot;false&amp;quot; if audio / video measurement is displayed in regular mode&lt;br /&gt;
|| &amp;quot;true&amp;quot;, &amp;quot;false&amp;quot; || Optional || Not Required || Audio / Video Measurement&lt;br /&gt;
|-&lt;br /&gt;
| adloadtype ||&lt;br /&gt;
Type of ad load:&lt;br /&gt;
#Linear - matches TV ad load&lt;br /&gt;
#Dynamic - Dynamic Ad Insertion (DAI)&lt;br /&gt;
|| &amp;quot;1&amp;quot; - Linear&lt;br /&gt;
&amp;quot;2&amp;quot; - Dynamic&lt;br /&gt;
|| Mandatory || Not Required ||&lt;br /&gt;
|-&lt;br /&gt;
| progen || Genre (required only for non-TV originated content). See [[DCR OTT Genre List]] for acceptable values. || e.g. DD for Daytime Drama || Required for non-TV content || Not Required&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
'''clientid &amp;amp; subbrand (vcid)'''&lt;br /&gt;
By default, clientid and subbrand are setup in Nielsen backend configuration to capture brand and sub-brand information. The fields get populated from backend for a registered client appid. But if an app contains multiple brands and sub-brands and client is willing to give credit to another brand or sub-brand then :&lt;br /&gt;
*Client app developer can override the clientid and subbrand (brand and sub-brand info.) in [[loadMetadata]] call to get a proper measurement for a desired brand and sub-brand.&lt;br /&gt;
**If no clientid and subbrand are specified in CMS of a content and an ad, default values reported in the Configuration will be reported.&lt;br /&gt;
**If clientid and subbrand are specified in CMS of the content or ad, the most recent clientid and subbrand will be reported in subsequent pings. To report with a different clientid and subbrand, include the new values for the keys in their subsequent [[loadMetadata]] call.&lt;br /&gt;
'''Picture-in-picture (PIP) mode'''&lt;br /&gt;
Once the app detects PIP mode, call [[loadMetadata]] with the same set of assetids, values and with one additional parameter &amp;quot;pipmode&amp;quot;: &amp;quot;true&amp;quot;. Once PIP mode is disabled in the device, call [[loadMetadata]] again with &amp;quot;pipmode&amp;quot;:&amp;quot;false&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
==== Custom Variables Extension ====&lt;br /&gt;
Contact Nielsen Technical Account Manager (TAM) to configure any custom variables, as needed for implementing the application.&lt;br /&gt;
&lt;br /&gt;
See [[Custom Variables Extension]] for more information.&lt;br /&gt;
&lt;br /&gt;
==== Advertisement Metadata ====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Key !! Description !! Values !! Required for Audio / Video? !! Required for Static (page)&lt;br /&gt;
|-&lt;br /&gt;
| type || Type of ad || &amp;quot;preroll&amp;quot;&lt;br /&gt;
&amp;quot;midroll&amp;quot;&lt;br /&gt;
&amp;quot;postroll&amp;quot; &lt;br /&gt;
|| Mandatory || Not Required&lt;br /&gt;
|-&lt;br /&gt;
| assetid || An ID assigned to the advertisement. Can be an internal ID, an ID provided by the ad server, or a randomly generated ID. Must be unique across all ads || custom || Mandatory || Not Required&lt;br /&gt;
|-&lt;br /&gt;
| title || Title of the advertisement || &amp;quot;MyAdName&amp;quot; || Mandatory || Not Required&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Passing Metadata ===&lt;br /&gt;
The required metadata can be passed as key values through the loadMetadata method. The sample code below shows a metadata objects for various assets.&lt;br /&gt;
'''Audio / Video Measurement Asset'''&lt;br /&gt;
Type should be &amp;quot;content&amp;quot;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;json&amp;quot;&amp;gt;    {&lt;br /&gt;
       &amp;quot;type&amp;quot;: &amp;quot;content&amp;quot;,&lt;br /&gt;
       &amp;quot;assetName&amp;quot;: &amp;quot;myassetName&amp;quot;,&lt;br /&gt;
       &amp;quot;length&amp;quot;: &amp;quot;300.0&amp;quot;,&lt;br /&gt;
       &amp;quot;title&amp;quot;: &amp;quot;myTitle&amp;quot;,&lt;br /&gt;
       &amp;quot;program&amp;quot;: &amp;quot;myProgram&amp;quot;,&lt;br /&gt;
       &amp;quot;censuscategory&amp;quot;: &amp;quot;myCensusCategory&amp;quot;,&lt;br /&gt;
       &amp;quot;assetid&amp;quot;: &amp;quot;myAssetId&amp;quot;,&lt;br /&gt;
       &amp;quot;channelName&amp;quot;: &amp;quot;myChannel&amp;quot;,&lt;br /&gt;
       &amp;quot;adloadtype&amp;quot;: &amp;quot;2&amp;quot;,&lt;br /&gt;
       &amp;quot;segB&amp;quot;: &amp;quot;segmentB&amp;quot;,&lt;br /&gt;
       &amp;quot;segC&amp;quot;: &amp;quot;segmentC&amp;quot;,&lt;br /&gt;
       &amp;quot;isfullepisode&amp;quot;:&amp;quot;y&amp;quot;,&lt;br /&gt;
       &amp;quot;crossId1&amp;quot;: &amp;quot;Reference11&amp;quot;,&lt;br /&gt;
       &amp;quot;crossId2&amp;quot;: &amp;quot;Reference22&amp;quot;,&lt;br /&gt;
       &amp;quot;airdate&amp;quot;: &amp;quot;20161013 20:00:00&amp;quot;&lt;br /&gt;
    }&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Static (Page) Measurement Asset'''&lt;br /&gt;
Type should be &amp;quot;static&amp;quot;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;json&amp;quot;&amp;gt;    {&lt;br /&gt;
       &amp;quot;type&amp;quot;: &amp;quot;static&amp;quot;,&lt;br /&gt;
       &amp;quot;assetid&amp;quot;: &amp;quot;static123&amp;quot;,&lt;br /&gt;
       &amp;quot;assetName&amp;quot;: &amp;quot;Page-Asset&amp;quot;,&lt;br /&gt;
       &amp;quot;section&amp;quot;: &amp;quot;siteSection&amp;quot;,&lt;br /&gt;
       &amp;quot;segA&amp;quot;: &amp;quot;segmentA&amp;quot;,&lt;br /&gt;
       &amp;quot;segB&amp;quot;: &amp;quot;segmentB&amp;quot;,&lt;br /&gt;
       &amp;quot;segC&amp;quot;: &amp;quot;segmentC&amp;quot;&lt;br /&gt;
    }&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''For any of the ad types'''&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;json&amp;quot;&amp;gt;    {&lt;br /&gt;
        &amp;quot;type&amp;quot;: &amp;quot;midroll&amp;quot;,&lt;br /&gt;
        &amp;quot;length&amp;quot;: &amp;quot;30.0&amp;quot;,&lt;br /&gt;
        &amp;quot;assetid&amp;quot;: &amp;quot;myMidrollAssetId&amp;quot;,&lt;br /&gt;
        &amp;quot;adloadtype&amp;quot;: &amp;quot;2&amp;quot;,&lt;br /&gt;
        &amp;quot;tv&amp;quot;: &amp;quot;true&amp;quot;,&lt;br /&gt;
        &amp;quot;dataSrc&amp;quot;: &amp;quot;cms&amp;quot;&lt;br /&gt;
    }&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;blockquote&amp;gt;'''Note''': In case the individual ad details are not available, send ad pod (presence) details through the &amp;lt;code&amp;gt;loadMetadata&amp;lt;/code&amp;gt; and playhead position through &amp;lt;code&amp;gt;setPlayheadPosition&amp;lt;/code&amp;gt;.&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''loadMetadata'''&lt;br /&gt;
The object can then be passed when calling [[loadMetadata]].&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;    loadMetadata(jsonMetadataObject);&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>ShaneHartman</name></author>
	</entry>
	<entry>
		<id>https://engineeringportal.nielsen.com/w/index.php?title=Digital_Measurement_Metadata&amp;diff=2788</id>
		<title>Digital Measurement Metadata</title>
		<link rel="alternate" type="text/html" href="https://engineeringportal.nielsen.com/w/index.php?title=Digital_Measurement_Metadata&amp;diff=2788"/>
		<updated>2018-05-30T17:54:37Z</updated>

		<summary type="html">&lt;p&gt;ShaneHartman: changed key for VCID to subbrand as this is the default name&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Breadcrumb|}} {{Breadcrumb|Digital}} {{Breadcrumb|DCR &amp;amp; DTVR}}  {{CurrentBreadcrumb}}&lt;br /&gt;
[[Category:Digital]]&lt;br /&gt;
&lt;br /&gt;
The metadata received for each asset is used for classification and reporting. There are reserved Nielsen keys for collecting the required metadata.&lt;br /&gt;
&lt;br /&gt;
=== Reserved Keys ===&lt;br /&gt;
Content and Ad Metadata can be passed through key-values using the Nielsen reserved keys. The last column in the table below indicates metadata parameters that will be displayed in reporting.&lt;br /&gt;
&lt;br /&gt;
==== Content Metadata ====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Key&lt;br /&gt;
! Description&lt;br /&gt;
! style=&amp;quot;width: 14%;&amp;quot; | Values&lt;br /&gt;
! style=&amp;quot;width: 12%;&amp;quot; | Required for Audio/Video?&lt;br /&gt;
! style=&amp;quot;width: 12%;&amp;quot; | Required for Static (page)?&lt;br /&gt;
! Reported for&lt;br /&gt;
|-&lt;br /&gt;
| clientid || Brand value is automatically populated through the App ID provided. The value passed here will override the default value. (e.g. Multiple brands in App) || custom || Optional || Optional || Audio / Video and Static Measurement&lt;br /&gt;
|-&lt;br /&gt;
| subbrand || VCID value is automatically populated through the App ID provided. This value passed here will override the default value. (e.g. Multiple Sub-brands in App) || custom || Optional || Optional || Audio / Video and Static Measurement&lt;br /&gt;
|-&lt;br /&gt;
| type ||&lt;br /&gt;
Type of measurement:&lt;br /&gt;
*audio / video – &amp;quot;content&amp;quot;&lt;br /&gt;
*page – &amp;quot;static&amp;quot;&lt;br /&gt;
*ad – &amp;quot;preroll&amp;quot;, &amp;quot;midroll&amp;quot; or &amp;quot;postroll&amp;quot;&lt;br /&gt;
|| &amp;quot;content&amp;quot;, &amp;quot;static&amp;quot; || Mandatory || Mandatory || &lt;br /&gt;
|-&lt;br /&gt;
| assetid || ID assigned to content. Must be unique across all content at the episode level. || custom&amp;lt;br&amp;gt;(no [[Special Characters]]) || Mandatory || Not Required || &lt;br /&gt;
|-&lt;br /&gt;
| section || Section of site || custom || Not Required || Mandatory || &lt;br /&gt;
|-&lt;br /&gt;
| isfullepisode || Full episode flag ||&lt;br /&gt;
*&amp;quot;y&amp;quot; or &amp;quot;lf&amp;quot; - full episode&lt;br /&gt;
*&amp;quot;n&amp;quot; or &amp;quot;sf&amp;quot; - short form&lt;br /&gt;
|| Mandatory || Not Required ||&lt;br /&gt;
|-&lt;br /&gt;
| program || Program name || custom || Mandatory || Not Required || Audio / Video Measurement&lt;br /&gt;
|-&lt;br /&gt;
| title || Episode title || custom || Mandatory || Not Required || Audio / Video Measurement&lt;br /&gt;
|-&lt;br /&gt;
| length || Length of content in seconds for VOD. 86400 may be used for Live content if the exact content length is not known.  || custom || Mandatory || Not Required ||&lt;br /&gt;
|-&lt;br /&gt;
| segA || Segment A (this is not available for audio / video Measurement reporting as the episode title is reported) || custom || Not Required || Not Required || Static Measurement&lt;br /&gt;
|-&lt;br /&gt;
| segB || Segment B || custom || Not Required || Not Required || Audio / Video and Static Measurement&lt;br /&gt;
|-&lt;br /&gt;
| segC || Segment C || custom || Not Required || Not Required || Audio / Video and Static Measurement&lt;br /&gt;
|-&lt;br /&gt;
| crossId1 || Standard episode ID. Gracenote/TMS ID should be used when available. Must be unique per episode. || custom || Optional || Not Required ||&lt;br /&gt;
|-&lt;br /&gt;
| crossId2 || Content originator (required only for distributors) || custom || Optional || Not Required ||&lt;br /&gt;
|-&lt;br /&gt;
| airdate || Original (local) air date and time (Eastern Time for US) || YYYYMMDD HH24:MI:SS || Mandatory || Not Required ||&lt;br /&gt;
|-&lt;br /&gt;
| pipmode ||&lt;br /&gt;
Current state of picture-in-picture (PIP) mode on device.&lt;br /&gt;
*&amp;quot;true&amp;quot; if audio / video measurement is displayed in PIP mode&lt;br /&gt;
*&amp;quot;false&amp;quot; if audio / video measurement is displayed in regular mode&lt;br /&gt;
|| &amp;quot;true&amp;quot;, &amp;quot;false&amp;quot; || Optional || Not Required || Audio / Video Measurement&lt;br /&gt;
|-&lt;br /&gt;
| adloadtype ||&lt;br /&gt;
Type of ad load:&lt;br /&gt;
#Linear - matches TV ad load&lt;br /&gt;
#Dynamic - Dynamic Ad Insertion (DAI)&lt;br /&gt;
|| &amp;quot;1&amp;quot; - Linear&lt;br /&gt;
&amp;quot;2&amp;quot; - Dynamic&lt;br /&gt;
|| Mandatory || Not Required ||&lt;br /&gt;
|-&lt;br /&gt;
| progen || Genre (required only for non-TV originated content). See [[DCR OTT Genre List]] for acceptable values. || e.g. DD for Daytime Drama || Required for non-TV content || Not Required&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
'''clientid &amp;amp; subbrand (vcid)'''&lt;br /&gt;
By default, clientid and subbrand are setup in Nielsen backend configuration to capture brand and sub-brand information. The fields get populated from backend for a registered client appid. But if an app contains multiple brands and sub-brands and client is willing to give credit to another brand or sub-brand then :&lt;br /&gt;
*Client app developer can override the clientid and subbrand (brand and sub-brand info.) in [[loadMetadata]] call to get a proper measurement for a desired brand and sub-brand.&lt;br /&gt;
**If no clientid and subbrand are specified in CMS of a content and an ad, default values reported in the Configuration will be reported.&lt;br /&gt;
**If clientid and subbrand are specified in CMS of the content or ad, the most recent clientid and subbrand will be reported in subsequent pings. To report with a different clientid and subbrand, include the new values for the keys in their subsequent [[loadMetadata]] call.&lt;br /&gt;
'''Picture-in-picture (PIP) mode'''&lt;br /&gt;
Once the app detects PIP mode, call [[loadMetadata]] with the same set of assetids, values and with one additional parameter &amp;quot;pipmode&amp;quot;: &amp;quot;true&amp;quot;. Once PIP mode is disabled in the device, call [[loadMetadata]] again with &amp;quot;pipmode&amp;quot;:&amp;quot;false&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
==== Custom Variables Extension ====&lt;br /&gt;
Contact Nielsen Technical Account Manager (TAM) to configure any custom variables, as needed for implementing the application.&lt;br /&gt;
&lt;br /&gt;
See [[Custom Variables Extension]] for more information.&lt;br /&gt;
&lt;br /&gt;
==== Advertisement Metadata ====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Key !! Description !! Values !! Required for Audio / Video? !! Required for Static (page)&lt;br /&gt;
|-&lt;br /&gt;
| type || Type of ad || &amp;quot;preroll&amp;quot;&lt;br /&gt;
&amp;quot;midroll&amp;quot;&lt;br /&gt;
&amp;quot;postroll&amp;quot; &lt;br /&gt;
|| Mandatory || Not Required&lt;br /&gt;
|-&lt;br /&gt;
| assetid || An ID assigned to the advertisement. Can be an internal ID, an ID provided by the ad server, or a randomly generated ID. Must be unique across all ads || custom || Mandatory || Not Required&lt;br /&gt;
|-&lt;br /&gt;
| title || Title of the advertisement || &amp;quot;MyAdName&amp;quot; || Mandatory || Not Required&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Passing Metadata ===&lt;br /&gt;
The required metadata can be passed as key values through the loadMetadata method. The sample code below shows a metadata objects for various assets.&lt;br /&gt;
'''Audio / Video Measurement Asset'''&lt;br /&gt;
Type should be &amp;quot;content&amp;quot;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;json&amp;quot;&amp;gt;    {&lt;br /&gt;
       &amp;quot;type&amp;quot;: &amp;quot;content&amp;quot;,&lt;br /&gt;
       &amp;quot;assetName&amp;quot;: &amp;quot;myassetName&amp;quot;,&lt;br /&gt;
       &amp;quot;length&amp;quot;: &amp;quot;300&amp;quot;,&lt;br /&gt;
       &amp;quot;title&amp;quot;: &amp;quot;myTitle&amp;quot;,&lt;br /&gt;
       &amp;quot;program&amp;quot;: &amp;quot;myProgram&amp;quot;,&lt;br /&gt;
       &amp;quot;censuscategory&amp;quot;: &amp;quot;myCensusCategory&amp;quot;,&lt;br /&gt;
       &amp;quot;assetid&amp;quot;: &amp;quot;myAssetId&amp;quot;,&lt;br /&gt;
       &amp;quot;channelName&amp;quot;: &amp;quot;myChannel&amp;quot;,&lt;br /&gt;
       &amp;quot;adloadtype&amp;quot;: &amp;quot;2&amp;quot;,&lt;br /&gt;
       &amp;quot;segB&amp;quot;: &amp;quot;segmentB&amp;quot;,&lt;br /&gt;
       &amp;quot;segC&amp;quot;: &amp;quot;segmentC&amp;quot;,&lt;br /&gt;
       &amp;quot;isfullepisode&amp;quot;:&amp;quot;y&amp;quot;,&lt;br /&gt;
       &amp;quot;crossId1&amp;quot;: &amp;quot;Reference11&amp;quot;,&lt;br /&gt;
       &amp;quot;crossId2&amp;quot;: &amp;quot;Reference22&amp;quot;,&lt;br /&gt;
       &amp;quot;airdate&amp;quot;: &amp;quot;20161013 20:00:00&amp;quot;&lt;br /&gt;
    }&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Static (Page) Measurement Asset'''&lt;br /&gt;
Type should be &amp;quot;static&amp;quot;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;json&amp;quot;&amp;gt;    {&lt;br /&gt;
       &amp;quot;type&amp;quot;: &amp;quot;static&amp;quot;,&lt;br /&gt;
       &amp;quot;assetid&amp;quot;: &amp;quot;static123&amp;quot;,&lt;br /&gt;
       &amp;quot;assetName&amp;quot;: &amp;quot;Page-Asset&amp;quot;,&lt;br /&gt;
       &amp;quot;section&amp;quot;: &amp;quot;siteSection&amp;quot;,&lt;br /&gt;
       &amp;quot;segA&amp;quot;: &amp;quot;segmentA&amp;quot;,&lt;br /&gt;
       &amp;quot;segB&amp;quot;: &amp;quot;segmentB&amp;quot;,&lt;br /&gt;
       &amp;quot;segC&amp;quot;: &amp;quot;segmentC&amp;quot;&lt;br /&gt;
    }&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''For any of the ad types'''&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;json&amp;quot;&amp;gt;    {&lt;br /&gt;
        &amp;quot;type&amp;quot;: &amp;quot;midroll&amp;quot;,&lt;br /&gt;
        &amp;quot;length&amp;quot;: &amp;quot;30&amp;quot;,&lt;br /&gt;
        &amp;quot;assetid&amp;quot;: &amp;quot;myMidrollAssetId&amp;quot;,&lt;br /&gt;
        &amp;quot;adloadtype&amp;quot;: &amp;quot;2&amp;quot;,&lt;br /&gt;
        &amp;quot;tv&amp;quot;: &amp;quot;true&amp;quot;,&lt;br /&gt;
        &amp;quot;dataSrc&amp;quot;: &amp;quot;cms&amp;quot;&lt;br /&gt;
    }&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;blockquote&amp;gt;'''Note''': In case the individual ad details are not available, send ad pod (presence) details through the &amp;lt;code&amp;gt;loadMetadata&amp;lt;/code&amp;gt; and playhead position through &amp;lt;code&amp;gt;setPlayheadPosition&amp;lt;/code&amp;gt;.&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''loadMetadata'''&lt;br /&gt;
The object can then be passed when calling [[loadMetadata]].&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;    loadMetadata(jsonMetadataObject);&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>ShaneHartman</name></author>
	</entry>
	<entry>
		<id>https://engineeringportal.nielsen.com/w/index.php?title=Digital_Measurement_Testing&amp;diff=2759</id>
		<title>Digital Measurement Testing</title>
		<link rel="alternate" type="text/html" href="https://engineeringportal.nielsen.com/w/index.php?title=Digital_Measurement_Testing&amp;diff=2759"/>
		<updated>2018-05-18T14:48:50Z</updated>

		<summary type="html">&lt;p&gt;ShaneHartman: Moved user agent check out of header into numbered list&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Breadcrumb|}} {{Breadcrumb|Digital}} {{Breadcrumb|DCR &amp;amp; DTVR}}  {{CurrentBreadcrumb}}&lt;br /&gt;
[[Category:Digital]]&lt;br /&gt;
&lt;br /&gt;
== Monitoring Tools ==&lt;br /&gt;
HTTP traffic-monitoring tool, such as Charles or Fiddler are required.&lt;br /&gt;
*'''Charles:''' http://www.charlesproxy.com&lt;br /&gt;
*'''Fiddler:''' http://www.telerik.com/fiddler&lt;br /&gt;
&lt;br /&gt;
== Step 1: Filter traffic ==&lt;br /&gt;
Filter HTTP traffic with the string &amp;quot;imr&amp;quot; to capture traffic from the SDK as shown in the below figure. This will capture traffic going to Nielsen servers. Now set up the device to proxy to this traffic analyzer.&lt;br /&gt;
&amp;lt;blockquote&amp;gt;'''Note:''' Instructions may vary from device to device and are available online.&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
[[File:fiddler-web-debugger.png|link=]]&lt;br /&gt;
&lt;br /&gt;
== Step 2: Verify User Agent ==&lt;br /&gt;
Verify that your user agent is not being flagged as bot traffic. &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Device Atlas User Agent Tester'''&amp;lt;br /&amp;gt;&lt;br /&gt;
Copy your application's user agent string to your clipboard and input it into the [https://deviceatlas.com/device-data/user-agent-tester Device Atlas User Agent Tester]. If your user agent is designated as a bot, you will see a value of '''&amp;quot;''true''&amp;quot;''' associated with the '''''Is Robot''''' property in the user agent search results.&lt;br /&gt;
&lt;br /&gt;
'''Configuring User Agent '''&amp;lt;br /&amp;gt;&lt;br /&gt;
You will need to override the default value set in the user agent header request field if it's flagged as a bot. Request traffic originating from some third party HTTP clients is designated as bot traffic. To change the user agent, change the value of the User Agent Request header as indicated below:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;    Request request = new Request.Builder()&lt;br /&gt;
    .url(&amp;quot;[api endpoint request url string]&amp;quot;)&lt;br /&gt;
    .header(&amp;quot;User-Agent&amp;quot;, &amp;quot;Custom User Agent&amp;quot;)&lt;br /&gt;
    .build();&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Step 3: Check Opt-Out ==&lt;br /&gt;
If the opt-out function or app disable feature is previously tested, it has to be ensured that an opt-in is completed on the device before continuing. Terminate the app completely before starting.&lt;br /&gt;
&lt;br /&gt;
== Step 4: Hello Ping ==&lt;br /&gt;
The first HTTPS traffic that should be seen is the SDK request for configuration information, called a '''hello ping'''. In order to see this ping, Charles / Fiddler has to be configured to capture HTTPS traffic.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;https://secure-dcr.imrworldwide.com/cgi-bin/cfg?cfgv=100&amp;amp;longitude=-82.66&amp;amp;latitude=28.05&amp;amp;apid=&amp;amp;apv=3.84.043&amp;amp;apn=com.video.videop&lt;br /&gt;
layer&amp;amp;sdkv=aa .1.2.3&amp;amp;nuid=7B341CD-5109-B88-B77D-8ADE904717A7&amp;amp;osver=ANDROID.4.2.2&amp;amp;devtypid=LGE-Nexus-4&amp;amp;devid=FFA503E7-&lt;br /&gt;
7749-4448-9922-132492ED4E12&amp;amp;fmt=json&amp;amp;adf=&amp;amp;uoo=&amp;amp;sfcode=dcr&amp;amp;ccode=1&amp;amp;dma=&amp;amp;rnd=1527112029&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;blockquote&amp;gt;'''Note:''' If this ping fails to fire, it is likely that the instance of the SDK failed to initialize. Please see Initialization ([[iOS SDK API Reference#Initialization|iOS SDK API Reference - Initialization]] and [[Android SDK API Reference#Initialization|Android SDK API Reference - Initialization]]) to see how to initialize the SDK.&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Step 5: The L Ping ==&lt;br /&gt;
When the app is started after installing for the first time, and app is measuring '''DCR Static''' content only, a DCR static app launch known as '''L''' ping firing to secure-dcr.imrworldwide.com server in the traffic-monitor should be seen. However, the '''L''' ping will be observed again if app goes into background and resumes back after 5 minutes.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;http://secure-dcr.imrworldwide.com&amp;lt;/nowiki&amp;gt;/cgi-bin/gn?prd=dcr&amp;lt;wbr /&amp;gt;&amp;amp;ci=APRP7&amp;lt;wbr /&amp;gt;&amp;amp;ch=APRP7_NA_defChnAsset&amp;lt;wbr /&amp;gt;&amp;amp;asn=defChnAsset&amp;lt;wbr /&amp;gt;&amp;amp;tl=&amp;lt;wbr /&amp;gt;&amp;amp;c6=vc,NA&amp;lt;wbr /&amp;gt;&amp;amp;c13=asid,XXXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX&amp;lt;wbr /&amp;gt;&amp;amp;c32=segA,&amp;lt;wbr /&amp;gt;&amp;amp;c33=segB,&amp;lt;wbr /&amp;gt;&amp;amp;c34=segC,&amp;lt;wbr /&amp;gt;&amp;amp;c15=apn,MTVR-APT-QA&amp;lt;wbr /&amp;gt;&amp;amp;sup=0&amp;lt;wbr /&amp;gt;&amp;amp;segment2=539&amp;lt;wbr /&amp;gt;&amp;amp;segment1=usa&amp;lt;wbr /&amp;gt;&amp;amp;forward=1&amp;lt;wbr /&amp;gt;&amp;amp;ad=1&amp;lt;wbr /&amp;gt;&amp;amp;cr=L&amp;lt;wbr /&amp;gt;&amp;amp;c9=devid,a69983bc65ad94f9e57109fec68cc847bf59575ee03cadb76b187f4c24eaf793&amp;lt;wbr /&amp;gt;&amp;amp;enc=true&amp;lt;wbr /&amp;gt;&amp;amp;c1=nuid,142a40706f9c03bfea020f7297828534a1f14895d7a8c5303d9b8a19b3337c13&amp;lt;wbr /&amp;gt;&amp;amp;r=&amp;lt;wbr /&amp;gt;&amp;amp;at=launch&amp;lt;wbr /&amp;gt;&amp;amp;rt=text&amp;lt;wbr /&amp;gt;&amp;amp;c16=sdkv ,aa.4.0.0&amp;lt;wbr /&amp;gt;&amp;amp;c27=cln,473&amp;lt;wbr /&amp;gt;&amp;amp;crs=0&amp;lt;wbr /&amp;gt;&amp;amp;si=&amp;lt;wbr /&amp;gt;&amp;amp;lat=28.09&amp;lt;wbr /&amp;gt;&amp;amp;lon=-82.76&amp;lt;wbr /&amp;gt;&amp;amp;c29=plid,XXXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX&amp;lt;wbr /&amp;gt;&amp;amp;c30=bldv,aa.4.0.0.3&amp;lt;wbr /&amp;gt;&amp;amp;st=dcr&amp;lt;wbr /&amp;gt;&amp;amp;c7=osgrp,DROID&amp;lt;wbr /&amp;gt;&amp;amp;c8=devgrp,TAB&amp;lt;wbr /&amp;gt;&amp;amp;c10=plt,MBL&amp;lt;wbr /&amp;gt;&amp;amp;c40=adbid,&amp;lt;wbr /&amp;gt;&amp;amp;c14=osver,ANDROID.4.4.4&amp;lt;wbr /&amp;gt;&amp;amp;c26=1&amp;lt;wbr /&amp;gt;&amp;amp;c35=&amp;lt;wbr /&amp;gt;&amp;amp;c36=cref1,&amp;lt;wbr /&amp;gt;&amp;amp;c37=cref2,&amp;lt;wbr /&amp;gt;&amp;amp;c11=agg,1&amp;lt;wbr /&amp;gt;&amp;amp;c12=apv,apt.4.0.0.3&amp;lt;wbr /&amp;gt;&amp;amp;h33=2&amp;lt;wbr /&amp;gt;&amp;amp;c51=adl,0&amp;lt;wbr /&amp;gt;&amp;amp;c52=noad,0&amp;lt;wbr /&amp;gt;&amp;amp;devtypid=asus-Nexus-7&amp;lt;wbr /&amp;gt;&amp;amp;rnd=1432529128693&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If the app is measuring '''DCR Video Content''' only, then the '''hello ping''' will fire but the '''L''' ping will not be observed upon app launch.&lt;br /&gt;
&lt;br /&gt;
== Step 6: Static View Ping ==&lt;br /&gt;
For any sections that are tagged for static content, a '''DCR Static – view''' ping should be received. The first landing page should always be tagged. An example of this ping is:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;http://secure-dcr.imrworldwide.com&amp;lt;/nowiki&amp;gt;/cgi-bin/gn?prd=dcr&amp;lt;wbr /&amp;gt;&amp;amp;ci=APRP7&amp;lt;wbr /&amp;gt;&amp;amp;ch=APRP7_NA_defChnAsset&amp;lt;wbr /&amp;gt;&amp;amp;asn=defChnAsset&amp;lt;wbr /&amp;gt;&amp;amp;tl=&amp;lt;wbr /&amp;gt;&amp;amp;c6=vc,NA&amp;lt;wbr /&amp;gt;&amp;amp;c13=asid,XXXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX&amp;lt;wbr /&amp;gt;&amp;amp;c32=segA,&amp;lt;wbr /&amp;gt;&amp;amp;c33=segB,&amp;lt;wbr /&amp;gt;&amp;amp;c34=segC,&amp;lt;wbr /&amp;gt;&amp;amp;c15=apn,MTVR-APT-QA&amp;lt;wbr /&amp;gt;&amp;amp;sup=0&amp;lt;wbr /&amp;gt;&amp;amp;segment2=539&amp;lt;wbr /&amp;gt;&amp;amp;segment1=usa&amp;lt;wbr /&amp;gt;&amp;amp;forward=1&amp;lt;wbr /&amp;gt;&amp;amp;ad=1&amp;lt;wbr /&amp;gt;&amp;amp;cr=V&amp;lt;wbr /&amp;gt;&amp;amp;c9=devid,a69983bc65ad94f9e57109fec68cc847bf59575ee03cadb76b187f4c24eaf793&amp;lt;wbr /&amp;gt;&amp;amp;enc=true&amp;lt;wbr /&amp;gt;&amp;amp;c1=nuid,142a40706f9c03bfea020f7297828534a1f14895d7a8c5303d9b8a19b3337c13&amp;lt;wbr /&amp;gt;&amp;amp;r=&amp;lt;wbr /&amp;gt;&amp;amp;at=view&amp;lt;wbr /&amp;gt;&amp;amp;rt=text&amp;lt;wbr /&amp;gt;&amp;amp;c16=sdkv,a a.4.0.0&amp;lt;wbr /&amp;gt;&amp;amp;c27=cln,0&amp;lt;wbr /&amp;gt;&amp;amp;crs=0&amp;lt;wbr /&amp;gt;&amp;amp;si=&amp;lt;wbr /&amp;gt;&amp;amp;lat=&amp;lt;wbr /&amp;gt;&amp;amp;lon=&amp;lt;wbr /&amp;gt;&amp;amp;c29=plid,XXXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX&amp;lt;wbr /&amp;gt;&amp;amp;c30=bldv,aa.4.0.0.1&amp;lt;wbr /&amp;gt;&amp;amp;st=dcr&amp;lt;wbr /&amp;gt;&amp;amp;c7=osgrp,DROID&amp;lt;wbr /&amp;gt;&amp;amp;c8=devgrp,TAB&amp;lt;wbr /&amp;gt;&amp;amp;c10=plt,MBL&amp;lt;wbr /&amp;gt;&amp;amp;c40=adbid,&amp;lt;wbr /&amp;gt;&amp;amp;c14=osver,ANDROID.4.4.4&amp;lt;wbr /&amp;gt;&amp;amp;c26=1&amp;lt;wbr /&amp;gt;&amp;amp;c35=&amp;lt;wbr /&amp;gt;&amp;amp;c36=cref1,&amp;lt;wbr /&amp;gt;&amp;amp;c37=cref2,&amp;lt;wbr /&amp;gt;&amp;amp;c11=agg,1&amp;lt;wbr /&amp;gt;&amp;amp;c12=apv,apt.4.0.0.2&amp;lt;wbr /&amp;gt;&amp;amp;h33=2&amp;lt;wbr /&amp;gt;&amp;amp;c51=adl,0&amp;lt;wbr /&amp;gt;&amp;amp;c52=noad,0&amp;lt;wbr /&amp;gt;&amp;amp;devtypid=asus-Nexus-7&amp;lt;wbr /&amp;gt;&amp;amp;rnd=1432068181560&amp;lt;/code&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Parameter !! Description !! Example&lt;br /&gt;
|-&lt;br /&gt;
| ci || Client ID – this value should be consistent throughout all of the pings that fire for the implementation. || us-123456&lt;br /&gt;
|-&lt;br /&gt;
| asn || Asset Name – this value should represent the asset’s name assigned in the metadata. || Page-Asset&lt;br /&gt;
|-&lt;br /&gt;
| at || Action Type || Start&lt;br /&gt;
|-&lt;br /&gt;
| rt || This value should be “text” and indicates that this is a DCR tag for static content. || text&lt;br /&gt;
|-&lt;br /&gt;
| c13 || This value should contain the appid of the application. || asid,XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX&lt;br /&gt;
|-&lt;br /&gt;
| c32 || Segment A – Client customized metadata || CustomSegmentValueA&lt;br /&gt;
|-&lt;br /&gt;
| c33 || Segment B – Client customized metadata || CustomSegmentValueB&lt;br /&gt;
|-&lt;br /&gt;
| c34 || Segment C – Client customized metadata || CustomSegmentValueC&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Step 7: Video View Ping ==&lt;br /&gt;
Approximately 60 seconds into viewing of the stream, a '''DCR Video – view''' ping fire to secure-dcr.imrworldwide.com server indicated by the '''cr''' value containing a '''V''' in the format of 4_00_99_'''V'''1_00000 should be seen.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Parameter !! Description !! Example&lt;br /&gt;
|-&lt;br /&gt;
| ci || Client ID – this value should be consistent throughout all of the pings that fire for the implementation. || us-123456&lt;br /&gt;
|-&lt;br /&gt;
| asn || Asset Name – this value should represent asset’s name assigned in the metadata. || Video-Asset&lt;br /&gt;
|-&lt;br /&gt;
| tl || Episode Title || Episode Name – S2 – E1 – LF&lt;br /&gt;
|-&lt;br /&gt;
| c13 || This value should contain the appid of the application. || asid,XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX&lt;br /&gt;
|-&lt;br /&gt;
| cr || Crediting Ping Identifier || 4_00_99_V1_00000&lt;br /&gt;
|-&lt;br /&gt;
| rt || This Value should be “video” and indicates that this is a DCR tag for video content. || video&lt;br /&gt;
|-&lt;br /&gt;
| c10 || Platform Indicator || plt,DSK or plt,MBL&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;blockquote&amp;gt;'''Note:''' If this ping fails to fire, a common cause is improper metadata being passed to the SDK. Examples of the proper metadata to be passed in the &amp;lt;/code&amp;gt;loadMetadata&amp;lt;/code&amp;gt;&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Step 8: Video Duration Ping ==&lt;br /&gt;
The first duration ping is fired after 5 minutes of content is viewed. A '''DCR Video''' – duration ping fire to secure-dcr.imrworldwide.com indicated by the '''cr''' value containing a '''D''' in the format of 4_00_99_'''D'''1_11111 should be seen. This D ping should fire approximately every 5 minutes after the initial duration ping has fired or when the content switches to an advertisement. The ad length (c51) is the total ad duration viewed in the previous session, and the ad count (c52) is the number of ads viewed in previous segment.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Parameter !! Description !! Example&lt;br /&gt;
|-&lt;br /&gt;
| ci || Client ID – this value should be consistent throughout all of the pings that fire for the implementation. || us-123456&lt;br /&gt;
|-&lt;br /&gt;
| asn || Asset Name – this value should represent asset’s name assigned in the metadata. || Video-Asset&lt;br /&gt;
|-&lt;br /&gt;
| tl || Episode Title || Episode Name – S2 – E1 – LF&lt;br /&gt;
|-&lt;br /&gt;
| cr || Crediting Ping Identifier || 4_00_99_V1_00000&lt;br /&gt;
|-&lt;br /&gt;
| rt || This Value should be “video” and indicates that this is a DCR tag for video content. || video&lt;br /&gt;
|-&lt;br /&gt;
| c10 || Platform Indicator || plt,DSK or plt,MBL&lt;br /&gt;
|-&lt;br /&gt;
| c13 || This value should contain the appid of the application. || asid,XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX&lt;br /&gt;
|-&lt;br /&gt;
| c51 || Ad Duration || adl,88&lt;br /&gt;
|-&lt;br /&gt;
| c52 || Ad Count || noad,1&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;blockquote&amp;gt;'''Note:''' If this ping fails to fire, it may be caused by not passing the setPlayheadPosition API call as expected. The instruction as well as examples can be found in the Developer’s Guide.&amp;lt;/code&amp;gt;&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Step 9: 5min Duration Ping ==&lt;br /&gt;
View all channels for 5 minutes to ensure all channels fire a '''duration''' ping.&lt;br /&gt;
&lt;br /&gt;
== Step 10: Pending Duration Ping ==&lt;br /&gt;
Play a stream and move the app to the background. A pending '''duration''' ping should fire; crediting the appropriate number of minutes viewed from last ping (i.e. 4_00_99_D1_'''111'''00). No other pings should fire after it has been moved to the background. In case SDK does not get a chance to send out the ping while going to background, SDK will send the pending ping on next re-launch.&lt;br /&gt;
&lt;br /&gt;
== Step 11: Pending Duration Pings cont. ==&lt;br /&gt;
The same action will occur with any interruption to the stream’s playback (e.g., alarm, incoming call, etc.).&lt;br /&gt;
&lt;br /&gt;
== Step 12: Opt-Out Implementation ==&lt;br /&gt;
Test the Opt-Out implementation in four steps.&lt;br /&gt;
*Complete an opt-out in the app through the Nielsen opt-out webview.&lt;br /&gt;
*User opt-out, a '''goodbye ping''' is fired off to the Nielsen server. '''Example Goodbye Ping''':&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;http://secure-dcr.imrworldwide.com&amp;lt;/nowiki&amp;gt;/cgi-bin/cfg?cfgv=200&amp;lt;wbr /&amp;gt;&amp;amp;longitude=&amp;lt;wbr /&amp;gt;&amp;amp;latitude=&amp;lt;wbr /&amp;gt;&amp;amp;apid=&amp;lt;wbr /&amp;gt;&amp;amp;apv=01.00.00&amp;lt;wbr /&amp;gt;&amp;amp;apn=Nielsen%2520sample&amp;lt;wbr /&amp;gt;&amp;amp;sdkv=aa.4.0.0&amp;lt;wbr /&amp;gt;&amp;amp;bldv=aa.4.0.0.4&amp;lt;wbr /&amp;gt;&amp;amp;nuid=00b5926fea1807638ebfe6f04af6a455c5d9b2a1ed3e39f550f44daa39d0886d&amp;lt;wbr /&amp;gt;&amp;amp;osver=ANDROID.4.4.4&amp;lt;wbr /&amp;gt;&amp;amp;devtypid=samsung-SAMSUNG-SM-N910A&amp;lt;wbr /&amp;gt;&amp;amp;devid=42ec6a26b000ccd34015ba8625ee29cd283190a8c00f1622f356e900bb5b2a23&amp;lt;wbr /&amp;gt;&amp;amp;enc=true&amp;lt;wbr /&amp;gt;&amp;amp;tz=-14400&amp;lt;wbr /&amp;gt;&amp;amp;fmt=json&amp;lt;wbr /&amp;gt;&amp;amp;adf=&amp;lt;wbr /&amp;gt;&amp;amp;uoo=true&amp;lt;wbr /&amp;gt;&amp;amp;sfcode=dcr&amp;lt;wbr /&amp;gt;&amp;amp;ccode=&amp;lt;wbr /&amp;gt;&amp;amp;dma=539&amp;lt;wbr /&amp;gt;&amp;amp;rnd=1434632964945&amp;lt;/code&amp;gt;&lt;br /&gt;
*Watch any content (static or video) for at least three minutes. No pings will be rendered.&lt;br /&gt;
*Opt back in, a '''hello ping''' is fired off to the Nielsen server. ''Example Hello Ping'':&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;http://secure-dcr.imrworldwide.com&amp;lt;/nowiki&amp;gt;/cgi-bin/cfg?cfgv=200&amp;lt;wbr /&amp;gt;&amp;amp;longitude=-82.65&amp;lt;wbr /&amp;gt;&amp;amp;latitude=28.05&amp;lt;wbr /&amp;gt;&amp;amp;apid=&amp;lt;wbr /&amp;gt;&amp;amp;apv=01.00.00&amp;lt;wbr /&amp;gt;&amp;amp;apn=Nielsen%2520sample&amp;lt;wbr /&amp;gt;&amp;amp;sdkv=aa.4.0.0&amp;lt;wbr /&amp;gt;&amp;amp;bldv=aa.4.0.0.4&amp;lt;wbr /&amp;gt;&amp;amp;nuid=00b5926fea1807638ebfe6f04af6a455c5d9b2a1ed3e39f550f44daa39d0886d&amp;lt;wbr /&amp;gt;&amp;amp;osver=ANDROID.4.4.4&amp;lt;wbr /&amp;gt;&amp;amp;devtypid=samsung-SAMSUNG-SM-N910A&amp;lt;wbr /&amp;gt;&amp;amp;devid=42ec6a26b000ccd34015ba8625ee29cd283190a8c00f1622f356e900bb5b2a23&amp;lt;wbr /&amp;gt;&amp;amp;enc=true&amp;lt;wbr /&amp;gt;&amp;amp;tz=-14400&amp;lt;wbr /&amp;gt;&amp;amp;fmt=json&amp;lt;wbr /&amp;gt;&amp;amp;adf=&amp;lt;wbr /&amp;gt;&amp;amp;uoo=false&amp;lt;wbr /&amp;gt;&amp;amp;sfcode=dcr&amp;lt;wbr /&amp;gt;&amp;amp;ccode=&amp;lt;wbr /&amp;gt;&amp;amp;dma=539&amp;lt;wbr /&amp;gt;&amp;amp;rnd=1434633027479&amp;lt;/code&amp;gt;&lt;br /&gt;
*Watch any video content for at least three minutes and V/D pings – '''view''' and '''duration''' pings will be visible.&lt;/div&gt;</summary>
		<author><name>ShaneHartman</name></author>
	</entry>
	<entry>
		<id>https://engineeringportal.nielsen.com/w/index.php?title=Digital_Measurement_Testing&amp;diff=2655</id>
		<title>Digital Measurement Testing</title>
		<link rel="alternate" type="text/html" href="https://engineeringportal.nielsen.com/w/index.php?title=Digital_Measurement_Testing&amp;diff=2655"/>
		<updated>2018-04-18T21:45:47Z</updated>

		<summary type="html">&lt;p&gt;ShaneHartman: added instructions to verify user agent using Device Atlas Tool&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Breadcrumb|}} {{Breadcrumb|Digital}} {{Breadcrumb|DCR &amp;amp; DTVR}}  {{CurrentBreadcrumb}}&lt;br /&gt;
[[Category:Digital]]&lt;br /&gt;
&lt;br /&gt;
== Monitoring Tools ==&lt;br /&gt;
HTTP traffic-monitoring tool, such as Charles or Fiddler are required.&lt;br /&gt;
*'''Charles:''' http://www.charlesproxy.com&lt;br /&gt;
*'''Fiddler:''' http://www.telerik.com/fiddler&lt;br /&gt;
&lt;br /&gt;
== Verify User Agent ==&lt;br /&gt;
Verify that your user agent is not being flagged as bot traffic. &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Device Atlas User Agent Tester'''&amp;lt;br /&amp;gt;&lt;br /&gt;
Copy your application's user agent string to your clipboard and input it into the [https://deviceatlas.com/device-data/user-agent-tester Device Atlas User Agent Tester]. If your user agent is designated as a bot, you will see a value of '''&amp;quot;''true''&amp;quot;''' associated with the '''''Is Robot''''' property in the user agent search results.&lt;br /&gt;
&lt;br /&gt;
'''Configuring User Agent '''&amp;lt;br /&amp;gt;&lt;br /&gt;
You will need to override the default value set in the user agent header request field if it's flagged as a bot. Request traffic originating from some third party HTTP clients is designated as bot traffic. To change the user agent, change the value of the User Agent Request header as indicated below:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;    Request request = new Request.Builder()&lt;br /&gt;
    .url(&amp;quot;[api endpoint request url string]&amp;quot;)&lt;br /&gt;
    .header(&amp;quot;User-Agent&amp;quot;, &amp;quot;Custom User Agent&amp;quot;)&lt;br /&gt;
    .build();&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Step 1: Filter traffic ==&lt;br /&gt;
Filter HTTP traffic with the string &amp;quot;imr&amp;quot; to capture traffic from the SDK as shown in the below figure. This will capture traffic going to Nielsen servers. Now set up the device to proxy to this traffic analyzer.&lt;br /&gt;
&amp;lt;blockquote&amp;gt;'''Note:''' Instructions may vary from device to device and are available online.&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
[[File:fiddler-web-debugger.png|link=]]&lt;br /&gt;
&lt;br /&gt;
== Step 2: Check Opt-Out ==&lt;br /&gt;
If the opt-out function or app disable feature is previously tested, it has to be ensured that an opt-in is completed on the device before continuing. Terminate the app completely before starting.&lt;br /&gt;
&lt;br /&gt;
== Step 3: Hello Ping ==&lt;br /&gt;
The first HTTPS traffic that should be seen is the SDK request for configuration information, called a '''hello ping'''. In order to see this ping, Charles / Fiddler has to be configured to capture HTTPS traffic.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;https://secure-dcr.imrworldwide.com/cgi-bin/cfg?cfgv=100&amp;amp;longitude=-82.66&amp;amp;latitude=28.05&amp;amp;apid=&amp;amp;apv=3.84.043&amp;amp;apn=com.video.videop&lt;br /&gt;
layer&amp;amp;sdkv=aa .1.2.3&amp;amp;nuid=7B341CD-5109-B88-B77D-8ADE904717A7&amp;amp;osver=ANDROID.4.2.2&amp;amp;devtypid=LGE-Nexus-4&amp;amp;devid=FFA503E7-&lt;br /&gt;
7749-4448-9922-132492ED4E12&amp;amp;fmt=json&amp;amp;adf=&amp;amp;uoo=&amp;amp;sfcode=dcr&amp;amp;ccode=1&amp;amp;dma=&amp;amp;rnd=1527112029&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;blockquote&amp;gt;'''Note:''' If this ping fails to fire, it is likely that the instance of the SDK failed to initialize. Please see Initialization ([[iOS SDK API Reference#Initialization|iOS SDK API Reference - Initialization]] and [[Android SDK API Reference#Initialization|Android SDK API Reference - Initialization]]) to see how to initialize the SDK.&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Step 4: The L Ping ==&lt;br /&gt;
When the app is started after installing for the first time, and app is measuring '''DCR Static''' content only, a DCR static app launch known as '''L''' ping firing to secure-dcr.imrworldwide.com server in the traffic-monitor should be seen. However, the '''L''' ping will be observed again if app goes into background and resumes back after 5 minutes.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;http://secure-dcr.imrworldwide.com&amp;lt;/nowiki&amp;gt;/cgi-bin/gn?prd=dcr&amp;lt;wbr /&amp;gt;&amp;amp;ci=APRP7&amp;lt;wbr /&amp;gt;&amp;amp;ch=APRP7_NA_defChnAsset&amp;lt;wbr /&amp;gt;&amp;amp;asn=defChnAsset&amp;lt;wbr /&amp;gt;&amp;amp;tl=&amp;lt;wbr /&amp;gt;&amp;amp;c6=vc,NA&amp;lt;wbr /&amp;gt;&amp;amp;c13=asid,XXXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX&amp;lt;wbr /&amp;gt;&amp;amp;c32=segA,&amp;lt;wbr /&amp;gt;&amp;amp;c33=segB,&amp;lt;wbr /&amp;gt;&amp;amp;c34=segC,&amp;lt;wbr /&amp;gt;&amp;amp;c15=apn,MTVR-APT-QA&amp;lt;wbr /&amp;gt;&amp;amp;sup=0&amp;lt;wbr /&amp;gt;&amp;amp;segment2=539&amp;lt;wbr /&amp;gt;&amp;amp;segment1=usa&amp;lt;wbr /&amp;gt;&amp;amp;forward=1&amp;lt;wbr /&amp;gt;&amp;amp;ad=1&amp;lt;wbr /&amp;gt;&amp;amp;cr=L&amp;lt;wbr /&amp;gt;&amp;amp;c9=devid,a69983bc65ad94f9e57109fec68cc847bf59575ee03cadb76b187f4c24eaf793&amp;lt;wbr /&amp;gt;&amp;amp;enc=true&amp;lt;wbr /&amp;gt;&amp;amp;c1=nuid,142a40706f9c03bfea020f7297828534a1f14895d7a8c5303d9b8a19b3337c13&amp;lt;wbr /&amp;gt;&amp;amp;r=&amp;lt;wbr /&amp;gt;&amp;amp;at=launch&amp;lt;wbr /&amp;gt;&amp;amp;rt=text&amp;lt;wbr /&amp;gt;&amp;amp;c16=sdkv ,aa.4.0.0&amp;lt;wbr /&amp;gt;&amp;amp;c27=cln,473&amp;lt;wbr /&amp;gt;&amp;amp;crs=0&amp;lt;wbr /&amp;gt;&amp;amp;si=&amp;lt;wbr /&amp;gt;&amp;amp;lat=28.09&amp;lt;wbr /&amp;gt;&amp;amp;lon=-82.76&amp;lt;wbr /&amp;gt;&amp;amp;c29=plid,XXXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX&amp;lt;wbr /&amp;gt;&amp;amp;c30=bldv,aa.4.0.0.3&amp;lt;wbr /&amp;gt;&amp;amp;st=dcr&amp;lt;wbr /&amp;gt;&amp;amp;c7=osgrp,DROID&amp;lt;wbr /&amp;gt;&amp;amp;c8=devgrp,TAB&amp;lt;wbr /&amp;gt;&amp;amp;c10=plt,MBL&amp;lt;wbr /&amp;gt;&amp;amp;c40=adbid,&amp;lt;wbr /&amp;gt;&amp;amp;c14=osver,ANDROID.4.4.4&amp;lt;wbr /&amp;gt;&amp;amp;c26=1&amp;lt;wbr /&amp;gt;&amp;amp;c35=&amp;lt;wbr /&amp;gt;&amp;amp;c36=cref1,&amp;lt;wbr /&amp;gt;&amp;amp;c37=cref2,&amp;lt;wbr /&amp;gt;&amp;amp;c11=agg,1&amp;lt;wbr /&amp;gt;&amp;amp;c12=apv,apt.4.0.0.3&amp;lt;wbr /&amp;gt;&amp;amp;h33=2&amp;lt;wbr /&amp;gt;&amp;amp;c51=adl,0&amp;lt;wbr /&amp;gt;&amp;amp;c52=noad,0&amp;lt;wbr /&amp;gt;&amp;amp;devtypid=asus-Nexus-7&amp;lt;wbr /&amp;gt;&amp;amp;rnd=1432529128693&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If the app is measuring '''DCR Video Content''' only, then the '''hello ping''' will fire but the '''L''' ping will not be observed upon app launch.&lt;br /&gt;
&lt;br /&gt;
== Step 5: Static View Ping ==&lt;br /&gt;
For any sections that are tagged for static content, a '''DCR Static – view''' ping should be received. The first landing page should always be tagged. An example of this ping is:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;http://secure-dcr.imrworldwide.com&amp;lt;/nowiki&amp;gt;/cgi-bin/gn?prd=dcr&amp;lt;wbr /&amp;gt;&amp;amp;ci=APRP7&amp;lt;wbr /&amp;gt;&amp;amp;ch=APRP7_NA_defChnAsset&amp;lt;wbr /&amp;gt;&amp;amp;asn=defChnAsset&amp;lt;wbr /&amp;gt;&amp;amp;tl=&amp;lt;wbr /&amp;gt;&amp;amp;c6=vc,NA&amp;lt;wbr /&amp;gt;&amp;amp;c13=asid,XXXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX&amp;lt;wbr /&amp;gt;&amp;amp;c32=segA,&amp;lt;wbr /&amp;gt;&amp;amp;c33=segB,&amp;lt;wbr /&amp;gt;&amp;amp;c34=segC,&amp;lt;wbr /&amp;gt;&amp;amp;c15=apn,MTVR-APT-QA&amp;lt;wbr /&amp;gt;&amp;amp;sup=0&amp;lt;wbr /&amp;gt;&amp;amp;segment2=539&amp;lt;wbr /&amp;gt;&amp;amp;segment1=usa&amp;lt;wbr /&amp;gt;&amp;amp;forward=1&amp;lt;wbr /&amp;gt;&amp;amp;ad=1&amp;lt;wbr /&amp;gt;&amp;amp;cr=V&amp;lt;wbr /&amp;gt;&amp;amp;c9=devid,a69983bc65ad94f9e57109fec68cc847bf59575ee03cadb76b187f4c24eaf793&amp;lt;wbr /&amp;gt;&amp;amp;enc=true&amp;lt;wbr /&amp;gt;&amp;amp;c1=nuid,142a40706f9c03bfea020f7297828534a1f14895d7a8c5303d9b8a19b3337c13&amp;lt;wbr /&amp;gt;&amp;amp;r=&amp;lt;wbr /&amp;gt;&amp;amp;at=view&amp;lt;wbr /&amp;gt;&amp;amp;rt=text&amp;lt;wbr /&amp;gt;&amp;amp;c16=sdkv,a a.4.0.0&amp;lt;wbr /&amp;gt;&amp;amp;c27=cln,0&amp;lt;wbr /&amp;gt;&amp;amp;crs=0&amp;lt;wbr /&amp;gt;&amp;amp;si=&amp;lt;wbr /&amp;gt;&amp;amp;lat=&amp;lt;wbr /&amp;gt;&amp;amp;lon=&amp;lt;wbr /&amp;gt;&amp;amp;c29=plid,XXXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX&amp;lt;wbr /&amp;gt;&amp;amp;c30=bldv,aa.4.0.0.1&amp;lt;wbr /&amp;gt;&amp;amp;st=dcr&amp;lt;wbr /&amp;gt;&amp;amp;c7=osgrp,DROID&amp;lt;wbr /&amp;gt;&amp;amp;c8=devgrp,TAB&amp;lt;wbr /&amp;gt;&amp;amp;c10=plt,MBL&amp;lt;wbr /&amp;gt;&amp;amp;c40=adbid,&amp;lt;wbr /&amp;gt;&amp;amp;c14=osver,ANDROID.4.4.4&amp;lt;wbr /&amp;gt;&amp;amp;c26=1&amp;lt;wbr /&amp;gt;&amp;amp;c35=&amp;lt;wbr /&amp;gt;&amp;amp;c36=cref1,&amp;lt;wbr /&amp;gt;&amp;amp;c37=cref2,&amp;lt;wbr /&amp;gt;&amp;amp;c11=agg,1&amp;lt;wbr /&amp;gt;&amp;amp;c12=apv,apt.4.0.0.2&amp;lt;wbr /&amp;gt;&amp;amp;h33=2&amp;lt;wbr /&amp;gt;&amp;amp;c51=adl,0&amp;lt;wbr /&amp;gt;&amp;amp;c52=noad,0&amp;lt;wbr /&amp;gt;&amp;amp;devtypid=asus-Nexus-7&amp;lt;wbr /&amp;gt;&amp;amp;rnd=1432068181560&amp;lt;/code&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Parameter !! Description !! Example&lt;br /&gt;
|-&lt;br /&gt;
| ci || Client ID – this value should be consistent throughout all of the pings that fire for the implementation. || us-123456&lt;br /&gt;
|-&lt;br /&gt;
| asn || Asset Name – this value should represent the asset’s name assigned in the metadata. || Page-Asset&lt;br /&gt;
|-&lt;br /&gt;
| at || Action Type || Start&lt;br /&gt;
|-&lt;br /&gt;
| rt || This value should be “text” and indicates that this is a DCR tag for static content. || text&lt;br /&gt;
|-&lt;br /&gt;
| c13 || This value should contain the appid of the application. || asid,XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX&lt;br /&gt;
|-&lt;br /&gt;
| c32 || Segment A – Client customized metadata || CustomSegmentValueA&lt;br /&gt;
|-&lt;br /&gt;
| c33 || Segment B – Client customized metadata || CustomSegmentValueB&lt;br /&gt;
|-&lt;br /&gt;
| c34 || Segment C – Client customized metadata || CustomSegmentValueC&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Step 6: Video View Ping ==&lt;br /&gt;
Approximately 60 seconds into viewing of the stream, a '''DCR Video – view''' ping fire to secure-dcr.imrworldwide.com server indicated by the '''cr''' value containing a '''V''' in the format of 4_00_99_'''V'''1_00000 should be seen.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Parameter !! Description !! Example&lt;br /&gt;
|-&lt;br /&gt;
| ci || Client ID – this value should be consistent throughout all of the pings that fire for the implementation. || us-123456&lt;br /&gt;
|-&lt;br /&gt;
| asn || Asset Name – this value should represent asset’s name assigned in the metadata. || Video-Asset&lt;br /&gt;
|-&lt;br /&gt;
| tl || Episode Title || Episode Name – S2 – E1 – LF&lt;br /&gt;
|-&lt;br /&gt;
| c13 || This value should contain the appid of the application. || asid,XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX&lt;br /&gt;
|-&lt;br /&gt;
| cr || Crediting Ping Identifier || 4_00_99_V1_00000&lt;br /&gt;
|-&lt;br /&gt;
| rt || This Value should be “video” and indicates that this is a DCR tag for video content. || video&lt;br /&gt;
|-&lt;br /&gt;
| c10 || Platform Indicator || plt,DSK or plt,MBL&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;blockquote&amp;gt;'''Note:''' If this ping fails to fire, a common cause is improper metadata being passed to the SDK. Examples of the proper metadata to be passed in the &amp;lt;/code&amp;gt;loadMetadata&amp;lt;/code&amp;gt;&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Step 7: Video Duration Ping ==&lt;br /&gt;
The first duration ping is fired after 5 minutes of content is viewed. A '''DCR Video''' – duration ping fire to secure-dcr.imrworldwide.com indicated by the '''cr''' value containing a '''D''' in the format of 4_00_99_'''D'''1_11111 should be seen. This D ping should fire approximately every 5 minutes after the initial duration ping has fired or when the content switches to an advertisement. The ad length (c51) is the total ad duration viewed in the previous session, and the ad count (c52) is the number of ads viewed in previous segment.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Parameter !! Description !! Example&lt;br /&gt;
|-&lt;br /&gt;
| ci || Client ID – this value should be consistent throughout all of the pings that fire for the implementation. || us-123456&lt;br /&gt;
|-&lt;br /&gt;
| asn || Asset Name – this value should represent asset’s name assigned in the metadata. || Video-Asset&lt;br /&gt;
|-&lt;br /&gt;
| tl || Episode Title || Episode Name – S2 – E1 – LF&lt;br /&gt;
|-&lt;br /&gt;
| cr || Crediting Ping Identifier || 4_00_99_V1_00000&lt;br /&gt;
|-&lt;br /&gt;
| rt || This Value should be “video” and indicates that this is a DCR tag for video content. || video&lt;br /&gt;
|-&lt;br /&gt;
| c10 || Platform Indicator || plt,DSK or plt,MBL&lt;br /&gt;
|-&lt;br /&gt;
| c13 || This value should contain the appid of the application. || asid,XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX&lt;br /&gt;
|-&lt;br /&gt;
| c51 || Ad Duration || adl,88&lt;br /&gt;
|-&lt;br /&gt;
| c52 || Ad Count || noad,1&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;blockquote&amp;gt;'''Note:''' If this ping fails to fire, it may be caused by not passing the setPlayheadPosition API call as expected. The instruction as well as examples can be found in the Developer’s Guide.&amp;lt;/code&amp;gt;&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Step 8: 5min Duration Ping ==&lt;br /&gt;
View all channels for 5 minutes to ensure all channels fire a '''duration''' ping.&lt;br /&gt;
&lt;br /&gt;
== Step 9: Pending Duration Ping ==&lt;br /&gt;
Play a stream and move the app to the background. A pending '''duration''' ping should fire; crediting the appropriate number of minutes viewed from last ping (i.e. 4_00_99_D1_'''111'''00). No other pings should fire after it has been moved to the background. In case SDK does not get a chance to send out the ping while going to background, SDK will send the pending ping on next re-launch.&lt;br /&gt;
&lt;br /&gt;
== Step 10: Pending Duration Pings cont. ==&lt;br /&gt;
The same action will occur with any interruption to the stream’s playback (e.g., alarm, incoming call, etc.).&lt;br /&gt;
&lt;br /&gt;
== Step 11: Opt-Out Implementation ==&lt;br /&gt;
Test the Opt-Out implementation in four steps.&lt;br /&gt;
*Complete an opt-out in the app through the Nielsen opt-out webview.&lt;br /&gt;
*User opt-out, a '''goodbye ping''' is fired off to the Nielsen server. '''Example Goodbye Ping''':&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;http://secure-dcr.imrworldwide.com&amp;lt;/nowiki&amp;gt;/cgi-bin/cfg?cfgv=200&amp;lt;wbr /&amp;gt;&amp;amp;longitude=&amp;lt;wbr /&amp;gt;&amp;amp;latitude=&amp;lt;wbr /&amp;gt;&amp;amp;apid=&amp;lt;wbr /&amp;gt;&amp;amp;apv=01.00.00&amp;lt;wbr /&amp;gt;&amp;amp;apn=Nielsen%2520sample&amp;lt;wbr /&amp;gt;&amp;amp;sdkv=aa.4.0.0&amp;lt;wbr /&amp;gt;&amp;amp;bldv=aa.4.0.0.4&amp;lt;wbr /&amp;gt;&amp;amp;nuid=00b5926fea1807638ebfe6f04af6a455c5d9b2a1ed3e39f550f44daa39d0886d&amp;lt;wbr /&amp;gt;&amp;amp;osver=ANDROID.4.4.4&amp;lt;wbr /&amp;gt;&amp;amp;devtypid=samsung-SAMSUNG-SM-N910A&amp;lt;wbr /&amp;gt;&amp;amp;devid=42ec6a26b000ccd34015ba8625ee29cd283190a8c00f1622f356e900bb5b2a23&amp;lt;wbr /&amp;gt;&amp;amp;enc=true&amp;lt;wbr /&amp;gt;&amp;amp;tz=-14400&amp;lt;wbr /&amp;gt;&amp;amp;fmt=json&amp;lt;wbr /&amp;gt;&amp;amp;adf=&amp;lt;wbr /&amp;gt;&amp;amp;uoo=true&amp;lt;wbr /&amp;gt;&amp;amp;sfcode=dcr&amp;lt;wbr /&amp;gt;&amp;amp;ccode=&amp;lt;wbr /&amp;gt;&amp;amp;dma=539&amp;lt;wbr /&amp;gt;&amp;amp;rnd=1434632964945&amp;lt;/code&amp;gt;&lt;br /&gt;
*Watch any content (static or video) for at least three minutes. No pings will be rendered.&lt;br /&gt;
*Opt back in, a '''hello ping''' is fired off to the Nielsen server. ''Example Hello Ping'':&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;http://secure-dcr.imrworldwide.com&amp;lt;/nowiki&amp;gt;/cgi-bin/cfg?cfgv=200&amp;lt;wbr /&amp;gt;&amp;amp;longitude=-82.65&amp;lt;wbr /&amp;gt;&amp;amp;latitude=28.05&amp;lt;wbr /&amp;gt;&amp;amp;apid=&amp;lt;wbr /&amp;gt;&amp;amp;apv=01.00.00&amp;lt;wbr /&amp;gt;&amp;amp;apn=Nielsen%2520sample&amp;lt;wbr /&amp;gt;&amp;amp;sdkv=aa.4.0.0&amp;lt;wbr /&amp;gt;&amp;amp;bldv=aa.4.0.0.4&amp;lt;wbr /&amp;gt;&amp;amp;nuid=00b5926fea1807638ebfe6f04af6a455c5d9b2a1ed3e39f550f44daa39d0886d&amp;lt;wbr /&amp;gt;&amp;amp;osver=ANDROID.4.4.4&amp;lt;wbr /&amp;gt;&amp;amp;devtypid=samsung-SAMSUNG-SM-N910A&amp;lt;wbr /&amp;gt;&amp;amp;devid=42ec6a26b000ccd34015ba8625ee29cd283190a8c00f1622f356e900bb5b2a23&amp;lt;wbr /&amp;gt;&amp;amp;enc=true&amp;lt;wbr /&amp;gt;&amp;amp;tz=-14400&amp;lt;wbr /&amp;gt;&amp;amp;fmt=json&amp;lt;wbr /&amp;gt;&amp;amp;adf=&amp;lt;wbr /&amp;gt;&amp;amp;uoo=false&amp;lt;wbr /&amp;gt;&amp;amp;sfcode=dcr&amp;lt;wbr /&amp;gt;&amp;amp;ccode=&amp;lt;wbr /&amp;gt;&amp;amp;dma=539&amp;lt;wbr /&amp;gt;&amp;amp;rnd=1434633027479&amp;lt;/code&amp;gt;&lt;br /&gt;
*Watch any video content for at least three minutes and V/D pings – '''view''' and '''duration''' pings will be visible.&lt;/div&gt;</summary>
		<author><name>ShaneHartman</name></author>
	</entry>
</feed>