<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://nielsentest.mywikis.net/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=KimBritt</id>
	<title>Engineering Client Portal - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://nielsentest.mywikis.net/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=KimBritt"/>
	<link rel="alternate" type="text/html" href="https://nielsentest.mywikis.net/wiki/Special:Contributions/KimBritt"/>
	<updated>2026-04-03T20:49:41Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.39.5</generator>
	<entry>
		<id>https://nielsentest.mywikis.net/w/index.php?title=DCR_Podcasts_in_Digital&amp;diff=2437</id>
		<title>DCR Podcasts in Digital</title>
		<link rel="alternate" type="text/html" href="https://nielsentest.mywikis.net/w/index.php?title=DCR_Podcasts_in_Digital&amp;diff=2437"/>
		<updated>2018-01-29T21:53:17Z</updated>

		<summary type="html">&lt;p&gt;KimBritt: new loadmetadata&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Breadcrumb|}} {{Breadcrumb|Digital}} {{CurrentBreadcrumb}}&lt;br /&gt;
[[Category:Podcasts]]&lt;br /&gt;
{{CategoryIcon|DA.png|Podcasts}}&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
== Steps ==&lt;br /&gt;
'''This document assumes you have implemented Digital Audio with Live AM/FM stream measurement''' with a &amp;quot;radio&amp;quot; content type.    It outlines the new parameters you will use to implement podcast measurement. &lt;br /&gt;
&lt;br /&gt;
#Contact your Nielsen Account Representative to discuss the way you would like your podcasts reported (Classified)&lt;br /&gt;
#Your TAM will provide new appIds for the applications that will offer podcasts&lt;br /&gt;
#Update the parameters you use to call the SDK play and playheadPosition. Reference the appropriate [[Podcasts#Changes_for_Podcast_Measurement|Changes for Podcast Measurement]]  below&lt;br /&gt;
#Obtain Nielsen Podcast certification once your changes are complete and tested &lt;br /&gt;
#Complete a Production License with your Nielsen Account Representative&lt;br /&gt;
=== Library ===&lt;br /&gt;
Use the same SDK library as Digital Audio, live AM/FM stream measurement.&lt;br /&gt;
&lt;br /&gt;
== Changes for Podcast Measurement ==&lt;br /&gt;
=== Initializing the SDK ===&lt;br /&gt;
Update your appid to the new ID provided by your TAM for podcast measurement. &lt;br /&gt;
When you initialize the SDK, use 'dcr' in the sfcode instead of 'drm'. &lt;br /&gt;
&lt;br /&gt;
=== play ===&lt;br /&gt;
Call [[play]] when the user taps the '''Play''' button to start the content.. The channelName parameter is not required.&lt;br /&gt;
&lt;br /&gt;
'''play Example'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;json&amp;quot;&amp;gt;{&lt;br /&gt;
   &amp;quot;channelName&amp;quot;: &amp;quot;KABC-FM Morning Show&amp;quot;&lt;br /&gt;
}&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== loadMetadata ===&lt;br /&gt;
Use [[loadMetadata]] to pass information about your podcast to the SDK. The parameters must be passed as a JSON object.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;objective-c&amp;quot;&amp;gt;    – (void) loadMetadata :(id)metadata;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Refer to [[loadMetadata]] for the list of parameters to be passed in the JSON object.&lt;br /&gt;
&amp;lt;blockquote&amp;gt;'''Note:''' The [[loadMetadata]] call after the first [[play]] call '''must have ‘content’ (&amp;quot;type&amp;quot;: &amp;quot;content&amp;quot;).''' &amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''loadMetadata Example'''&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;assetid&amp;quot;: &amp;quot;KABC:345-67483&amp;quot;,&lt;br /&gt;
  &amp;quot;program&amp;quot;: &amp;quot;KABC Morning Show&amp;quot;,&lt;br /&gt;
  &amp;quot;title&amp;quot;: &amp;quot;20171125: HR1&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;KABC-FM&amp;quot;,                        // station call letters and band are optional here                   &lt;br /&gt;
  &amp;quot;isfullepisode&amp;quot;: &amp;quot;y&amp;quot;,&lt;br /&gt;
  &amp;quot;airdate&amp;quot;: &amp;quot;20171125 06:00:00&amp;quot;,&lt;br /&gt;
  &amp;quot;adloadtype&amp;quot;: &amp;quot;2&amp;quot;,&lt;br /&gt;
  &amp;quot;pipmode&amp;quot;:&amp;quot;false&amp;quot; &lt;br /&gt;
}&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== playheadPosition for &amp;quot;content&amp;quot; ===&lt;br /&gt;
You will continue to use [[playheadPosition]] to pass the position of the playhead while the content is being played; however, you will pass the relative position from the beginning of the file.  '''This is different than live stream measurement, which uses the live UTC time.'''&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Key !! Description !! Values !! Required? (Y/N) !! Example&lt;br /&gt;
|-&lt;br /&gt;
| On-Demand Audio || Position taken from beginning of the content in seconds. || Client-defined || Yes || Current player position from beginning of the content.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
''' playheadPosition Syntax Example for iOS'''&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;objective-c&amp;quot;&amp;gt;    CMTime curTime=[player currentTime];&lt;br /&gt;
    long pos=CMTimeGetSeconds(curTime);&lt;br /&gt;
    [nAppApiObject playheadPosition:pos];&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Usage Sequence and API'''&lt;br /&gt;
The sample API sequence can be used as a reference to identify the specific events that need to be called during content and ad playback.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Action !! Sample code !! Description&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | Start of stream || &amp;lt;code&amp;gt;[nielsenMeter play: channelName];&amp;lt;/code&amp;gt; || // channelName contains JSON metadata of program being played&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter loadMetadata: contentMetadataObject];&amp;lt;/code&amp;gt; || // contentMetadataObject contains the JSON metadata for the content being played&lt;br /&gt;
|-&lt;br /&gt;
| Listening || &amp;lt;code&amp;gt;[nielsenMeter playheadPosition: position];&amp;lt;/code&amp;gt; || // playheadPosition is position of the playhead while the content is being played&lt;br /&gt;
|-&lt;br /&gt;
| End of Stream || &amp;lt;code&amp;gt;[nielsenMeter end];&amp;lt;/code&amp;gt; || // Content playback is completed.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
- Continue to call [[playheadPosition]] every two seconds until the user pauses, stops, or loses audio. &lt;br /&gt;
&lt;br /&gt;
- Call a new ''loadMetadata'' when the user selects a different program.&lt;br /&gt;
 &lt;br /&gt;
'''With Preroll, Midroll, Postroll Ads'''&lt;br /&gt;
'''Please note:''' The below examples include ad pod information.  These ads are not ads served as part of the originator's programming (studio-recorded ads). These ads are hosted independently from the podcast content file. &lt;br /&gt;
&lt;br /&gt;
When applicable, Playhead should be passed for the entire duration of ad pod, if the ad pod details are passed as part of [[loadMetadata]].&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Action !! Sample code !! Description&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | Start of stream || &amp;lt;code&amp;gt;[nielsenMeter play: channelName];&amp;lt;/code&amp;gt; || // channelName contains JSON metadata of channel/video name being played&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter loadMetadata: contentMetadataObject];&amp;lt;/code&amp;gt; || // contentMetadataObject contains the JSON metadata for the content being played&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Preroll || &amp;lt;code&amp;gt;[nielsenMeter loadMetadata: prerollMetadataObject];&amp;lt;/code&amp;gt; || // prerollMetadataObject contains the JSON metadata for the preroll ad&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter playheadPosition: position];&amp;lt;/code&amp;gt; || // position is position of the playhead while the preroll ad is being played&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter stop];&amp;lt;/code&amp;gt; || // Call stop after preroll occurs&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Listening || &amp;lt;code&amp;gt;[nielsenMeter loadMetadata: contentMetadataObject];&amp;lt;/code&amp;gt; || // contentMetadataObject contains the JSON metadata for the content being played&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter playheadPosition: position];&amp;lt;/code&amp;gt; || // position is position of the playhead while the content is being played&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter stop];&amp;lt;/code&amp;gt; || // Call stop after the content is paused (ad starts)&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Midroll || &amp;lt;code&amp;gt;[nielsenMeter loadMetadata: midrollMetadataObject];&amp;lt;/code&amp;gt; || // midrollMetadataObject contains the JSON metadata for the midroll ad&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter playheadPosition: position];&amp;lt;/code&amp;gt; || // position is position of the playhead while the midroll ad is being played&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter stop];&amp;lt;/code&amp;gt; || // Call stop after midroll occurs&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Content (End of stream) || &amp;lt;code&amp;gt;[nielsenMeter loadMetadata: contentMetadataObject];&amp;lt;/code&amp;gt; || // contentMetadataObject contains the JSON metadata for the content being played&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter playheadPosition: position];&amp;lt;/code&amp;gt; || // position is position of the playhead while the content is being played&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter end];&amp;lt;/code&amp;gt; || // Called at the end of content&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Postroll || &amp;lt;code&amp;gt;[nielsenMeter loadMetadata: postrollMetadataObject];&amp;lt;/code&amp;gt; || // postrollMetadataObject contains the JSON metadata for the postroll ad&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter playheadPosition: position];&amp;lt;/code&amp;gt; || // position is position of the playhead while the postroll ad is being played&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter stop];&amp;lt;/code&amp;gt; || // Call stop after postroll occurs&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;'''Note:''' Each Ad playhead should reset or begin from 0 at ad start. When content has resumed following an ad break, playhead position must continue from where previous content segment was left off.&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Nielsen Measurement Opt-Out Implementation ==&lt;br /&gt;
No changes are necessary because Opt-out implementation for podcasts is the same as live AM/FM stream measurement.&lt;br /&gt;
&lt;br /&gt;
== Technical Guides ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! style=&amp;quot;width: 90px;&amp;quot; | Type&lt;br /&gt;
! style=&amp;quot;width: 45px;&amp;quot; |&lt;br /&gt;
! style=&amp;quot;width: 45px;&amp;quot; | OS&lt;br /&gt;
! style=&amp;quot;width: 50%;&amp;quot; | DCR Implementation Guide&lt;br /&gt;
!| SDK Documentation&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;7&amp;quot; | {{SmallIcon|SDKIcon.png|alt=SDK}}&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | {{OSIcon|VideoIcon.png|alt=Video}}&lt;br /&gt;
| {{OSIcon|macOSIcon.png|alt=iOS}}&lt;br /&gt;
| '''[[DCR Video iOS SDK]]'''&lt;br /&gt;
| [[iOS SDK API Reference]]&lt;br /&gt;
|-&lt;br /&gt;
| {{OSIcon|AndroidIcon.png|alt=Android}}&lt;br /&gt;
| '''[[DCR Video Android SDK]]'''&lt;br /&gt;
| [[Android SDK API Reference]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;width: 90px;&amp;quot; |&lt;br /&gt;
! style=&amp;quot;width: 42%;&amp;quot; | Technical Guides&lt;br /&gt;
!&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;7&amp;quot; | {{SmallIcon|DigitalIcon.png}}&lt;br /&gt;
| '''[[Digital Measurement Onboarding]]'''&lt;br /&gt;
| '''[[Digital Measurement Metadata]]'''&lt;br /&gt;
|-&lt;br /&gt;
| '''[[Digital Measurement Testing]]'''&lt;br /&gt;
| '''[[Digital Measurement Interruption Scenarios]]'''&lt;br /&gt;
|-&lt;br /&gt;
| '''[[Digital Measurement FAQ]]'''&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| '''[[Digital Pre-Certification Checklist App SDK]]'''&lt;br /&gt;
| '''[[Digital Pre-Certification Checklist Browser SDK]]'''&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>KimBritt</name></author>
	</entry>
	<entry>
		<id>https://nielsentest.mywikis.net/w/index.php?title=DCR_Podcasts_in_Digital&amp;diff=2434</id>
		<title>DCR Podcasts in Digital</title>
		<link rel="alternate" type="text/html" href="https://nielsentest.mywikis.net/w/index.php?title=DCR_Podcasts_in_Digital&amp;diff=2434"/>
		<updated>2018-01-29T21:22:12Z</updated>

		<summary type="html">&lt;p&gt;KimBritt: bold audio&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Breadcrumb|}} {{Breadcrumb|Digital}} {{CurrentBreadcrumb}}&lt;br /&gt;
[[Category:Podcasts]]&lt;br /&gt;
{{CategoryIcon|DA.png|Podcasts}}&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
== Steps ==&lt;br /&gt;
'''This document assumes you have implemented Digital Audio with Live AM/FM stream measurement''' with a &amp;quot;radio&amp;quot; content type.    It outlines the new parameters you will use to implement podcast measurement. &lt;br /&gt;
&lt;br /&gt;
#Contact your Nielsen Account Representative to discuss the way you would like your podcasts reported (Classified)&lt;br /&gt;
#Your TAM will provide new appIds for the applications that will offer podcasts&lt;br /&gt;
#Update the parameters you use to call the SDK play and playheadPosition. Reference the appropriate [[Podcasts#Changes_for_Podcast_Measurement|Changes for Podcast Measurement]]  below&lt;br /&gt;
#Obtain Nielsen Podcast certification once your changes are complete and tested &lt;br /&gt;
#Complete a Production License with your Nielsen Account Representative&lt;br /&gt;
=== Library ===&lt;br /&gt;
Use the same SDK library as Digital Audio, live AM/FM stream measurement.&lt;br /&gt;
&lt;br /&gt;
== Changes for Podcast Measurement ==&lt;br /&gt;
=== Initializing the SDK ===&lt;br /&gt;
Update your appid to the new ID provided by your TAM for podcast measurement. &lt;br /&gt;
When you initialize the SDK, use 'dcr' in the sfcode instead of 'drm'. &lt;br /&gt;
&lt;br /&gt;
=== play ===&lt;br /&gt;
Call [[play]] when the user taps the '''Play''' button to start the content.. The channelName parameter is not required.&lt;br /&gt;
&lt;br /&gt;
'''play Example'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;json&amp;quot;&amp;gt;{&lt;br /&gt;
   &amp;quot;channelName&amp;quot;: &amp;quot;KABC-FM Morning Show&amp;quot;&lt;br /&gt;
}&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== loadMetadata ===&lt;br /&gt;
Use [[loadMetadata]] to pass information about your podcast to the SDK. The parameters must be passed as a JSON object.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;objective-c&amp;quot;&amp;gt;    – (void) loadMetadata :(id)metadata;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Refer to [[loadMetadata]] for the list of parameters to be passed in the JSON object.&lt;br /&gt;
&amp;lt;blockquote&amp;gt;'''Note:''' The [[loadMetadata]] call after the first [[play]] call '''must have ‘content’ (&amp;quot;type&amp;quot;: &amp;quot;content&amp;quot;).''' &amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''loadMetadata Example'''&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;assetid&amp;quot;: &amp;quot;KABC:345-67483&amp;quot;,&lt;br /&gt;
  &amp;quot;program&amp;quot;: &amp;quot;KABC Morning Show&amp;quot;,&lt;br /&gt;
  &amp;quot;title&amp;quot;: &amp;quot;20171125: HR1&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;KABC-FM&amp;quot;,                        // station call letters and band are optional here                   &lt;br /&gt;
  &amp;quot;isfullepisode&amp;quot;: &amp;quot;y&amp;quot;,&lt;br /&gt;
  &amp;quot;airdate&amp;quot;: &amp;quot;20171125 06:00:00&amp;quot;,&lt;br /&gt;
  &amp;quot;adloadtype&amp;quot;: &amp;quot;2&amp;quot;,&lt;br /&gt;
  &amp;quot;pipmode&amp;quot;:&amp;quot;false&amp;quot; &lt;br /&gt;
}&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== playheadPosition for &amp;quot;content&amp;quot; ===&lt;br /&gt;
You will continue to use [[playheadPosition]] to pass the position of the playhead while the content is being played; however, you will pass the relative position from the beginning of the file.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Key !! Description !! Values !! Required? (Y/N) !! Example&lt;br /&gt;
|-&lt;br /&gt;
| On-Demand Audio || Position taken from beginning of the content in seconds. || Client-defined || Yes || Current player position from beginning of the content.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
''' playheadPosition Syntax Example for iOS'''&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;objective-c&amp;quot;&amp;gt;    CMTime curTime=[player currentTime];&lt;br /&gt;
    long pos=CMTimeGetSeconds(curTime);&lt;br /&gt;
    [nAppApiObject playheadPosition:pos];&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Usage Sequence and API'''&lt;br /&gt;
The sample API sequence can be used as a reference to identify the specific events that need to be called during content and ad playback.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Action !! Sample code !! Description&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | Start of stream || &amp;lt;code&amp;gt;[nielsenMeter play: channelName];&amp;lt;/code&amp;gt; || // channelName contains JSON metadata of program being played&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter loadMetadata: contentMetadataObject];&amp;lt;/code&amp;gt; || // contentMetadataObject contains the JSON metadata for the content being played&lt;br /&gt;
|-&lt;br /&gt;
| Listening || &amp;lt;code&amp;gt;[nielsenMeter playheadPosition: position];&amp;lt;/code&amp;gt; || // playheadPosition is position of the playhead while the content is being played&lt;br /&gt;
|-&lt;br /&gt;
| End of Stream || &amp;lt;code&amp;gt;[nielsenMeter end];&amp;lt;/code&amp;gt; || // Content playback is completed.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Continue to call [[playheadPosition]] every two seconds until a pause / stop / another ''loadMetadata'' is called when the user selects a different program.&lt;br /&gt;
 &lt;br /&gt;
'''With Preroll, Midroll, Postroll Ads'''&lt;br /&gt;
'''Please note:''' The below examples include ad pod information.  These ads are not ads served as part of the originator's programming (studio-recorded ads). These ads are hosted independently from the podcast content file. &lt;br /&gt;
&lt;br /&gt;
When applicable, Playhead should be passed for the entire duration of ad pod, if the ad pod details are passed as part of [[loadMetadata]].&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Action !! Sample code !! Description&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | Start of stream || &amp;lt;code&amp;gt;[nielsenMeter play: channelName];&amp;lt;/code&amp;gt; || // channelName contains JSON metadata of channel/video name being played&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter loadMetadata: contentMetadataObject];&amp;lt;/code&amp;gt; || // contentMetadataObject contains the JSON metadata for the content being played&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Preroll || &amp;lt;code&amp;gt;[nielsenMeter loadMetadata: prerollMetadataObject];&amp;lt;/code&amp;gt; || // prerollMetadataObject contains the JSON metadata for the preroll ad&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter playheadPosition: position];&amp;lt;/code&amp;gt; || // position is position of the playhead while the preroll ad is being played&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter stop];&amp;lt;/code&amp;gt; || // Call stop after preroll occurs&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Listening || &amp;lt;code&amp;gt;[nielsenMeter loadMetadata: contentMetadataObject];&amp;lt;/code&amp;gt; || // contentMetadataObject contains the JSON metadata for the content being played&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter playheadPosition: position];&amp;lt;/code&amp;gt; || // position is position of the playhead while the content is being played&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter stop];&amp;lt;/code&amp;gt; || // Call stop after the content is paused (ad starts)&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Midroll || &amp;lt;code&amp;gt;[nielsenMeter loadMetadata: midrollMetadataObject];&amp;lt;/code&amp;gt; || // midrollMetadataObject contains the JSON metadata for the midroll ad&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter playheadPosition: position];&amp;lt;/code&amp;gt; || // position is position of the playhead while the midroll ad is being played&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter stop];&amp;lt;/code&amp;gt; || // Call stop after midroll occurs&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Content (End of stream) || &amp;lt;code&amp;gt;[nielsenMeter loadMetadata: contentMetadataObject];&amp;lt;/code&amp;gt; || // contentMetadataObject contains the JSON metadata for the content being played&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter playheadPosition: position];&amp;lt;/code&amp;gt; || // position is position of the playhead while the content is being played&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter end];&amp;lt;/code&amp;gt; || // Called at the end of content&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Postroll || &amp;lt;code&amp;gt;[nielsenMeter loadMetadata: postrollMetadataObject];&amp;lt;/code&amp;gt; || // postrollMetadataObject contains the JSON metadata for the postroll ad&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter playheadPosition: position];&amp;lt;/code&amp;gt; || // position is position of the playhead while the postroll ad is being played&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter stop];&amp;lt;/code&amp;gt; || // Call stop after postroll occurs&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;'''Note:''' Each Ad playhead should reset or begin from 0 at ad start. When content has resumed following an ad break, playhead position must continue from where previous content segment was left off.&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Nielsen Measurement Opt-Out Implementation ==&lt;br /&gt;
No changes are necessary because Opt-out implementation for podcasts is the same as live AM/FM stream measurement.&lt;br /&gt;
&lt;br /&gt;
== Technical Guides ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! style=&amp;quot;width: 90px;&amp;quot; | Type&lt;br /&gt;
! style=&amp;quot;width: 45px;&amp;quot; |&lt;br /&gt;
! style=&amp;quot;width: 45px;&amp;quot; | OS&lt;br /&gt;
! style=&amp;quot;width: 50%;&amp;quot; | DCR Implementation Guide&lt;br /&gt;
!| SDK Documentation&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;7&amp;quot; | {{SmallIcon|SDKIcon.png|alt=SDK}}&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | {{OSIcon|VideoIcon.png|alt=Video}}&lt;br /&gt;
| {{OSIcon|macOSIcon.png|alt=iOS}}&lt;br /&gt;
| '''[[DCR Video iOS SDK]]'''&lt;br /&gt;
| [[iOS SDK API Reference]]&lt;br /&gt;
|-&lt;br /&gt;
| {{OSIcon|AndroidIcon.png|alt=Android}}&lt;br /&gt;
| '''[[DCR Video Android SDK]]'''&lt;br /&gt;
| [[Android SDK API Reference]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;width: 90px;&amp;quot; |&lt;br /&gt;
! style=&amp;quot;width: 42%;&amp;quot; | Technical Guides&lt;br /&gt;
!&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;7&amp;quot; | {{SmallIcon|DigitalIcon.png}}&lt;br /&gt;
| '''[[Digital Measurement Onboarding]]'''&lt;br /&gt;
| '''[[Digital Measurement Metadata]]'''&lt;br /&gt;
|-&lt;br /&gt;
| '''[[Digital Measurement Testing]]'''&lt;br /&gt;
| '''[[Digital Measurement Interruption Scenarios]]'''&lt;br /&gt;
|-&lt;br /&gt;
| '''[[Digital Measurement FAQ]]'''&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| '''[[Digital Pre-Certification Checklist App SDK]]'''&lt;br /&gt;
| '''[[Digital Pre-Certification Checklist Browser SDK]]'''&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>KimBritt</name></author>
	</entry>
	<entry>
		<id>https://nielsentest.mywikis.net/w/index.php?title=iOS_SDK_Release_Notes&amp;diff=2367</id>
		<title>iOS SDK Release Notes</title>
		<link rel="alternate" type="text/html" href="https://nielsentest.mywikis.net/w/index.php?title=iOS_SDK_Release_Notes&amp;diff=2367"/>
		<updated>2018-01-18T20:08:09Z</updated>

		<summary type="html">&lt;p&gt;KimBritt: title&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Breadcrumb|}} {{Breadcrumb|Digital}} {{CurrentBreadcrumb}}&lt;br /&gt;
[[Category:Digital]]&lt;br /&gt;
&lt;br /&gt;
== Release 6.0.0.2 (1-18-2018) ==&lt;br /&gt;
=== DCR and DTVR Products Only ===&lt;br /&gt;
*'''Vizu Library Changes:''' AppSDK requires a code change to fix a critical bug pertaining to Viewability as requested by Vizu(VI) library team. AppSDK will subscribe to VI JS event VIExternalDataReady, which will ensure VI library is ready to provide the time series data. &lt;br /&gt;
*'''Static Ping Upload Failure:''' Issue occurs during 2 SDK instances. If instance 1 is destroyed and the second instance is still active, broadcast notification is sent to cancel all the pending requests and the session object is destroyed for both. Fix applied to isolate this notification for the destroyed instance only so it will not impact the other instance.&lt;br /&gt;
*'''SegA/B/C Fix:''' If empty values are provided for segA, segB, segC in the loadmetadata call, then SDK will use the default values from the config.&lt;br /&gt;
*'''DTVR Fix:''' Issue was introduced in v6.0.0.1 where tsv value was getting reset to default after pause. Issue occurred after pause when &amp;quot;stop&amp;quot;, &amp;quot;play&amp;quot; and &amp;quot;loadMetadata&amp;quot; methods are called and the tsv flag gets reset to the default value 99 until another tsv request is fired.&lt;br /&gt;
&lt;br /&gt;
== Release 6.0.0.1 (12-14-2017) ==&lt;br /&gt;
=== All Products ===&lt;br /&gt;
The below updates apply to all products. They do not require code changes. Please check your product's implementation guide for detailed instructions on how to implement best measurement of your product.&lt;br /&gt;
&lt;br /&gt;
*'''Appname Removal:''' Client will no longer need to pass Appname as part of SDK initialization because SDK will be retrieving the name from the application Info.plist file for iOS. Even if client continues to pass the Appname, SDK will ignore it.&lt;br /&gt;
*'''Default Privacy Url:''' Return default US privacy url instead of “nil” or blank string for userOptOutURLString.&lt;br /&gt;
*'''Event Data Reporting:''' Sending event data in milliseconds compared to seconds for more granular reporting.&lt;br /&gt;
*'''Minor Playhead Error:''' SDK will no longer send view ping if the first playhead position is 0 and if the playhead position is not incrementing. SDK will check if the playhead position will increment from 0 and then only send the view ping.&lt;br /&gt;
*'''Session Id Change:''' Updated the Session id format to align the AppSDK with the DAR/Browser SDK logic which generates 39 chars sessionid/uaid.&lt;br /&gt;
&lt;br /&gt;
=== DCR and DTVR ===&lt;br /&gt;
Affected content types are DCR and DTVR.&lt;br /&gt;
&lt;br /&gt;
*'''Viewability:''' Viewability is as an online tracking mechanism introduced in Nielsen SDK for representing the visibility of a video in the player along a playback that are actually viewed by the customers.&lt;br /&gt;
*'''Simplified SDK API:''' This will allow clients to have a simple interface to pass metadata to the sdk and reduce the number of api calls. This feature will currently be available for AppSDK only. New API (trackEvent) is introduced to simplify SDK integration for clients. New API will be implemented as a wrapper for the existing SDK API. Clients will be able to use either new or old SDK API.&lt;br /&gt;
*'''Bug Fix For DTVR:''' Fix for DTVR short ping having at parameter as “timer” instead of “sfview” during channel change scenario.  iOS fix for 1 trans ping per ID3 tag.&lt;br /&gt;
*'''Stop Event Requirement Change:''' ST event will be reported at the end of the content, on End API call regardless of playhead position and channel change.&lt;br /&gt;
&lt;br /&gt;
== Release 5.1.1.29 ==&lt;br /&gt;
*Genre parameter will be a part of DCR pings and the value will be reflected as part of c44 parameter.&lt;br /&gt;
*Merged adModel and adLoadType flags&lt;br /&gt;
*Fix for stop event data carried to next session’s duration ping&lt;br /&gt;
&lt;br /&gt;
== Release 5.1.1.25 ==&lt;br /&gt;
*Enhanced support for Digital Audio&lt;br /&gt;
*Ability to pass adloadtype as “linear” or “dynamic”&lt;br /&gt;
*Ability to detect end of content and static material through duration pings&lt;br /&gt;
*Acceptance of empty parameters with a warning message triggered, if a required parameter is missing&lt;br /&gt;
*Acceptance of case-insensitive JSON key values&lt;br /&gt;
*Configurable feature to show Ad view counts in the duration pings&lt;br /&gt;
*Automatic Pause Detection and Debug build detection&lt;br /&gt;
*Change of default ‘type’ from “ad” to “content”&lt;br /&gt;
*Removal of “Static” Launch Ping for Non-Static product implementations&lt;br /&gt;
*Fix for App crash when multiple threads are accessing the SQLite&lt;br /&gt;
&lt;br /&gt;
== Release 5.1.1.23 ==&lt;br /&gt;
*Ability to pass adloadtype as “linear” or “dynamic”&lt;br /&gt;
*Ability to detect end of content and static material through duration pings&lt;br /&gt;
*Acceptance of empty parameters with a warning message triggered, if a required parameter is missing&lt;br /&gt;
*Acceptance of case-insensitive JSON key values&lt;br /&gt;
*Configurable feature to show Ad view counts in the duration pings&lt;br /&gt;
*Automatic Pause Detection and Debug build detection&lt;br /&gt;
*Change of default ‘type’ from “ad” to “content”&lt;br /&gt;
*Removal of “Static” Launch Ping for Non-Static product implementations&lt;br /&gt;
*Fix for App crash when multiple threads are accessing the SQLite&lt;br /&gt;
&lt;br /&gt;
== Release 5.1.1.19 ==&lt;br /&gt;
*Fix for muting background music apps&lt;br /&gt;
&lt;br /&gt;
== Release 5.1.1.18 ==&lt;br /&gt;
*Minor bug fixes and performance improvement&lt;br /&gt;
&lt;br /&gt;
== Release 5.1.1.17 ==&lt;br /&gt;
*Added “seconds” place to the launch ping&lt;br /&gt;
*Ability to opt-out using “Limit Ad Tracking” feature&lt;br /&gt;
*Improved CPU Performance while apps are running in background&lt;br /&gt;
*Opt-Out pages can be served based on user’s language and locale from device&lt;br /&gt;
&lt;br /&gt;
== Release 5.1.1.12 ==&lt;br /&gt;
*Support for Nielsen TV Brand Effect&lt;br /&gt;
*Ability to set CMS parameters at a more global level&lt;br /&gt;
*Opt-out pages based on locale and country&lt;br /&gt;
*Opt-out policy based on the ‘Limit Ad Tracking’ flag&lt;br /&gt;
*Collection of additional device information&lt;br /&gt;
*Issue a warning in client developer’s console when ad is played for more than 5 minutes&lt;br /&gt;
*Removed the requirement for “type” parameter&lt;br /&gt;
*Limit the duration reported for App launch&lt;br /&gt;
&lt;br /&gt;
== Release 5.1.1.9 ==&lt;br /&gt;
*Fixed Linker error duplicate symbols for Reachability notification in iOS.&lt;br /&gt;
&lt;br /&gt;
== Release 5.1.1.7 ==&lt;br /&gt;
*Support for iOS 10&lt;br /&gt;
*Usage of stop API call is made optional when switching between content or advertising occurs.&lt;br /&gt;
*General bug fix and performance improvements&lt;br /&gt;
&lt;br /&gt;
== Release 5.1.1.5 ==&lt;br /&gt;
*Sending event level (button press data) data to census collections.&lt;br /&gt;
*Support for Pause timeout (from 30 minutes to 5 minutes)&lt;br /&gt;
*Changes in OTT when switching from mobile to Chromecast&lt;br /&gt;
*Self-error Reporting for iOS SDK&lt;br /&gt;
*General bug fix and performance improvements&lt;br /&gt;
&lt;br /&gt;
== Release 5.1.0.5 ==&lt;br /&gt;
*Combined SDK for DCR US and International (Germany)&lt;br /&gt;
*API to signal end of content (end API)&lt;br /&gt;
*Changes to use of stop API&lt;br /&gt;
*Support for OTT measurement&lt;br /&gt;
*Support for Pause timeout&lt;br /&gt;
*Offline viewing&lt;br /&gt;
*Updated API to support JSON object instead of string.&lt;br /&gt;
*Reporting of media URL and bundle ID&lt;br /&gt;
*Updated ping retry logic&lt;br /&gt;
*Changes in OptOut process behavioral&lt;br /&gt;
*Enhanced Debugging and SDK logging&lt;br /&gt;
*Changes to API signature&lt;br /&gt;
*Introduced new API updateOTT to report current OTT status.&lt;br /&gt;
&lt;br /&gt;
== Release 4.0.0.8 ==&lt;br /&gt;
*Support for Nielsen DCR product (Digital Content Ratings)&lt;br /&gt;
**All the products should be migrated to the latest SDK.&lt;br /&gt;
**This SDK distribution does not have a native library component or shared object.&lt;br /&gt;
*Support for Nielsen App static measurement&lt;br /&gt;
*Support for Ad measurement&lt;br /&gt;
*Removal of Native C++ code&lt;br /&gt;
*Removed singleton restriction&lt;br /&gt;
*Support for iOS 9 and iOS 9 PIP mode&lt;br /&gt;
*General bug fix and performance improvements&lt;/div&gt;</summary>
		<author><name>KimBritt</name></author>
	</entry>
	<entry>
		<id>https://nielsentest.mywikis.net/w/index.php?title=iOS_SDK_Release_Notes&amp;diff=2359</id>
		<title>iOS SDK Release Notes</title>
		<link rel="alternate" type="text/html" href="https://nielsentest.mywikis.net/w/index.php?title=iOS_SDK_Release_Notes&amp;diff=2359"/>
		<updated>2018-01-18T17:56:14Z</updated>

		<summary type="html">&lt;p&gt;KimBritt: moved session id change up to All&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Breadcrumb|}} {{Breadcrumb|Digital}} {{CurrentBreadcrumb}}&lt;br /&gt;
[[Category:Digital]]&lt;br /&gt;
&lt;br /&gt;
== Release 6.0.0.1 (12-14-2017) ==&lt;br /&gt;
=== All Products ===&lt;br /&gt;
The below updates apply to all products. They do not require code changes. Please check your product's implementation guide for detailed instructions on how to implement best measurement of your product.&lt;br /&gt;
&lt;br /&gt;
*'''Appname Removal:''' Client will no longer need to pass Appname as part of SDK initialization because SDK will be retrieving the name from the application Info.plist file for iOS. Even if client continues to pass the Appname, SDK will ignore it.&lt;br /&gt;
*'''Default Privacy Url:''' Return default US privacy url instead of “nil” or blank string for userOptOutURLString.&lt;br /&gt;
*'''Event Data Reporting:''' Sending event data in milliseconds compared to seconds for more granular reporting.&lt;br /&gt;
*'''Minor Playhead Error:''' SDK will no longer send view ping if the first playhead position is 0 and if the playhead position is not incrementing. SDK will check if the playhead position will increment from 0 and then only send the view ping.&lt;br /&gt;
*'''Session Id Change:''' Updated the Session id format to align the AppSDK with the DAR/Browser SDK logic which generates 39 chars sessionid/uaid.&lt;br /&gt;
&lt;br /&gt;
=== DCR and DTVR ===&lt;br /&gt;
Affected content types are DCR and DTVR.&lt;br /&gt;
&lt;br /&gt;
*'''Viewability:''' Viewability is as an online tracking mechanism introduced in Nielsen SDK for representing the visibility of a video in the player along a playback that are actually viewed by the customers.&lt;br /&gt;
*'''Simplified SDK API:''' This will allow clients to have a simple interface to pass metadata to the sdk and reduce the number of api calls. This feature will currently be available for AppSDK only. New API (trackEvent) is introduced to simplify SDK integration for clients. New API will be implemented as a wrapper for the existing SDK API. Clients will be able to use either new or old SDK API.&lt;br /&gt;
*'''Bug Fix For DTVR:''' Fix for DTVR short ping having at parameter as “timer” instead of “sfview” during channel change scenario.  iOS fix for 1 trans ping per ID3 tag.&lt;br /&gt;
*'''Stop Event Requirement Change:''' ST event will be reported at the end of the content, on End API call regardless of playhead position and channel change.&lt;br /&gt;
&lt;br /&gt;
== Release 5.1.1.29 ==&lt;br /&gt;
*Genre parameter will be a part of DCR pings and the value will be reflected as part of c44 parameter.&lt;br /&gt;
*Merged adModel and adLoadType flags&lt;br /&gt;
*Fix for stop event data carried to next session’s duration ping&lt;br /&gt;
&lt;br /&gt;
== Release 5.1.1.25 ==&lt;br /&gt;
*Enhanced support for Digital Audio&lt;br /&gt;
*Ability to pass adloadtype as “linear” or “dynamic”&lt;br /&gt;
*Ability to detect end of content and static material through duration pings&lt;br /&gt;
*Acceptance of empty parameters with a warning message triggered, if a required parameter is missing&lt;br /&gt;
*Acceptance of case-insensitive JSON key values&lt;br /&gt;
*Configurable feature to show Ad view counts in the duration pings&lt;br /&gt;
*Automatic Pause Detection and Debug build detection&lt;br /&gt;
*Change of default ‘type’ from “ad” to “content”&lt;br /&gt;
*Removal of “Static” Launch Ping for Non-Static product implementations&lt;br /&gt;
*Fix for App crash when multiple threads are accessing the SQLite&lt;br /&gt;
&lt;br /&gt;
== Release 5.1.1.23 ==&lt;br /&gt;
*Ability to pass adloadtype as “linear” or “dynamic”&lt;br /&gt;
*Ability to detect end of content and static material through duration pings&lt;br /&gt;
*Acceptance of empty parameters with a warning message triggered, if a required parameter is missing&lt;br /&gt;
*Acceptance of case-insensitive JSON key values&lt;br /&gt;
*Configurable feature to show Ad view counts in the duration pings&lt;br /&gt;
*Automatic Pause Detection and Debug build detection&lt;br /&gt;
*Change of default ‘type’ from “ad” to “content”&lt;br /&gt;
*Removal of “Static” Launch Ping for Non-Static product implementations&lt;br /&gt;
*Fix for App crash when multiple threads are accessing the SQLite&lt;br /&gt;
&lt;br /&gt;
== Release 5.1.1.19 ==&lt;br /&gt;
*Fix for muting background music apps&lt;br /&gt;
&lt;br /&gt;
== Release 5.1.1.18 ==&lt;br /&gt;
*Minor bug fixes and performance improvement&lt;br /&gt;
&lt;br /&gt;
== Release 5.1.1.17 ==&lt;br /&gt;
*Added “seconds” place to the launch ping&lt;br /&gt;
*Ability to opt-out using “Limit Ad Tracking” feature&lt;br /&gt;
*Improved CPU Performance while apps are running in background&lt;br /&gt;
*Opt-Out pages can be served based on user’s language and locale from device&lt;br /&gt;
&lt;br /&gt;
== Release 5.1.1.12 ==&lt;br /&gt;
*Support for Nielsen TV Brand Effect&lt;br /&gt;
*Ability to set CMS parameters at a more global level&lt;br /&gt;
*Opt-out pages based on locale and country&lt;br /&gt;
*Opt-out policy based on the ‘Limit Ad Tracking’ flag&lt;br /&gt;
*Collection of additional device information&lt;br /&gt;
*Issue a warning in client developer’s console when ad is played for more than 5 minutes&lt;br /&gt;
*Removed the requirement for “type” parameter&lt;br /&gt;
*Limit the duration reported for App launch&lt;br /&gt;
&lt;br /&gt;
== Release 5.1.1.9 ==&lt;br /&gt;
*Fixed Linker error duplicate symbols for Reachability notification in iOS.&lt;br /&gt;
&lt;br /&gt;
== Release 5.1.1.7 ==&lt;br /&gt;
*Support for iOS 10&lt;br /&gt;
*Usage of stop API call is made optional when switching between content or advertising occurs.&lt;br /&gt;
*General bug fix and performance improvements&lt;br /&gt;
&lt;br /&gt;
== Release 5.1.1.5 ==&lt;br /&gt;
*Sending event level (button press data) data to census collections.&lt;br /&gt;
*Support for Pause timeout (from 30 minutes to 5 minutes)&lt;br /&gt;
*Changes in OTT when switching from mobile to Chromecast&lt;br /&gt;
*Self-error Reporting for iOS SDK&lt;br /&gt;
*General bug fix and performance improvements&lt;br /&gt;
&lt;br /&gt;
== Release 5.1.0.5 ==&lt;br /&gt;
*Combined SDK for DCR US and International (Germany)&lt;br /&gt;
*API to signal end of content (end API)&lt;br /&gt;
*Changes to use of stop API&lt;br /&gt;
*Support for OTT measurement&lt;br /&gt;
*Support for Pause timeout&lt;br /&gt;
*Offline viewing&lt;br /&gt;
*Updated API to support JSON object instead of string.&lt;br /&gt;
*Reporting of media URL and bundle ID&lt;br /&gt;
*Updated ping retry logic&lt;br /&gt;
*Changes in OptOut process behavioral&lt;br /&gt;
*Enhanced Debugging and SDK logging&lt;br /&gt;
*Changes to API signature&lt;br /&gt;
*Introduced new API updateOTT to report current OTT status.&lt;br /&gt;
&lt;br /&gt;
== Release 4.0.0.8 ==&lt;br /&gt;
*Support for Nielsen DCR product (Digital Content Ratings)&lt;br /&gt;
**All the products should be migrated to the latest SDK.&lt;br /&gt;
**This SDK distribution does not have a native library component or shared object.&lt;br /&gt;
*Support for Nielsen App static measurement&lt;br /&gt;
*Support for Ad measurement&lt;br /&gt;
*Removal of Native C++ code&lt;br /&gt;
*Removed singleton restriction&lt;br /&gt;
*Support for iOS 9 and iOS 9 PIP mode&lt;br /&gt;
*General bug fix and performance improvements&lt;/div&gt;</summary>
		<author><name>KimBritt</name></author>
	</entry>
	<entry>
		<id>https://nielsentest.mywikis.net/w/index.php?title=iOS_SDK_Release_Notes&amp;diff=2358</id>
		<title>iOS SDK Release Notes</title>
		<link rel="alternate" type="text/html" href="https://nielsentest.mywikis.net/w/index.php?title=iOS_SDK_Release_Notes&amp;diff=2358"/>
		<updated>2018-01-18T17:55:21Z</updated>

		<summary type="html">&lt;p&gt;KimBritt: title 2&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Breadcrumb|}} {{Breadcrumb|Digital}} {{CurrentBreadcrumb}}&lt;br /&gt;
[[Category:Digital]]&lt;br /&gt;
&lt;br /&gt;
== Release 6.0.0.1 (12-14-2017) ==&lt;br /&gt;
=== All Products ===&lt;br /&gt;
The below updates apply to all products. They do not require code changes. Please check your product's implementation guide for detailed instructions on how to implement best measurement of your product.&lt;br /&gt;
*'''Appname Removal:''' Client will no longer need to pass Appname as part of SDK initialization because SDK will be retrieving the name from the application Info.plist file for iOS. Even if client continues to pass the Appname, SDK will ignore it.&lt;br /&gt;
*'''Default Privacy Url:''' Return default US privacy url instead of “nil” or blank string for userOptOutURLString.&lt;br /&gt;
*'''Event Data Reporting:''' Sending event data in milliseconds compared to seconds for more granular reporting.&lt;br /&gt;
*'''Minor Playhead Error:''' SDK will no longer send view ping if the first playhead position is 0 and if the playhead position is not incrementing. SDK will check if the playhead position will increment from 0 and then only send the view ping.&lt;br /&gt;
&lt;br /&gt;
=== DCR and DTVR ===&lt;br /&gt;
Affected content types are DCR and DTVR.&lt;br /&gt;
&lt;br /&gt;
*'''Viewability:''' Viewability is as an online tracking mechanism introduced in Nielsen SDK for representing the visibility of a video in the player along a playback that are actually viewed by the customers.&lt;br /&gt;
*'''Simplified SDK API:''' This will allow clients to have a simple interface to pass metadata to the sdk and reduce the number of api calls. This feature will currently be available for AppSDK only. New API (trackEvent) is introduced to simplify SDK integration for clients. New API will be implemented as a wrapper for the existing SDK API. Clients will be able to use either new or old SDK API.&lt;br /&gt;
*'''Bug Fix For DTVR:''' Fix for DTVR short ping having at parameter as “timer” instead of “sfview” during channel change scenario.  iOS fix for 1 trans ping per ID3 tag.&lt;br /&gt;
*'''Stop Event Requirement Change:''' ST event will be reported at the end of the content, on End API call regardless of playhead position and channel change.&lt;br /&gt;
*'''Session Id Change:''' Updated the Session id format to align the AppSDK with the DAR/Browser SDK logic which generates 39 chars sessionid/uaid.&lt;br /&gt;
&lt;br /&gt;
== Release 5.1.1.29 ==&lt;br /&gt;
*Genre parameter will be a part of DCR pings and the value will be reflected as part of c44 parameter.&lt;br /&gt;
*Merged adModel and adLoadType flags&lt;br /&gt;
*Fix for stop event data carried to next session’s duration ping&lt;br /&gt;
&lt;br /&gt;
== Release 5.1.1.25 ==&lt;br /&gt;
*Enhanced support for Digital Audio&lt;br /&gt;
*Ability to pass adloadtype as “linear” or “dynamic”&lt;br /&gt;
*Ability to detect end of content and static material through duration pings&lt;br /&gt;
*Acceptance of empty parameters with a warning message triggered, if a required parameter is missing&lt;br /&gt;
*Acceptance of case-insensitive JSON key values&lt;br /&gt;
*Configurable feature to show Ad view counts in the duration pings&lt;br /&gt;
*Automatic Pause Detection and Debug build detection&lt;br /&gt;
*Change of default ‘type’ from “ad” to “content”&lt;br /&gt;
*Removal of “Static” Launch Ping for Non-Static product implementations&lt;br /&gt;
*Fix for App crash when multiple threads are accessing the SQLite&lt;br /&gt;
&lt;br /&gt;
== Release 5.1.1.23 ==&lt;br /&gt;
*Ability to pass adloadtype as “linear” or “dynamic”&lt;br /&gt;
*Ability to detect end of content and static material through duration pings&lt;br /&gt;
*Acceptance of empty parameters with a warning message triggered, if a required parameter is missing&lt;br /&gt;
*Acceptance of case-insensitive JSON key values&lt;br /&gt;
*Configurable feature to show Ad view counts in the duration pings&lt;br /&gt;
*Automatic Pause Detection and Debug build detection&lt;br /&gt;
*Change of default ‘type’ from “ad” to “content”&lt;br /&gt;
*Removal of “Static” Launch Ping for Non-Static product implementations&lt;br /&gt;
*Fix for App crash when multiple threads are accessing the SQLite&lt;br /&gt;
&lt;br /&gt;
== Release 5.1.1.19 ==&lt;br /&gt;
*Fix for muting background music apps&lt;br /&gt;
&lt;br /&gt;
== Release 5.1.1.18 ==&lt;br /&gt;
*Minor bug fixes and performance improvement&lt;br /&gt;
&lt;br /&gt;
== Release 5.1.1.17 ==&lt;br /&gt;
*Added “seconds” place to the launch ping&lt;br /&gt;
*Ability to opt-out using “Limit Ad Tracking” feature&lt;br /&gt;
*Improved CPU Performance while apps are running in background&lt;br /&gt;
*Opt-Out pages can be served based on user’s language and locale from device&lt;br /&gt;
&lt;br /&gt;
== Release 5.1.1.12 ==&lt;br /&gt;
*Support for Nielsen TV Brand Effect&lt;br /&gt;
*Ability to set CMS parameters at a more global level&lt;br /&gt;
*Opt-out pages based on locale and country&lt;br /&gt;
*Opt-out policy based on the ‘Limit Ad Tracking’ flag&lt;br /&gt;
*Collection of additional device information&lt;br /&gt;
*Issue a warning in client developer’s console when ad is played for more than 5 minutes&lt;br /&gt;
*Removed the requirement for “type” parameter&lt;br /&gt;
*Limit the duration reported for App launch&lt;br /&gt;
&lt;br /&gt;
== Release 5.1.1.9 ==&lt;br /&gt;
*Fixed Linker error duplicate symbols for Reachability notification in iOS.&lt;br /&gt;
&lt;br /&gt;
== Release 5.1.1.7 ==&lt;br /&gt;
*Support for iOS 10&lt;br /&gt;
*Usage of stop API call is made optional when switching between content or advertising occurs.&lt;br /&gt;
*General bug fix and performance improvements&lt;br /&gt;
&lt;br /&gt;
== Release 5.1.1.5 ==&lt;br /&gt;
*Sending event level (button press data) data to census collections.&lt;br /&gt;
*Support for Pause timeout (from 30 minutes to 5 minutes)&lt;br /&gt;
*Changes in OTT when switching from mobile to Chromecast&lt;br /&gt;
*Self-error Reporting for iOS SDK&lt;br /&gt;
*General bug fix and performance improvements&lt;br /&gt;
&lt;br /&gt;
== Release 5.1.0.5 ==&lt;br /&gt;
*Combined SDK for DCR US and International (Germany)&lt;br /&gt;
*API to signal end of content (end API)&lt;br /&gt;
*Changes to use of stop API&lt;br /&gt;
*Support for OTT measurement&lt;br /&gt;
*Support for Pause timeout&lt;br /&gt;
*Offline viewing&lt;br /&gt;
*Updated API to support JSON object instead of string.&lt;br /&gt;
*Reporting of media URL and bundle ID&lt;br /&gt;
*Updated ping retry logic&lt;br /&gt;
*Changes in OptOut process behavioral&lt;br /&gt;
*Enhanced Debugging and SDK logging&lt;br /&gt;
*Changes to API signature&lt;br /&gt;
*Introduced new API updateOTT to report current OTT status.&lt;br /&gt;
&lt;br /&gt;
== Release 4.0.0.8 ==&lt;br /&gt;
*Support for Nielsen DCR product (Digital Content Ratings)&lt;br /&gt;
**All the products should be migrated to the latest SDK.&lt;br /&gt;
**This SDK distribution does not have a native library component or shared object.&lt;br /&gt;
*Support for Nielsen App static measurement&lt;br /&gt;
*Support for Ad measurement&lt;br /&gt;
*Removal of Native C++ code&lt;br /&gt;
*Removed singleton restriction&lt;br /&gt;
*Support for iOS 9 and iOS 9 PIP mode&lt;br /&gt;
*General bug fix and performance improvements&lt;/div&gt;</summary>
		<author><name>KimBritt</name></author>
	</entry>
	<entry>
		<id>https://nielsentest.mywikis.net/w/index.php?title=iOS_SDK_Release_Notes&amp;diff=2357</id>
		<title>iOS SDK Release Notes</title>
		<link rel="alternate" type="text/html" href="https://nielsentest.mywikis.net/w/index.php?title=iOS_SDK_Release_Notes&amp;diff=2357"/>
		<updated>2018-01-18T17:54:39Z</updated>

		<summary type="html">&lt;p&gt;KimBritt: title&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Breadcrumb|}} {{Breadcrumb|Digital}} {{CurrentBreadcrumb}}&lt;br /&gt;
[[Category:Digital]]&lt;br /&gt;
&lt;br /&gt;
== Release 6.0.0.1 (12-14-2017) ==&lt;br /&gt;
=== All Products ===&lt;br /&gt;
The below updates apply to all products. They do not require code changes. Please check your product's implementation guide for detailed instructions on how to implement best measurement of your product.&lt;br /&gt;
*'''Appname Removal:''' Client will no longer need to pass Appname as part of SDK initialization because SDK will be retrieving the name from the application Info.plist file for iOS. Even if client continues to pass the Appname, SDK will ignore it.&lt;br /&gt;
*'''Default Privacy Url:''' Return default US privacy url instead of “nil” or blank string for userOptOutURLString.&lt;br /&gt;
*'''Event Data Reporting:''' Sending event data in milliseconds compared to seconds for more granular reporting.&lt;br /&gt;
*'''Minor Playhead Error:''' SDK will no longer send view ping if the first playhead position is 0 and if the playhead position is not incrementing. SDK will check if the playhead position will increment from 0 and then only send the view ping.&lt;br /&gt;
&lt;br /&gt;
=== Changes Affecting DCR and DTVR (not Digital Audio) ===&lt;br /&gt;
Affected content types are DCR and DTVR.&lt;br /&gt;
&lt;br /&gt;
*'''Viewability:''' Viewability is as an online tracking mechanism introduced in Nielsen SDK for representing the visibility of a video in the player along a playback that are actually viewed by the customers.&lt;br /&gt;
*'''Simplified SDK API:''' This will allow clients to have a simple interface to pass metadata to the sdk and reduce the number of api calls. This feature will currently be available for AppSDK only. New API (trackEvent) is introduced to simplify SDK integration for clients. New API will be implemented as a wrapper for the existing SDK API. Clients will be able to use either new or old SDK API.&lt;br /&gt;
*'''Bug Fix For DTVR:''' Fix for DTVR short ping having at parameter as “timer” instead of “sfview” during channel change scenario.  iOS fix for 1 trans ping per ID3 tag.&lt;br /&gt;
*'''Stop Event Requirement Change:''' ST event will be reported at the end of the content, on End API call regardless of playhead position and channel change.&lt;br /&gt;
*'''Session Id Change:''' Updated the Session id format to align the AppSDK with the DAR/Browser SDK logic which generates 39 chars sessionid/uaid.&lt;br /&gt;
&lt;br /&gt;
== Release 5.1.1.29 ==&lt;br /&gt;
*Genre parameter will be a part of DCR pings and the value will be reflected as part of c44 parameter.&lt;br /&gt;
*Merged adModel and adLoadType flags&lt;br /&gt;
*Fix for stop event data carried to next session’s duration ping&lt;br /&gt;
&lt;br /&gt;
== Release 5.1.1.25 ==&lt;br /&gt;
*Enhanced support for Digital Audio&lt;br /&gt;
*Ability to pass adloadtype as “linear” or “dynamic”&lt;br /&gt;
*Ability to detect end of content and static material through duration pings&lt;br /&gt;
*Acceptance of empty parameters with a warning message triggered, if a required parameter is missing&lt;br /&gt;
*Acceptance of case-insensitive JSON key values&lt;br /&gt;
*Configurable feature to show Ad view counts in the duration pings&lt;br /&gt;
*Automatic Pause Detection and Debug build detection&lt;br /&gt;
*Change of default ‘type’ from “ad” to “content”&lt;br /&gt;
*Removal of “Static” Launch Ping for Non-Static product implementations&lt;br /&gt;
*Fix for App crash when multiple threads are accessing the SQLite&lt;br /&gt;
&lt;br /&gt;
== Release 5.1.1.23 ==&lt;br /&gt;
*Ability to pass adloadtype as “linear” or “dynamic”&lt;br /&gt;
*Ability to detect end of content and static material through duration pings&lt;br /&gt;
*Acceptance of empty parameters with a warning message triggered, if a required parameter is missing&lt;br /&gt;
*Acceptance of case-insensitive JSON key values&lt;br /&gt;
*Configurable feature to show Ad view counts in the duration pings&lt;br /&gt;
*Automatic Pause Detection and Debug build detection&lt;br /&gt;
*Change of default ‘type’ from “ad” to “content”&lt;br /&gt;
*Removal of “Static” Launch Ping for Non-Static product implementations&lt;br /&gt;
*Fix for App crash when multiple threads are accessing the SQLite&lt;br /&gt;
&lt;br /&gt;
== Release 5.1.1.19 ==&lt;br /&gt;
*Fix for muting background music apps&lt;br /&gt;
&lt;br /&gt;
== Release 5.1.1.18 ==&lt;br /&gt;
*Minor bug fixes and performance improvement&lt;br /&gt;
&lt;br /&gt;
== Release 5.1.1.17 ==&lt;br /&gt;
*Added “seconds” place to the launch ping&lt;br /&gt;
*Ability to opt-out using “Limit Ad Tracking” feature&lt;br /&gt;
*Improved CPU Performance while apps are running in background&lt;br /&gt;
*Opt-Out pages can be served based on user’s language and locale from device&lt;br /&gt;
&lt;br /&gt;
== Release 5.1.1.12 ==&lt;br /&gt;
*Support for Nielsen TV Brand Effect&lt;br /&gt;
*Ability to set CMS parameters at a more global level&lt;br /&gt;
*Opt-out pages based on locale and country&lt;br /&gt;
*Opt-out policy based on the ‘Limit Ad Tracking’ flag&lt;br /&gt;
*Collection of additional device information&lt;br /&gt;
*Issue a warning in client developer’s console when ad is played for more than 5 minutes&lt;br /&gt;
*Removed the requirement for “type” parameter&lt;br /&gt;
*Limit the duration reported for App launch&lt;br /&gt;
&lt;br /&gt;
== Release 5.1.1.9 ==&lt;br /&gt;
*Fixed Linker error duplicate symbols for Reachability notification in iOS.&lt;br /&gt;
&lt;br /&gt;
== Release 5.1.1.7 ==&lt;br /&gt;
*Support for iOS 10&lt;br /&gt;
*Usage of stop API call is made optional when switching between content or advertising occurs.&lt;br /&gt;
*General bug fix and performance improvements&lt;br /&gt;
&lt;br /&gt;
== Release 5.1.1.5 ==&lt;br /&gt;
*Sending event level (button press data) data to census collections.&lt;br /&gt;
*Support for Pause timeout (from 30 minutes to 5 minutes)&lt;br /&gt;
*Changes in OTT when switching from mobile to Chromecast&lt;br /&gt;
*Self-error Reporting for iOS SDK&lt;br /&gt;
*General bug fix and performance improvements&lt;br /&gt;
&lt;br /&gt;
== Release 5.1.0.5 ==&lt;br /&gt;
*Combined SDK for DCR US and International (Germany)&lt;br /&gt;
*API to signal end of content (end API)&lt;br /&gt;
*Changes to use of stop API&lt;br /&gt;
*Support for OTT measurement&lt;br /&gt;
*Support for Pause timeout&lt;br /&gt;
*Offline viewing&lt;br /&gt;
*Updated API to support JSON object instead of string.&lt;br /&gt;
*Reporting of media URL and bundle ID&lt;br /&gt;
*Updated ping retry logic&lt;br /&gt;
*Changes in OptOut process behavioral&lt;br /&gt;
*Enhanced Debugging and SDK logging&lt;br /&gt;
*Changes to API signature&lt;br /&gt;
*Introduced new API updateOTT to report current OTT status.&lt;br /&gt;
&lt;br /&gt;
== Release 4.0.0.8 ==&lt;br /&gt;
*Support for Nielsen DCR product (Digital Content Ratings)&lt;br /&gt;
**All the products should be migrated to the latest SDK.&lt;br /&gt;
**This SDK distribution does not have a native library component or shared object.&lt;br /&gt;
*Support for Nielsen App static measurement&lt;br /&gt;
*Support for Ad measurement&lt;br /&gt;
*Removal of Native C++ code&lt;br /&gt;
*Removed singleton restriction&lt;br /&gt;
*Support for iOS 9 and iOS 9 PIP mode&lt;br /&gt;
*General bug fix and performance improvements&lt;/div&gt;</summary>
		<author><name>KimBritt</name></author>
	</entry>
	<entry>
		<id>https://nielsentest.mywikis.net/w/index.php?title=iOS_SDK_Release_Notes&amp;diff=2356</id>
		<title>iOS SDK Release Notes</title>
		<link rel="alternate" type="text/html" href="https://nielsentest.mywikis.net/w/index.php?title=iOS_SDK_Release_Notes&amp;diff=2356"/>
		<updated>2018-01-18T17:53:15Z</updated>

		<summary type="html">&lt;p&gt;KimBritt: removed for static&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Breadcrumb|}} {{Breadcrumb|Digital}} {{CurrentBreadcrumb}}&lt;br /&gt;
[[Category:Digital]]&lt;br /&gt;
&lt;br /&gt;
== Release 6.0.0.1 (12-14-2017) ==&lt;br /&gt;
=== Changes Affecting All Products ===&lt;br /&gt;
The below updates apply to all products. They do not require code changes. Please check your product's implementation guide for detailed instructions on how to implement best measurement of your product.&lt;br /&gt;
*'''Appname Removal:''' Client will no longer need to pass Appname as part of SDK initialization because SDK will be retrieving the name from the application Info.plist file for iOS. Even if client continues to pass the Appname, SDK will ignore it.&lt;br /&gt;
*'''Default Privacy Url:''' Return default US privacy url instead of “nil” or blank string for userOptOutURLString.&lt;br /&gt;
*'''Event Data Reporting:''' Sending event data in milliseconds compared to seconds for more granular reporting.&lt;br /&gt;
*'''Minor Playhead Error:''' SDK will no longer send view ping if the first playhead position is 0 and if the playhead position is not incrementing. SDK will check if the playhead position will increment from 0 and then only send the view ping.&lt;br /&gt;
&lt;br /&gt;
=== Changes Affecting DCR and DTVR (not Digital Audio) ===&lt;br /&gt;
Affected content types are DCR and DTVR.&lt;br /&gt;
&lt;br /&gt;
*'''Viewability:''' Viewability is as an online tracking mechanism introduced in Nielsen SDK for representing the visibility of a video in the player along a playback that are actually viewed by the customers.&lt;br /&gt;
*'''Simplified SDK API:''' This will allow clients to have a simple interface to pass metadata to the sdk and reduce the number of api calls. This feature will currently be available for AppSDK only. New API (trackEvent) is introduced to simplify SDK integration for clients. New API will be implemented as a wrapper for the existing SDK API. Clients will be able to use either new or old SDK API.&lt;br /&gt;
*'''Bug Fix For DTVR:''' Fix for DTVR short ping having at parameter as “timer” instead of “sfview” during channel change scenario.  iOS fix for 1 trans ping per ID3 tag.&lt;br /&gt;
*'''Stop Event Requirement Change:''' ST event will be reported at the end of the content, on End API call regardless of playhead position and channel change.&lt;br /&gt;
*'''Session Id Change:''' Updated the Session id format to align the AppSDK with the DAR/Browser SDK logic which generates 39 chars sessionid/uaid.&lt;br /&gt;
&lt;br /&gt;
== Release 5.1.1.29 ==&lt;br /&gt;
*Genre parameter will be a part of DCR pings and the value will be reflected as part of c44 parameter.&lt;br /&gt;
*Merged adModel and adLoadType flags&lt;br /&gt;
*Fix for stop event data carried to next session’s duration ping&lt;br /&gt;
&lt;br /&gt;
== Release 5.1.1.25 ==&lt;br /&gt;
*Enhanced support for Digital Audio&lt;br /&gt;
*Ability to pass adloadtype as “linear” or “dynamic”&lt;br /&gt;
*Ability to detect end of content and static material through duration pings&lt;br /&gt;
*Acceptance of empty parameters with a warning message triggered, if a required parameter is missing&lt;br /&gt;
*Acceptance of case-insensitive JSON key values&lt;br /&gt;
*Configurable feature to show Ad view counts in the duration pings&lt;br /&gt;
*Automatic Pause Detection and Debug build detection&lt;br /&gt;
*Change of default ‘type’ from “ad” to “content”&lt;br /&gt;
*Removal of “Static” Launch Ping for Non-Static product implementations&lt;br /&gt;
*Fix for App crash when multiple threads are accessing the SQLite&lt;br /&gt;
&lt;br /&gt;
== Release 5.1.1.23 ==&lt;br /&gt;
*Ability to pass adloadtype as “linear” or “dynamic”&lt;br /&gt;
*Ability to detect end of content and static material through duration pings&lt;br /&gt;
*Acceptance of empty parameters with a warning message triggered, if a required parameter is missing&lt;br /&gt;
*Acceptance of case-insensitive JSON key values&lt;br /&gt;
*Configurable feature to show Ad view counts in the duration pings&lt;br /&gt;
*Automatic Pause Detection and Debug build detection&lt;br /&gt;
*Change of default ‘type’ from “ad” to “content”&lt;br /&gt;
*Removal of “Static” Launch Ping for Non-Static product implementations&lt;br /&gt;
*Fix for App crash when multiple threads are accessing the SQLite&lt;br /&gt;
&lt;br /&gt;
== Release 5.1.1.19 ==&lt;br /&gt;
*Fix for muting background music apps&lt;br /&gt;
&lt;br /&gt;
== Release 5.1.1.18 ==&lt;br /&gt;
*Minor bug fixes and performance improvement&lt;br /&gt;
&lt;br /&gt;
== Release 5.1.1.17 ==&lt;br /&gt;
*Added “seconds” place to the launch ping&lt;br /&gt;
*Ability to opt-out using “Limit Ad Tracking” feature&lt;br /&gt;
*Improved CPU Performance while apps are running in background&lt;br /&gt;
*Opt-Out pages can be served based on user’s language and locale from device&lt;br /&gt;
&lt;br /&gt;
== Release 5.1.1.12 ==&lt;br /&gt;
*Support for Nielsen TV Brand Effect&lt;br /&gt;
*Ability to set CMS parameters at a more global level&lt;br /&gt;
*Opt-out pages based on locale and country&lt;br /&gt;
*Opt-out policy based on the ‘Limit Ad Tracking’ flag&lt;br /&gt;
*Collection of additional device information&lt;br /&gt;
*Issue a warning in client developer’s console when ad is played for more than 5 minutes&lt;br /&gt;
*Removed the requirement for “type” parameter&lt;br /&gt;
*Limit the duration reported for App launch&lt;br /&gt;
&lt;br /&gt;
== Release 5.1.1.9 ==&lt;br /&gt;
*Fixed Linker error duplicate symbols for Reachability notification in iOS.&lt;br /&gt;
&lt;br /&gt;
== Release 5.1.1.7 ==&lt;br /&gt;
*Support for iOS 10&lt;br /&gt;
*Usage of stop API call is made optional when switching between content or advertising occurs.&lt;br /&gt;
*General bug fix and performance improvements&lt;br /&gt;
&lt;br /&gt;
== Release 5.1.1.5 ==&lt;br /&gt;
*Sending event level (button press data) data to census collections.&lt;br /&gt;
*Support for Pause timeout (from 30 minutes to 5 minutes)&lt;br /&gt;
*Changes in OTT when switching from mobile to Chromecast&lt;br /&gt;
*Self-error Reporting for iOS SDK&lt;br /&gt;
*General bug fix and performance improvements&lt;br /&gt;
&lt;br /&gt;
== Release 5.1.0.5 ==&lt;br /&gt;
*Combined SDK for DCR US and International (Germany)&lt;br /&gt;
*API to signal end of content (end API)&lt;br /&gt;
*Changes to use of stop API&lt;br /&gt;
*Support for OTT measurement&lt;br /&gt;
*Support for Pause timeout&lt;br /&gt;
*Offline viewing&lt;br /&gt;
*Updated API to support JSON object instead of string.&lt;br /&gt;
*Reporting of media URL and bundle ID&lt;br /&gt;
*Updated ping retry logic&lt;br /&gt;
*Changes in OptOut process behavioral&lt;br /&gt;
*Enhanced Debugging and SDK logging&lt;br /&gt;
*Changes to API signature&lt;br /&gt;
*Introduced new API updateOTT to report current OTT status.&lt;br /&gt;
&lt;br /&gt;
== Release 4.0.0.8 ==&lt;br /&gt;
*Support for Nielsen DCR product (Digital Content Ratings)&lt;br /&gt;
**All the products should be migrated to the latest SDK.&lt;br /&gt;
**This SDK distribution does not have a native library component or shared object.&lt;br /&gt;
*Support for Nielsen App static measurement&lt;br /&gt;
*Support for Ad measurement&lt;br /&gt;
*Removal of Native C++ code&lt;br /&gt;
*Removed singleton restriction&lt;br /&gt;
*Support for iOS 9 and iOS 9 PIP mode&lt;br /&gt;
*General bug fix and performance improvements&lt;/div&gt;</summary>
		<author><name>KimBritt</name></author>
	</entry>
	<entry>
		<id>https://nielsentest.mywikis.net/w/index.php?title=iOS_SDK_Release_Notes&amp;diff=2355</id>
		<title>iOS SDK Release Notes</title>
		<link rel="alternate" type="text/html" href="https://nielsentest.mywikis.net/w/index.php?title=iOS_SDK_Release_Notes&amp;diff=2355"/>
		<updated>2018-01-18T17:50:29Z</updated>

		<summary type="html">&lt;p&gt;KimBritt: online&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Breadcrumb|}} {{Breadcrumb|Digital}} {{CurrentBreadcrumb}}&lt;br /&gt;
[[Category:Digital]]&lt;br /&gt;
&lt;br /&gt;
== Release 6.0.0.1 (12-14-2017) ==&lt;br /&gt;
=== Changes Affecting All Products ===&lt;br /&gt;
The below updates apply to all products. They do not require code changes. Please check your product's implementation guide for detailed instructions on how to implement best measurement of your product.&lt;br /&gt;
*'''Appname Removal:''' Client will no longer need to pass Appname as part of SDK initialization because SDK will be retrieving the name from the application Info.plist file for iOS. Even if client continues to pass the Appname, SDK will ignore it.&lt;br /&gt;
*'''Default Privacy Url:''' Return default US privacy url instead of “nil” or blank string for userOptOutURLString.&lt;br /&gt;
*'''Event Data Reporting:''' Sending event data in milliseconds compared to seconds for more granular reporting.&lt;br /&gt;
*'''Minor Playhead Error:''' SDK will no longer send view ping if the first playhead position is 0 and if the playhead position is not incrementing. SDK will check if the playhead position will increment from 0 and then only send the view ping.&lt;br /&gt;
&lt;br /&gt;
=== Changes Affecting DCR and DTVR (not Digital Audio) ===&lt;br /&gt;
Affected content types are DCR and DTVR, which measure video and static pages, and online television respectively. &lt;br /&gt;
&lt;br /&gt;
*'''Viewability:''' Viewability is as an online tracking mechanism introduced in Nielsen SDK for representing the visibility of a video in the player along a playback that are actually viewed by the customers.&lt;br /&gt;
*'''Simplified SDK API:''' This will allow clients to have a simple interface to pass metadata to the sdk and reduce the number of api calls. This feature will currently be available for AppSDK only. New API (trackEvent) is introduced to simplify SDK integration for clients. New API will be implemented as a wrapper for the existing SDK API. Clients will be able to use either new or old SDK API.&lt;br /&gt;
*'''Bug Fix For DTVR:''' Fix for DTVR short ping having at parameter as “timer” instead of “sfview” during channel change scenario.  iOS fix for 1 trans ping per ID3 tag.&lt;br /&gt;
*'''Stop Event Requirement Change:''' ST event will be reported at the end of the content, on End API call regardless of playhead position and channel change.&lt;br /&gt;
*'''Session Id Change:''' Updated the Session id format to align the AppSDK with the DAR/Browser SDK logic which generates 39 chars sessionid/uaid.&lt;br /&gt;
&lt;br /&gt;
== Release 5.1.1.29 ==&lt;br /&gt;
*Genre parameter will be a part of DCR pings and the value will be reflected as part of c44 parameter.&lt;br /&gt;
*Merged adModel and adLoadType flags&lt;br /&gt;
*Fix for stop event data carried to next session’s duration ping&lt;br /&gt;
&lt;br /&gt;
== Release 5.1.1.25 ==&lt;br /&gt;
*Enhanced support for Digital Audio&lt;br /&gt;
*Ability to pass adloadtype as “linear” or “dynamic”&lt;br /&gt;
*Ability to detect end of content and static material through duration pings&lt;br /&gt;
*Acceptance of empty parameters with a warning message triggered, if a required parameter is missing&lt;br /&gt;
*Acceptance of case-insensitive JSON key values&lt;br /&gt;
*Configurable feature to show Ad view counts in the duration pings&lt;br /&gt;
*Automatic Pause Detection and Debug build detection&lt;br /&gt;
*Change of default ‘type’ from “ad” to “content”&lt;br /&gt;
*Removal of “Static” Launch Ping for Non-Static product implementations&lt;br /&gt;
*Fix for App crash when multiple threads are accessing the SQLite&lt;br /&gt;
&lt;br /&gt;
== Release 5.1.1.23 ==&lt;br /&gt;
*Ability to pass adloadtype as “linear” or “dynamic”&lt;br /&gt;
*Ability to detect end of content and static material through duration pings&lt;br /&gt;
*Acceptance of empty parameters with a warning message triggered, if a required parameter is missing&lt;br /&gt;
*Acceptance of case-insensitive JSON key values&lt;br /&gt;
*Configurable feature to show Ad view counts in the duration pings&lt;br /&gt;
*Automatic Pause Detection and Debug build detection&lt;br /&gt;
*Change of default ‘type’ from “ad” to “content”&lt;br /&gt;
*Removal of “Static” Launch Ping for Non-Static product implementations&lt;br /&gt;
*Fix for App crash when multiple threads are accessing the SQLite&lt;br /&gt;
&lt;br /&gt;
== Release 5.1.1.19 ==&lt;br /&gt;
*Fix for muting background music apps&lt;br /&gt;
&lt;br /&gt;
== Release 5.1.1.18 ==&lt;br /&gt;
*Minor bug fixes and performance improvement&lt;br /&gt;
&lt;br /&gt;
== Release 5.1.1.17 ==&lt;br /&gt;
*Added “seconds” place to the launch ping&lt;br /&gt;
*Ability to opt-out using “Limit Ad Tracking” feature&lt;br /&gt;
*Improved CPU Performance while apps are running in background&lt;br /&gt;
*Opt-Out pages can be served based on user’s language and locale from device&lt;br /&gt;
&lt;br /&gt;
== Release 5.1.1.12 ==&lt;br /&gt;
*Support for Nielsen TV Brand Effect&lt;br /&gt;
*Ability to set CMS parameters at a more global level&lt;br /&gt;
*Opt-out pages based on locale and country&lt;br /&gt;
*Opt-out policy based on the ‘Limit Ad Tracking’ flag&lt;br /&gt;
*Collection of additional device information&lt;br /&gt;
*Issue a warning in client developer’s console when ad is played for more than 5 minutes&lt;br /&gt;
*Removed the requirement for “type” parameter&lt;br /&gt;
*Limit the duration reported for App launch&lt;br /&gt;
&lt;br /&gt;
== Release 5.1.1.9 ==&lt;br /&gt;
*Fixed Linker error duplicate symbols for Reachability notification in iOS.&lt;br /&gt;
&lt;br /&gt;
== Release 5.1.1.7 ==&lt;br /&gt;
*Support for iOS 10&lt;br /&gt;
*Usage of stop API call is made optional when switching between content or advertising occurs.&lt;br /&gt;
*General bug fix and performance improvements&lt;br /&gt;
&lt;br /&gt;
== Release 5.1.1.5 ==&lt;br /&gt;
*Sending event level (button press data) data to census collections.&lt;br /&gt;
*Support for Pause timeout (from 30 minutes to 5 minutes)&lt;br /&gt;
*Changes in OTT when switching from mobile to Chromecast&lt;br /&gt;
*Self-error Reporting for iOS SDK&lt;br /&gt;
*General bug fix and performance improvements&lt;br /&gt;
&lt;br /&gt;
== Release 5.1.0.5 ==&lt;br /&gt;
*Combined SDK for DCR US and International (Germany)&lt;br /&gt;
*API to signal end of content (end API)&lt;br /&gt;
*Changes to use of stop API&lt;br /&gt;
*Support for OTT measurement&lt;br /&gt;
*Support for Pause timeout&lt;br /&gt;
*Offline viewing&lt;br /&gt;
*Updated API to support JSON object instead of string.&lt;br /&gt;
*Reporting of media URL and bundle ID&lt;br /&gt;
*Updated ping retry logic&lt;br /&gt;
*Changes in OptOut process behavioral&lt;br /&gt;
*Enhanced Debugging and SDK logging&lt;br /&gt;
*Changes to API signature&lt;br /&gt;
*Introduced new API updateOTT to report current OTT status.&lt;br /&gt;
&lt;br /&gt;
== Release 4.0.0.8 ==&lt;br /&gt;
*Support for Nielsen DCR product (Digital Content Ratings)&lt;br /&gt;
**All the products should be migrated to the latest SDK.&lt;br /&gt;
**This SDK distribution does not have a native library component or shared object.&lt;br /&gt;
*Support for Nielsen App static measurement&lt;br /&gt;
*Support for Ad measurement&lt;br /&gt;
*Removal of Native C++ code&lt;br /&gt;
*Removed singleton restriction&lt;br /&gt;
*Support for iOS 9 and iOS 9 PIP mode&lt;br /&gt;
*General bug fix and performance improvements&lt;/div&gt;</summary>
		<author><name>KimBritt</name></author>
	</entry>
	<entry>
		<id>https://nielsentest.mywikis.net/w/index.php?title=iOS_SDK_Release_Notes&amp;diff=2354</id>
		<title>iOS SDK Release Notes</title>
		<link rel="alternate" type="text/html" href="https://nielsentest.mywikis.net/w/index.php?title=iOS_SDK_Release_Notes&amp;diff=2354"/>
		<updated>2018-01-18T17:48:27Z</updated>

		<summary type="html">&lt;p&gt;KimBritt: Updated Release Notes for audio clients&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Breadcrumb|}} {{Breadcrumb|Digital}} {{CurrentBreadcrumb}}&lt;br /&gt;
[[Category:Digital]]&lt;br /&gt;
&lt;br /&gt;
== Release 6.0.0.1 (12-14-2017) ==&lt;br /&gt;
=== Changes Affecting All Products ===&lt;br /&gt;
The below updates apply to all products. They do not require code changes. Please check your product's implementation guide for detailed instructions on how to implement best measurement of your product.&lt;br /&gt;
*'''Appname Removal:''' Client will no longer need to pass Appname as part of SDK initialization because SDK will be retrieving the name from the application Info.plist file for iOS. Even if client continues to pass the Appname, SDK will ignore it.&lt;br /&gt;
*'''Default Privacy Url:''' Return default US privacy url instead of “nil” or blank string for userOptOutURLString.&lt;br /&gt;
*'''Event Data Reporting:''' Sending event data in milliseconds compared to seconds for more granular reporting.&lt;br /&gt;
*'''Minor Playhead Error:''' SDK will no longer send view ping if the first playhead position is 0 and if the playhead position is not incrementing. SDK will check if the playhead position will increment from 0 and then only send the view ping.&lt;br /&gt;
&lt;br /&gt;
=== Changes Affecting DCR and DTVR (not Digital Audio) ===&lt;br /&gt;
Affected content types are DCR and DTVR, which measure video and static pages, and television respectively. &lt;br /&gt;
&lt;br /&gt;
*'''Viewability:''' Viewability is as an online tracking mechanism introduced in Nielsen SDK for representing the visibility of a video in the player along a playback that are actually viewed by the customers.&lt;br /&gt;
*'''Simplified SDK API:''' This will allow clients to have a simple interface to pass metadata to the sdk and reduce the number of api calls. This feature will currently be available for AppSDK only. New API (trackEvent) is introduced to simplify SDK integration for clients. New API will be implemented as a wrapper for the existing SDK API. Clients will be able to use either new or old SDK API.&lt;br /&gt;
*'''Bug Fix For DTVR:''' Fix for DTVR short ping having at parameter as “timer” instead of “sfview” during channel change scenario.  iOS fix for 1 trans ping per ID3 tag.&lt;br /&gt;
*'''Stop Event Requirement Change:''' ST event will be reported at the end of the content, on End API call regardless of playhead position and channel change.&lt;br /&gt;
*'''Session Id Change:''' Updated the Session id format to align the AppSDK with the DAR/Browser SDK logic which generates 39 chars sessionid/uaid.&lt;br /&gt;
&lt;br /&gt;
== Release 5.1.1.29 ==&lt;br /&gt;
*Genre parameter will be a part of DCR pings and the value will be reflected as part of c44 parameter.&lt;br /&gt;
*Merged adModel and adLoadType flags&lt;br /&gt;
*Fix for stop event data carried to next session’s duration ping&lt;br /&gt;
&lt;br /&gt;
== Release 5.1.1.25 ==&lt;br /&gt;
*Enhanced support for Digital Audio&lt;br /&gt;
*Ability to pass adloadtype as “linear” or “dynamic”&lt;br /&gt;
*Ability to detect end of content and static material through duration pings&lt;br /&gt;
*Acceptance of empty parameters with a warning message triggered, if a required parameter is missing&lt;br /&gt;
*Acceptance of case-insensitive JSON key values&lt;br /&gt;
*Configurable feature to show Ad view counts in the duration pings&lt;br /&gt;
*Automatic Pause Detection and Debug build detection&lt;br /&gt;
*Change of default ‘type’ from “ad” to “content”&lt;br /&gt;
*Removal of “Static” Launch Ping for Non-Static product implementations&lt;br /&gt;
*Fix for App crash when multiple threads are accessing the SQLite&lt;br /&gt;
&lt;br /&gt;
== Release 5.1.1.23 ==&lt;br /&gt;
*Ability to pass adloadtype as “linear” or “dynamic”&lt;br /&gt;
*Ability to detect end of content and static material through duration pings&lt;br /&gt;
*Acceptance of empty parameters with a warning message triggered, if a required parameter is missing&lt;br /&gt;
*Acceptance of case-insensitive JSON key values&lt;br /&gt;
*Configurable feature to show Ad view counts in the duration pings&lt;br /&gt;
*Automatic Pause Detection and Debug build detection&lt;br /&gt;
*Change of default ‘type’ from “ad” to “content”&lt;br /&gt;
*Removal of “Static” Launch Ping for Non-Static product implementations&lt;br /&gt;
*Fix for App crash when multiple threads are accessing the SQLite&lt;br /&gt;
&lt;br /&gt;
== Release 5.1.1.19 ==&lt;br /&gt;
*Fix for muting background music apps&lt;br /&gt;
&lt;br /&gt;
== Release 5.1.1.18 ==&lt;br /&gt;
*Minor bug fixes and performance improvement&lt;br /&gt;
&lt;br /&gt;
== Release 5.1.1.17 ==&lt;br /&gt;
*Added “seconds” place to the launch ping&lt;br /&gt;
*Ability to opt-out using “Limit Ad Tracking” feature&lt;br /&gt;
*Improved CPU Performance while apps are running in background&lt;br /&gt;
*Opt-Out pages can be served based on user’s language and locale from device&lt;br /&gt;
&lt;br /&gt;
== Release 5.1.1.12 ==&lt;br /&gt;
*Support for Nielsen TV Brand Effect&lt;br /&gt;
*Ability to set CMS parameters at a more global level&lt;br /&gt;
*Opt-out pages based on locale and country&lt;br /&gt;
*Opt-out policy based on the ‘Limit Ad Tracking’ flag&lt;br /&gt;
*Collection of additional device information&lt;br /&gt;
*Issue a warning in client developer’s console when ad is played for more than 5 minutes&lt;br /&gt;
*Removed the requirement for “type” parameter&lt;br /&gt;
*Limit the duration reported for App launch&lt;br /&gt;
&lt;br /&gt;
== Release 5.1.1.9 ==&lt;br /&gt;
*Fixed Linker error duplicate symbols for Reachability notification in iOS.&lt;br /&gt;
&lt;br /&gt;
== Release 5.1.1.7 ==&lt;br /&gt;
*Support for iOS 10&lt;br /&gt;
*Usage of stop API call is made optional when switching between content or advertising occurs.&lt;br /&gt;
*General bug fix and performance improvements&lt;br /&gt;
&lt;br /&gt;
== Release 5.1.1.5 ==&lt;br /&gt;
*Sending event level (button press data) data to census collections.&lt;br /&gt;
*Support for Pause timeout (from 30 minutes to 5 minutes)&lt;br /&gt;
*Changes in OTT when switching from mobile to Chromecast&lt;br /&gt;
*Self-error Reporting for iOS SDK&lt;br /&gt;
*General bug fix and performance improvements&lt;br /&gt;
&lt;br /&gt;
== Release 5.1.0.5 ==&lt;br /&gt;
*Combined SDK for DCR US and International (Germany)&lt;br /&gt;
*API to signal end of content (end API)&lt;br /&gt;
*Changes to use of stop API&lt;br /&gt;
*Support for OTT measurement&lt;br /&gt;
*Support for Pause timeout&lt;br /&gt;
*Offline viewing&lt;br /&gt;
*Updated API to support JSON object instead of string.&lt;br /&gt;
*Reporting of media URL and bundle ID&lt;br /&gt;
*Updated ping retry logic&lt;br /&gt;
*Changes in OptOut process behavioral&lt;br /&gt;
*Enhanced Debugging and SDK logging&lt;br /&gt;
*Changes to API signature&lt;br /&gt;
*Introduced new API updateOTT to report current OTT status.&lt;br /&gt;
&lt;br /&gt;
== Release 4.0.0.8 ==&lt;br /&gt;
*Support for Nielsen DCR product (Digital Content Ratings)&lt;br /&gt;
**All the products should be migrated to the latest SDK.&lt;br /&gt;
**This SDK distribution does not have a native library component or shared object.&lt;br /&gt;
*Support for Nielsen App static measurement&lt;br /&gt;
*Support for Ad measurement&lt;br /&gt;
*Removal of Native C++ code&lt;br /&gt;
*Removed singleton restriction&lt;br /&gt;
*Support for iOS 9 and iOS 9 PIP mode&lt;br /&gt;
*General bug fix and performance improvements&lt;/div&gt;</summary>
		<author><name>KimBritt</name></author>
	</entry>
	<entry>
		<id>https://nielsentest.mywikis.net/w/index.php?title=File:Browser_Stages2.png&amp;diff=2339</id>
		<title>File:Browser Stages2.png</title>
		<link rel="alternate" type="text/html" href="https://nielsentest.mywikis.net/w/index.php?title=File:Browser_Stages2.png&amp;diff=2339"/>
		<updated>2017-12-28T18:39:04Z</updated>

		<summary type="html">&lt;p&gt;KimBritt: KimBritt uploaded a new version of File:Browser Stages2.png&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;audio browser stages&lt;/div&gt;</summary>
		<author><name>KimBritt</name></author>
	</entry>
	<entry>
		<id>https://nielsentest.mywikis.net/w/index.php?title=File:Browser_Stages2.png&amp;diff=2337</id>
		<title>File:Browser Stages2.png</title>
		<link rel="alternate" type="text/html" href="https://nielsentest.mywikis.net/w/index.php?title=File:Browser_Stages2.png&amp;diff=2337"/>
		<updated>2017-12-28T18:37:11Z</updated>

		<summary type="html">&lt;p&gt;KimBritt: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;audio browser stages&lt;/div&gt;</summary>
		<author><name>KimBritt</name></author>
	</entry>
	<entry>
		<id>https://nielsentest.mywikis.net/w/index.php?title=DCR_Podcasts_in_Digital&amp;diff=2282</id>
		<title>DCR Podcasts in Digital</title>
		<link rel="alternate" type="text/html" href="https://nielsentest.mywikis.net/w/index.php?title=DCR_Podcasts_in_Digital&amp;diff=2282"/>
		<updated>2017-12-20T20:19:30Z</updated>

		<summary type="html">&lt;p&gt;KimBritt: channelName not required&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Breadcrumb|}} {{Breadcrumb|Digital}} {{CurrentBreadcrumb}}&lt;br /&gt;
[[Category:Podcasts]]&lt;br /&gt;
{{CategoryIcon|DA.png|Podcasts}}&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
== Steps ==&lt;br /&gt;
This document assumes you have implemented Digital Audio with Live AM/FM stream measurement with a &amp;quot;radio&amp;quot; content type.    It outlines the new parameters you will use to implement podcast measurement. &lt;br /&gt;
&lt;br /&gt;
#Contact your Nielsen Account Representative to discuss the way you would like your podcasts reported (Classified)&lt;br /&gt;
#Your TAM will provide new appIds for the applications that will offer podcasts&lt;br /&gt;
#Update the parameters you use to call the SDK play and playheadPosition. Reference the appropriate [[Podcasts#Changes_for_Podcast_Measurement|Changes for Podcast Measurement]]  below&lt;br /&gt;
#Obtain Nielsen Podcast certification once your changes are complete and tested &lt;br /&gt;
#Complete a Production License with your Nielsen Account Representative&lt;br /&gt;
=== Library ===&lt;br /&gt;
Use the same SDK library as Digital Audio, live AM/FM stream measurement.&lt;br /&gt;
&lt;br /&gt;
== Changes for Podcast Measurement ==&lt;br /&gt;
=== Initializing the SDK ===&lt;br /&gt;
Update your appid to the new ID provided by your TAM for podcast measurement. &lt;br /&gt;
When you initialize the SDK, use 'dcr' in the sfcode instead of 'drm'. &lt;br /&gt;
&lt;br /&gt;
=== play ===&lt;br /&gt;
Call [[play]] when the user taps the '''Play''' button to start the content.. The channelName parameter is not required.&lt;br /&gt;
&lt;br /&gt;
'''play Example'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;json&amp;quot;&amp;gt;{&lt;br /&gt;
   &amp;quot;channelName&amp;quot;: &amp;quot;KABC-FM Morning Show&amp;quot;&lt;br /&gt;
}&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== loadMetadata ===&lt;br /&gt;
Use [[loadMetadata]] to pass information about your podcast to the SDK. The parameters must be passed as a JSON object.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;objective-c&amp;quot;&amp;gt;    – (void) loadMetadata :(id)metadata;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Refer to [[loadMetadata]] for the list of parameters to be passed in the JSON object.&lt;br /&gt;
&amp;lt;blockquote&amp;gt;'''Note:''' The [[loadMetadata]] call after the first [[play]] call '''must have ‘content’ (&amp;quot;type&amp;quot;: &amp;quot;content&amp;quot;).''' &amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''loadMetadata Example'''&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;assetid&amp;quot;: &amp;quot;KABC:345-67483&amp;quot;,&lt;br /&gt;
  &amp;quot;program&amp;quot;: &amp;quot;KABC Morning Show&amp;quot;,&lt;br /&gt;
  &amp;quot;title&amp;quot;: &amp;quot;20171125: HR1&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;KABC-FM&amp;quot;,                        // station call letters and band are optional here                   &lt;br /&gt;
  &amp;quot;isfullepisode&amp;quot;: &amp;quot;y&amp;quot;,&lt;br /&gt;
  &amp;quot;airdate&amp;quot;: &amp;quot;20171125 06:00:00&amp;quot;,&lt;br /&gt;
  &amp;quot;adloadtype&amp;quot;: &amp;quot;2&amp;quot;,&lt;br /&gt;
  &amp;quot;pipmode&amp;quot;:&amp;quot;false&amp;quot; &lt;br /&gt;
}&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== playheadPosition for &amp;quot;content&amp;quot; ===&lt;br /&gt;
You will continue to use [[playheadPosition]] to pass the position of the playhead while the content is being played; however, you will pass the relative position from the beginning of the file.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Key !! Description !! Values !! Required? (Y/N) !! Example&lt;br /&gt;
|-&lt;br /&gt;
| On-Demand Audio || Position taken from beginning of the content in seconds. || Client-defined || Yes || Current player position from beginning of the content.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
''' playheadPosition Syntax Example for iOS'''&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;objective-c&amp;quot;&amp;gt;    CMTime curTime=[player currentTime];&lt;br /&gt;
    long pos=CMTimeGetSeconds(curTime);&lt;br /&gt;
    [nAppApiObject playheadPosition:pos];&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Usage Sequence and API'''&lt;br /&gt;
The sample API sequence can be used as a reference to identify the specific events that need to be called during content and ad playback.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Action !! Sample code !! Description&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | Start of stream || &amp;lt;code&amp;gt;[nielsenMeter play: channelName];&amp;lt;/code&amp;gt; || // channelName contains JSON metadata of program being played&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter loadMetadata: contentMetadataObject];&amp;lt;/code&amp;gt; || // contentMetadataObject contains the JSON metadata for the content being played&lt;br /&gt;
|-&lt;br /&gt;
| Listening || &amp;lt;code&amp;gt;[nielsenMeter playheadPosition: position];&amp;lt;/code&amp;gt; || // playheadPosition is position of the playhead while the content is being played&lt;br /&gt;
|-&lt;br /&gt;
| End of Stream || &amp;lt;code&amp;gt;[nielsenMeter end];&amp;lt;/code&amp;gt; || // Content playback is completed.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Continue to call [[playheadPosition]] every two seconds until a pause / stop / another ''loadMetadata'' is called when the user selects a different program.&lt;br /&gt;
 &lt;br /&gt;
'''With Preroll, Midroll, Postroll Ads'''&lt;br /&gt;
'''Please note:''' The below examples include ad pod information.  These ads are not ads served as part of the originator's programming (studio-recorded ads). These ads are hosted independently from the podcast content file. &lt;br /&gt;
&lt;br /&gt;
When applicable, Playhead should be passed for the entire duration of ad pod, if the ad pod details are passed as part of [[loadMetadata]].&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Action !! Sample code !! Description&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | Start of stream || &amp;lt;code&amp;gt;[nielsenMeter play: channelName];&amp;lt;/code&amp;gt; || // channelName contains JSON metadata of channel/video name being played&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter loadMetadata: contentMetadataObject];&amp;lt;/code&amp;gt; || // contentMetadataObject contains the JSON metadata for the content being played&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Preroll || &amp;lt;code&amp;gt;[nielsenMeter loadMetadata: prerollMetadataObject];&amp;lt;/code&amp;gt; || // prerollMetadataObject contains the JSON metadata for the preroll ad&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter playheadPosition: position];&amp;lt;/code&amp;gt; || // position is position of the playhead while the preroll ad is being played&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter stop];&amp;lt;/code&amp;gt; || // Call stop after preroll occurs&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Listening || &amp;lt;code&amp;gt;[nielsenMeter loadMetadata: contentMetadataObject];&amp;lt;/code&amp;gt; || // contentMetadataObject contains the JSON metadata for the content being played&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter playheadPosition: position];&amp;lt;/code&amp;gt; || // position is position of the playhead while the content is being played&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter stop];&amp;lt;/code&amp;gt; || // Call stop after the content is paused (ad starts)&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Midroll || &amp;lt;code&amp;gt;[nielsenMeter loadMetadata: midrollMetadataObject];&amp;lt;/code&amp;gt; || // midrollMetadataObject contains the JSON metadata for the midroll ad&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter playheadPosition: position];&amp;lt;/code&amp;gt; || // position is position of the playhead while the midroll ad is being played&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter stop];&amp;lt;/code&amp;gt; || // Call stop after midroll occurs&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Content (End of stream) || &amp;lt;code&amp;gt;[nielsenMeter loadMetadata: contentMetadataObject];&amp;lt;/code&amp;gt; || // contentMetadataObject contains the JSON metadata for the content being played&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter playheadPosition: position];&amp;lt;/code&amp;gt; || // position is position of the playhead while the content is being played&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter end];&amp;lt;/code&amp;gt; || // Called at the end of content&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Postroll || &amp;lt;code&amp;gt;[nielsenMeter loadMetadata: postrollMetadataObject];&amp;lt;/code&amp;gt; || // postrollMetadataObject contains the JSON metadata for the postroll ad&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter playheadPosition: position];&amp;lt;/code&amp;gt; || // position is position of the playhead while the postroll ad is being played&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter stop];&amp;lt;/code&amp;gt; || // Call stop after postroll occurs&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;'''Note:''' Each Ad playhead should reset or begin from 0 at ad start. When content has resumed following an ad break, playhead position must continue from where previous content segment was left off.&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Nielsen Measurement Opt-Out Implementation ==&lt;br /&gt;
No changes are necessary because Opt-out implementation for podcasts is the same as live AM/FM stream measurement.&lt;br /&gt;
&lt;br /&gt;
== Technical Guides ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! style=&amp;quot;width: 90px;&amp;quot; | Type&lt;br /&gt;
! style=&amp;quot;width: 45px;&amp;quot; |&lt;br /&gt;
! style=&amp;quot;width: 45px;&amp;quot; | OS&lt;br /&gt;
! style=&amp;quot;width: 50%;&amp;quot; | DCR Implementation Guide&lt;br /&gt;
!| SDK Documentation&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;7&amp;quot; | {{SmallIcon|SDKIcon.png|alt=SDK}}&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | {{OSIcon|VideoIcon.png|alt=Video}}&lt;br /&gt;
| {{OSIcon|macOSIcon.png|alt=iOS}}&lt;br /&gt;
| '''[[DCR Video iOS SDK]]'''&lt;br /&gt;
| [[iOS SDK API Reference]]&lt;br /&gt;
|-&lt;br /&gt;
| {{OSIcon|AndroidIcon.png|alt=Android}}&lt;br /&gt;
| '''[[DCR Video Android SDK]]'''&lt;br /&gt;
| [[Android SDK API Reference]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;width: 90px;&amp;quot; |&lt;br /&gt;
! style=&amp;quot;width: 42%;&amp;quot; | Technical Guides&lt;br /&gt;
!&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;7&amp;quot; | {{SmallIcon|DigitalIcon.png}}&lt;br /&gt;
| '''[[Digital Measurement Onboarding]]'''&lt;br /&gt;
| '''[[Digital Measurement Metadata]]'''&lt;br /&gt;
|-&lt;br /&gt;
| '''[[Digital Measurement Testing]]'''&lt;br /&gt;
| '''[[Digital Measurement Interruption Scenarios]]'''&lt;br /&gt;
|-&lt;br /&gt;
| '''[[Digital Measurement FAQ]]'''&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| '''[[Digital Pre-Certification Checklist App SDK]]'''&lt;br /&gt;
| '''[[Digital Pre-Certification Checklist Browser SDK]]'''&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>KimBritt</name></author>
	</entry>
	<entry>
		<id>https://nielsentest.mywikis.net/w/index.php?title=DCR_Podcasts_in_Digital&amp;diff=2259</id>
		<title>DCR Podcasts in Digital</title>
		<link rel="alternate" type="text/html" href="https://nielsentest.mywikis.net/w/index.php?title=DCR_Podcasts_in_Digital&amp;diff=2259"/>
		<updated>2017-12-13T17:02:31Z</updated>

		<summary type="html">&lt;p&gt;KimBritt: whitespace 4&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Breadcrumb|}} {{Breadcrumb|Digital}} {{CurrentBreadcrumb}}&lt;br /&gt;
[[Category:Podcasts]]&lt;br /&gt;
{{CategoryIcon|DA.png|Podcasts}}&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
== Steps ==&lt;br /&gt;
This document assumes you have implemented Digital Audio with Live AM/FM stream measurement with a &amp;quot;radio&amp;quot; content type.    It outlines the new parameters you will use to implement podcast measurement. &lt;br /&gt;
&lt;br /&gt;
#Contact your Nielsen Account Representative to discuss the way you would like your podcasts reported (Classified)&lt;br /&gt;
#Your TAM will provide new appIds for the applications that will offer podcasts&lt;br /&gt;
#Update the parameters you use to call the SDK play and playheadPosition. Reference the appropriate [[Podcasts#Changes_for_Podcast_Measurement|Changes for Podcast Measurement]]  below&lt;br /&gt;
#Obtain Nielsen Podcast certification once your changes are complete and tested &lt;br /&gt;
#Complete a Production License with your Nielsen Account Representative&lt;br /&gt;
=== Library ===&lt;br /&gt;
Use the same SDK library as Digital Audio, live AM/FM stream measurement.&lt;br /&gt;
&lt;br /&gt;
== Changes for Podcast Measurement ==&lt;br /&gt;
=== Initializing the SDK ===&lt;br /&gt;
Update your appid to the new ID provided by your TAM for podcast measurement. &lt;br /&gt;
When you initialize the SDK, use 'dcr' in the sfcode instead of 'drm'. &lt;br /&gt;
&lt;br /&gt;
=== play ===&lt;br /&gt;
Continue to use [[play]] to pass the channel descriptor information through the channelName parameter when the user taps the '''Play''' button on the player. &lt;br /&gt;
&lt;br /&gt;
'''play Example'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;json&amp;quot;&amp;gt;{&lt;br /&gt;
   &amp;quot;channelName&amp;quot;: &amp;quot;KABC-FM Morning Show&amp;quot;&lt;br /&gt;
}&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== loadMetadata ===&lt;br /&gt;
Use [[loadMetadata]] to pass information about your podcast to the SDK. The parameters must be passed as a JSON object.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;objective-c&amp;quot;&amp;gt;    – (void) loadMetadata :(id)metadata;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Refer to [[loadMetadata]] for the list of parameters to be passed in the JSON object.&lt;br /&gt;
&amp;lt;blockquote&amp;gt;'''Note:''' The [[loadMetadata]] call after the first [[play]] call '''must have ‘content’ (&amp;quot;type&amp;quot;: &amp;quot;content&amp;quot;).''' &amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''loadMetadata Example'''&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;assetid&amp;quot;: &amp;quot;KABC:345-67483&amp;quot;,&lt;br /&gt;
  &amp;quot;program&amp;quot;: &amp;quot;KABC Morning Show&amp;quot;,&lt;br /&gt;
  &amp;quot;title&amp;quot;: &amp;quot;20171125: HR1&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;KABC-FM&amp;quot;,                        // station call letters and band are optional here                   &lt;br /&gt;
  &amp;quot;isfullepisode&amp;quot;: &amp;quot;y&amp;quot;,&lt;br /&gt;
  &amp;quot;airdate&amp;quot;: &amp;quot;20171125 06:00:00&amp;quot;,&lt;br /&gt;
  &amp;quot;adloadtype&amp;quot;: &amp;quot;2&amp;quot;,&lt;br /&gt;
  &amp;quot;pipmode&amp;quot;:&amp;quot;false&amp;quot; &lt;br /&gt;
}&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== playheadPosition for &amp;quot;content&amp;quot; ===&lt;br /&gt;
You will continue to use [[playheadPosition]] to pass the position of the playhead while the content is being played; however, you will pass the relative position from the beginning of the file.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Key !! Description !! Values !! Required? (Y/N) !! Example&lt;br /&gt;
|-&lt;br /&gt;
| On-Demand Audio || Position taken from beginning of the content in seconds. || Client-defined || Yes || Current player position from beginning of the content.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
''' playheadPosition Syntax Example for iOS'''&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;objective-c&amp;quot;&amp;gt;    CMTime curTime=[player currentTime];&lt;br /&gt;
    long pos=CMTimeGetSeconds(curTime);&lt;br /&gt;
    [nAppApiObject playheadPosition:pos];&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Usage Sequence and API'''&lt;br /&gt;
The sample API sequence can be used as a reference to identify the specific events that need to be called during content and ad playback.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Action !! Sample code !! Description&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | Start of stream || &amp;lt;code&amp;gt;[nielsenMeter play: channelName];&amp;lt;/code&amp;gt; || // channelName contains JSON metadata of program being played&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter loadMetadata: contentMetadataObject];&amp;lt;/code&amp;gt; || // contentMetadataObject contains the JSON metadata for the content being played&lt;br /&gt;
|-&lt;br /&gt;
| Listening || &amp;lt;code&amp;gt;[nielsenMeter playheadPosition: position];&amp;lt;/code&amp;gt; || // playheadPosition is position of the playhead while the content is being played&lt;br /&gt;
|-&lt;br /&gt;
| End of Stream || &amp;lt;code&amp;gt;[nielsenMeter end];&amp;lt;/code&amp;gt; || // Content playback is completed.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Continue to call [[playheadPosition]] every two seconds until a pause / stop / another ''loadMetadata'' is called when the user selects a different program.&lt;br /&gt;
 &lt;br /&gt;
'''With Preroll, Midroll, Postroll Ads'''&lt;br /&gt;
'''Please note:''' The below examples include ad pod information.  These ads are not ads served as part of the originator's programming (studio-recorded ads). These ads are hosted independently from the podcast content file. &lt;br /&gt;
&lt;br /&gt;
When applicable, Playhead should be passed for the entire duration of ad pod, if the ad pod details are passed as part of [[loadMetadata]].&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Action !! Sample code !! Description&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | Start of stream || &amp;lt;code&amp;gt;[nielsenMeter play: channelName];&amp;lt;/code&amp;gt; || // channelName contains JSON metadata of channel/video name being played&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter loadMetadata: contentMetadataObject];&amp;lt;/code&amp;gt; || // contentMetadataObject contains the JSON metadata for the content being played&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Preroll || &amp;lt;code&amp;gt;[nielsenMeter loadMetadata: prerollMetadataObject];&amp;lt;/code&amp;gt; || // prerollMetadataObject contains the JSON metadata for the preroll ad&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter playheadPosition: position];&amp;lt;/code&amp;gt; || // position is position of the playhead while the preroll ad is being played&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter stop];&amp;lt;/code&amp;gt; || // Call stop after preroll occurs&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Listening || &amp;lt;code&amp;gt;[nielsenMeter loadMetadata: contentMetadataObject];&amp;lt;/code&amp;gt; || // contentMetadataObject contains the JSON metadata for the content being played&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter playheadPosition: position];&amp;lt;/code&amp;gt; || // position is position of the playhead while the content is being played&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter stop];&amp;lt;/code&amp;gt; || // Call stop after the content is paused (ad starts)&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Midroll || &amp;lt;code&amp;gt;[nielsenMeter loadMetadata: midrollMetadataObject];&amp;lt;/code&amp;gt; || // midrollMetadataObject contains the JSON metadata for the midroll ad&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter playheadPosition: position];&amp;lt;/code&amp;gt; || // position is position of the playhead while the midroll ad is being played&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter stop];&amp;lt;/code&amp;gt; || // Call stop after midroll occurs&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Content (End of stream) || &amp;lt;code&amp;gt;[nielsenMeter loadMetadata: contentMetadataObject];&amp;lt;/code&amp;gt; || // contentMetadataObject contains the JSON metadata for the content being played&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter playheadPosition: position];&amp;lt;/code&amp;gt; || // position is position of the playhead while the content is being played&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter end];&amp;lt;/code&amp;gt; || // Called at the end of content&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Postroll || &amp;lt;code&amp;gt;[nielsenMeter loadMetadata: postrollMetadataObject];&amp;lt;/code&amp;gt; || // postrollMetadataObject contains the JSON metadata for the postroll ad&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter playheadPosition: position];&amp;lt;/code&amp;gt; || // position is position of the playhead while the postroll ad is being played&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter stop];&amp;lt;/code&amp;gt; || // Call stop after postroll occurs&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;'''Note:''' Each Ad playhead should reset or begin from 0 at ad start. When content has resumed following an ad break, playhead position must continue from where previous content segment was left off.&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Nielsen Measurement Opt-Out Implementation ==&lt;br /&gt;
No changes are necessary because Opt-out implementation for podcasts is the same as live AM/FM stream measurement.&lt;br /&gt;
&lt;br /&gt;
== Technical Guides ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! style=&amp;quot;width: 90px;&amp;quot; | Type&lt;br /&gt;
! style=&amp;quot;width: 45px;&amp;quot; |&lt;br /&gt;
! style=&amp;quot;width: 45px;&amp;quot; | OS&lt;br /&gt;
! style=&amp;quot;width: 50%;&amp;quot; | DCR Implementation Guide&lt;br /&gt;
!| SDK Documentation&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;7&amp;quot; | {{SmallIcon|SDKIcon.png|alt=SDK}}&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | {{OSIcon|VideoIcon.png|alt=Video}}&lt;br /&gt;
| {{OSIcon|macOSIcon.png|alt=iOS}}&lt;br /&gt;
| '''[[DCR Video iOS SDK]]'''&lt;br /&gt;
| [[iOS SDK API Reference]]&lt;br /&gt;
|-&lt;br /&gt;
| {{OSIcon|AndroidIcon.png|alt=Android}}&lt;br /&gt;
| '''[[DCR Video Android SDK]]'''&lt;br /&gt;
| [[Android SDK API Reference]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;width: 90px;&amp;quot; |&lt;br /&gt;
! style=&amp;quot;width: 42%;&amp;quot; | Technical Guides&lt;br /&gt;
!&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;7&amp;quot; | {{SmallIcon|DigitalIcon.png}}&lt;br /&gt;
| '''[[Digital Measurement Onboarding]]'''&lt;br /&gt;
| '''[[Digital Measurement Metadata]]'''&lt;br /&gt;
|-&lt;br /&gt;
| '''[[Digital Measurement Testing]]'''&lt;br /&gt;
| '''[[Digital Measurement Interruption Scenarios]]'''&lt;br /&gt;
|-&lt;br /&gt;
| '''[[Digital Measurement FAQ]]'''&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| '''[[Digital Pre-Certification Checklist App SDK]]'''&lt;br /&gt;
| '''[[Digital Pre-Certification Checklist Browser SDK]]'''&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>KimBritt</name></author>
	</entry>
	<entry>
		<id>https://nielsentest.mywikis.net/w/index.php?title=DCR_Podcasts_in_Digital&amp;diff=2258</id>
		<title>DCR Podcasts in Digital</title>
		<link rel="alternate" type="text/html" href="https://nielsentest.mywikis.net/w/index.php?title=DCR_Podcasts_in_Digital&amp;diff=2258"/>
		<updated>2017-12-13T16:53:27Z</updated>

		<summary type="html">&lt;p&gt;KimBritt: whitespace 4&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Breadcrumb|}} {{Breadcrumb|Digital}} {{CurrentBreadcrumb}}&lt;br /&gt;
[[Category:Podcasts]]&lt;br /&gt;
{{CategoryIcon|DA.png|Podcasts}}&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
== Steps ==&lt;br /&gt;
This document assumes you have implemented Digital Audio with Live AM/FM stream measurement with a &amp;quot;radio&amp;quot; content type.    It outlines the new parameters you will use to implement podcast measurement. &lt;br /&gt;
&lt;br /&gt;
#Send a list of your podcasts or programs to your TAM to register them for reporting &lt;br /&gt;
#Get new appids from your TAM for the applications that will offer podcasts&lt;br /&gt;
#Update the parameters you use to call the SDK play and playheadPosition. Reference the appropriate [[Podcasts#Changes_for_Podcast_Measurement|Changes for Podcast Measurement]]  below&lt;br /&gt;
#Obtain Nielsen Podcast certification once your changes are complete and tested &lt;br /&gt;
#Complete a Production License with your Nielsen Account Representative&lt;br /&gt;
=== Library ===&lt;br /&gt;
Use the same SDK library as Digital Audio, live AM/FM stream measurement.&lt;br /&gt;
&lt;br /&gt;
== Changes for Podcast Measurement ==&lt;br /&gt;
=== Initializing the SDK ===&lt;br /&gt;
Update your appid to the new ID provided by your TAM for podcast measurement. &lt;br /&gt;
When you initialize the SDK, use 'dcr' in the sfcode instead of 'drm'. &lt;br /&gt;
&lt;br /&gt;
=== play ===&lt;br /&gt;
Continue to use [[play]] to pass the channel descriptor information through the channelName parameter when the user taps the '''Play''' button on the player. &lt;br /&gt;
&lt;br /&gt;
'''play Example'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;json&amp;quot;&amp;gt;{&lt;br /&gt;
   &amp;quot;channelName&amp;quot;: &amp;quot;KABC-FM Morning Show&amp;quot;&lt;br /&gt;
}&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== loadMetadata ===&lt;br /&gt;
Use [[loadMetadata]] to pass information about your podcast to the SDK. The parameters must be passed as a JSON object.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;objective-c&amp;quot;&amp;gt;    – (void) loadMetadata :(id)metadata;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Refer to [[loadMetadata]] for the list of parameters to be passed in the JSON object.&lt;br /&gt;
&amp;lt;blockquote&amp;gt;'''Note:''' The [[loadMetadata]] call after the first [[play]] call '''must have ‘content’ (&amp;quot;type&amp;quot;: &amp;quot;content&amp;quot;).''' &amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''loadMetadata Example'''&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;assetid&amp;quot;: &amp;quot;KABC:345-67483&amp;quot;,&lt;br /&gt;
  &amp;quot;program&amp;quot;: &amp;quot;KABC Morning Show&amp;quot;,&lt;br /&gt;
  &amp;quot;title&amp;quot;: &amp;quot;20171125: HR1&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;KABC-FM&amp;quot;,                        // station call letters and band are optional here                   &lt;br /&gt;
  &amp;quot;isfullepisode&amp;quot;: &amp;quot;y&amp;quot;,&lt;br /&gt;
  &amp;quot;airdate&amp;quot;: &amp;quot;20171125 06:00:00&amp;quot;,&lt;br /&gt;
  &amp;quot;adloadtype&amp;quot;: &amp;quot;2&amp;quot;,&lt;br /&gt;
  &amp;quot;pipmode&amp;quot;:&amp;quot;false&amp;quot; &lt;br /&gt;
}&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== playheadPosition for &amp;quot;content&amp;quot; ===&lt;br /&gt;
You will continue to use [[playheadPosition]] to pass the position of the playhead while the content is being played; however, you will pass the relative position from the beginning of the file.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Key !! Description !! Values !! Required? (Y/N) !! Example&lt;br /&gt;
|-&lt;br /&gt;
| On-Demand Audio || Position taken from beginning of the content in seconds. || Client-defined || Yes || Current player position from beginning of the content.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
''' playheadPosition Syntax Example for iOS'''&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;objective-c&amp;quot;&amp;gt;    CMTime curTime=[player currentTime];&lt;br /&gt;
    long pos=CMTimeGetSeconds(curTime);&lt;br /&gt;
    [nAppApiObject playheadPosition:pos];&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Usage Sequence and API'''&lt;br /&gt;
The sample API sequence can be used as a reference to identify the specific events that need to be called during content and ad playback.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Action !! Sample code !! Description&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | Start of stream || &amp;lt;code&amp;gt;[nielsenMeter play: channelName];&amp;lt;/code&amp;gt; || // channelName contains JSON metadata of program being played&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter loadMetadata: contentMetadataObject];&amp;lt;/code&amp;gt; || // contentMetadataObject contains the JSON metadata for the content being played&lt;br /&gt;
|-&lt;br /&gt;
| Listening || &amp;lt;code&amp;gt;[nielsenMeter playheadPosition: position];&amp;lt;/code&amp;gt; || // playheadPosition is position of the playhead while the content is being played&lt;br /&gt;
|-&lt;br /&gt;
| End of Stream || &amp;lt;code&amp;gt;[nielsenMeter end];&amp;lt;/code&amp;gt; || // Content playback is completed.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Continue to call [[playheadPosition]] every two seconds until a pause / stop / another ''loadMetadata'' is called when the user selects a different program.&lt;br /&gt;
 &lt;br /&gt;
'''With Preroll, Midroll, Postroll Ads'''&lt;br /&gt;
'''Please note:''' The below examples include ad pod information.  These ads are not ads served as part of the originator's programming (studio-recorded ads). These ads are hosted independently from the podcast content file. &lt;br /&gt;
&lt;br /&gt;
When applicable, Playhead should be passed for the entire duration of ad pod, if the ad pod details are passed as part of [[loadMetadata]].&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Action !! Sample code !! Description&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | Start of stream || &amp;lt;code&amp;gt;[nielsenMeter play: channelName];&amp;lt;/code&amp;gt; || // channelName contains JSON metadata of channel/video name being played&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter loadMetadata: contentMetadataObject];&amp;lt;/code&amp;gt; || // contentMetadataObject contains the JSON metadata for the content being played&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Preroll || &amp;lt;code&amp;gt;[nielsenMeter loadMetadata: prerollMetadataObject];&amp;lt;/code&amp;gt; || // prerollMetadataObject contains the JSON metadata for the preroll ad&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter playheadPosition: position];&amp;lt;/code&amp;gt; || // position is position of the playhead while the preroll ad is being played&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter stop];&amp;lt;/code&amp;gt; || // Call stop after preroll occurs&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Listening || &amp;lt;code&amp;gt;[nielsenMeter loadMetadata: contentMetadataObject];&amp;lt;/code&amp;gt; || // contentMetadataObject contains the JSON metadata for the content being played&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter playheadPosition: position];&amp;lt;/code&amp;gt; || // position is position of the playhead while the content is being played&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter stop];&amp;lt;/code&amp;gt; || // Call stop after the content is paused (ad starts)&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Midroll || &amp;lt;code&amp;gt;[nielsenMeter loadMetadata: midrollMetadataObject];&amp;lt;/code&amp;gt; || // midrollMetadataObject contains the JSON metadata for the midroll ad&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter playheadPosition: position];&amp;lt;/code&amp;gt; || // position is position of the playhead while the midroll ad is being played&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter stop];&amp;lt;/code&amp;gt; || // Call stop after midroll occurs&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Content (End of stream) || &amp;lt;code&amp;gt;[nielsenMeter loadMetadata: contentMetadataObject];&amp;lt;/code&amp;gt; || // contentMetadataObject contains the JSON metadata for the content being played&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter playheadPosition: position];&amp;lt;/code&amp;gt; || // position is position of the playhead while the content is being played&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter end];&amp;lt;/code&amp;gt; || // Called at the end of content&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Postroll || &amp;lt;code&amp;gt;[nielsenMeter loadMetadata: postrollMetadataObject];&amp;lt;/code&amp;gt; || // postrollMetadataObject contains the JSON metadata for the postroll ad&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter playheadPosition: position];&amp;lt;/code&amp;gt; || // position is position of the playhead while the postroll ad is being played&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter stop];&amp;lt;/code&amp;gt; || // Call stop after postroll occurs&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;'''Note:''' Each Ad playhead should reset or begin from 0 at ad start. When content has resumed following an ad break, playhead position must continue from where previous content segment was left off.&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Nielsen Measurement Opt-Out Implementation ==&lt;br /&gt;
No changes are necessary because Opt-out implementation for podcasts is the same as live AM/FM stream measurement.&lt;br /&gt;
&lt;br /&gt;
== Technical Guides ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! style=&amp;quot;width: 90px;&amp;quot; | Type&lt;br /&gt;
! style=&amp;quot;width: 45px;&amp;quot; |&lt;br /&gt;
! style=&amp;quot;width: 45px;&amp;quot; | OS&lt;br /&gt;
! style=&amp;quot;width: 50%;&amp;quot; | DCR Implementation Guide&lt;br /&gt;
!| SDK Documentation&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;7&amp;quot; | {{SmallIcon|SDKIcon.png|alt=SDK}}&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | {{OSIcon|VideoIcon.png|alt=Video}}&lt;br /&gt;
| {{OSIcon|macOSIcon.png|alt=iOS}}&lt;br /&gt;
| '''[[DCR Video iOS SDK]]'''&lt;br /&gt;
| [[iOS SDK API Reference]]&lt;br /&gt;
|-&lt;br /&gt;
| {{OSIcon|AndroidIcon.png|alt=Android}}&lt;br /&gt;
| '''[[DCR Video Android SDK]]'''&lt;br /&gt;
| [[Android SDK API Reference]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;width: 90px;&amp;quot; |&lt;br /&gt;
! style=&amp;quot;width: 42%;&amp;quot; | Technical Guides&lt;br /&gt;
!&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;7&amp;quot; | {{SmallIcon|DigitalIcon.png}}&lt;br /&gt;
| '''[[Digital Measurement Onboarding]]'''&lt;br /&gt;
| '''[[Digital Measurement Metadata]]'''&lt;br /&gt;
|-&lt;br /&gt;
| '''[[Digital Measurement Testing]]'''&lt;br /&gt;
| '''[[Digital Measurement Interruption Scenarios]]'''&lt;br /&gt;
|-&lt;br /&gt;
| '''[[Digital Measurement FAQ]]'''&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| '''[[Digital Pre-Certification Checklist App SDK]]'''&lt;br /&gt;
| '''[[Digital Pre-Certification Checklist Browser SDK]]'''&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>KimBritt</name></author>
	</entry>
	<entry>
		<id>https://nielsentest.mywikis.net/w/index.php?title=DCR_Podcasts_in_Digital&amp;diff=2257</id>
		<title>DCR Podcasts in Digital</title>
		<link rel="alternate" type="text/html" href="https://nielsentest.mywikis.net/w/index.php?title=DCR_Podcasts_in_Digital&amp;diff=2257"/>
		<updated>2017-12-13T16:52:05Z</updated>

		<summary type="html">&lt;p&gt;KimBritt: whitespace 3&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Breadcrumb|}} {{Breadcrumb|Digital}} {{CurrentBreadcrumb}}&lt;br /&gt;
[[Category:Podcasts]]&lt;br /&gt;
{{CategoryIcon|DA.png|Podcasts}}&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
== Steps ==&lt;br /&gt;
This document assumes you have implemented Digital Audio with Live AM/FM stream measurement with a &amp;quot;radio&amp;quot; content type.    It outlines the new parameters you will use to implement podcast measurement. &lt;br /&gt;
&lt;br /&gt;
#Send a list of your podcasts or programs to your TAM to register them for reporting &lt;br /&gt;
#Get new appids from your TAM for the applications that will offer podcasts&lt;br /&gt;
#Update the parameters you use to call the SDK play and playheadPosition. Reference the appropriate [[Podcasts#Changes_for_Podcast_Measurement|Changes for Podcast Measurement]]  below&lt;br /&gt;
#Obtain Nielsen Podcast certification once your changes are complete and tested &lt;br /&gt;
#Complete a Production License with your Nielsen Account Representative&lt;br /&gt;
=== Library ===&lt;br /&gt;
Use the same SDK library as Digital Audio, live AM/FM stream measurement.&lt;br /&gt;
&lt;br /&gt;
== Changes for Podcast Measurement ==&lt;br /&gt;
=== Initializing the SDK ===&lt;br /&gt;
Update your appid to the new ID provided by your TAM for podcast measurement. &lt;br /&gt;
When you initialize the SDK, use 'dcr' in the sfcode instead of 'drm'. &lt;br /&gt;
&lt;br /&gt;
=== play ===&lt;br /&gt;
Continue to use [[play]] to pass the channel descriptor information through the channelName parameter when the user taps the '''Play''' button on the player. &lt;br /&gt;
&lt;br /&gt;
'''play Example'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;json&amp;quot;&amp;gt;{&lt;br /&gt;
   &amp;quot;channelName&amp;quot;: &amp;quot;KABC-FM Morning Show&amp;quot;&lt;br /&gt;
}&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== loadMetadata ===&lt;br /&gt;
Use [[loadMetadata]] to pass information about your podcast to the SDK. The parameters must be passed as a JSON object.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;objective-c&amp;quot;&amp;gt;    – (void) loadMetadata :(id)metadata;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Refer to [[loadMetadata]] for the list of parameters to be passed in the JSON object.&lt;br /&gt;
&amp;lt;blockquote&amp;gt;'''Note:''' The [[loadMetadata]] call after the first [[play]] call '''must have ‘content’ (&amp;quot;type&amp;quot;: &amp;quot;content&amp;quot;).''' &amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''loadMetadata Example'''&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;assetid&amp;quot;: &amp;quot;KABC:345-67483&amp;quot;,&lt;br /&gt;
  &amp;quot;program&amp;quot;: &amp;quot;KABC Morning Show&amp;quot;,&lt;br /&gt;
  &amp;quot;title&amp;quot;: &amp;quot;20171125: HR1&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;KABC-FM&amp;quot;,                        // station call letters and band are optional here                   &lt;br /&gt;
  &amp;quot;isfullepisode&amp;quot;: &amp;quot;y&amp;quot;,&lt;br /&gt;
  &amp;quot;airdate&amp;quot;: &amp;quot;20171125 06:00:00&amp;quot;,&lt;br /&gt;
  &amp;quot;adloadtype&amp;quot;: &amp;quot;2&amp;quot;,&lt;br /&gt;
  &amp;quot;pipmode&amp;quot;:&amp;quot;false&amp;quot; &lt;br /&gt;
}&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== playheadPosition for &amp;quot;content&amp;quot; ===&lt;br /&gt;
You will continue to use [[playheadPosition]] to pass the position of the playhead while the content is being played; however, you will pass the relative position from the beginning of the file.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Key !! Description !! Values !! Required? (Y/N) !! Example&lt;br /&gt;
|-&lt;br /&gt;
| On-Demand Audio || Position taken from beginning of the content in seconds. || Client-defined || Yes || Current player position from beginning of the content.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
''' playheadPosition Syntax Example for iOS'''&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;objective-c&amp;quot;&amp;gt;    CMTime curTime=[player currentTime];&lt;br /&gt;
    long pos=CMTimeGetSeconds(curTime);&lt;br /&gt;
    [nAppApiObject playheadPosition:pos];&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Usage Sequence and API'''&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Action !! Sample code !! Description&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | Start of stream || &amp;lt;code&amp;gt;[nielsenMeter play: channelName];&amp;lt;/code&amp;gt; || // channelName contains JSON metadata of program being played&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter loadMetadata: contentMetadataObject];&amp;lt;/code&amp;gt; || // contentMetadataObject contains the JSON metadata for the content being played&lt;br /&gt;
|-&lt;br /&gt;
| Listening || &amp;lt;code&amp;gt;[nielsenMeter playheadPosition: position];&amp;lt;/code&amp;gt; || // playheadPosition is position of the playhead while the content is being played&lt;br /&gt;
|-&lt;br /&gt;
| End of Stream || &amp;lt;code&amp;gt;[nielsenMeter end];&amp;lt;/code&amp;gt; || // Content playback is completed.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Continue to call [[playheadPosition]] every two seconds until a pause / stop / another ''loadMetadata'' is called when the user selects a different program.&lt;br /&gt;
 &lt;br /&gt;
'''Please note:''' The below examples include ad pod information.  These ads are not ads served as part of the originator's programming (studio-recorded ads). These ads are hosted independently from the podcast content file. &lt;br /&gt;
&lt;br /&gt;
When applicable, Playhead should be passed for the entire duration of ad pod, if the ad pod details are passed as part of [[loadMetadata]].&lt;br /&gt;
&lt;br /&gt;
The sample API sequence can be used as a reference to identify the specific events that need to be called during content and ad playback.&lt;br /&gt;
&lt;br /&gt;
'''With Preroll, Midroll, Postroll Ads'''&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Action !! Sample code !! Description&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | Start of stream || &amp;lt;code&amp;gt;[nielsenMeter play: channelName];&amp;lt;/code&amp;gt; || // channelName contains JSON metadata of channel/video name being played&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter loadMetadata: contentMetadataObject];&amp;lt;/code&amp;gt; || // contentMetadataObject contains the JSON metadata for the content being played&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Preroll || &amp;lt;code&amp;gt;[nielsenMeter loadMetadata: prerollMetadataObject];&amp;lt;/code&amp;gt; || // prerollMetadataObject contains the JSON metadata for the preroll ad&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter playheadPosition: position];&amp;lt;/code&amp;gt; || // position is position of the playhead while the preroll ad is being played&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter stop];&amp;lt;/code&amp;gt; || // Call stop after preroll occurs&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Listening || &amp;lt;code&amp;gt;[nielsenMeter loadMetadata: contentMetadataObject];&amp;lt;/code&amp;gt; || // contentMetadataObject contains the JSON metadata for the content being played&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter playheadPosition: position];&amp;lt;/code&amp;gt; || // position is position of the playhead while the content is being played&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter stop];&amp;lt;/code&amp;gt; || // Call stop after the content is paused (ad starts)&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Midroll || &amp;lt;code&amp;gt;[nielsenMeter loadMetadata: midrollMetadataObject];&amp;lt;/code&amp;gt; || // midrollMetadataObject contains the JSON metadata for the midroll ad&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter playheadPosition: position];&amp;lt;/code&amp;gt; || // position is position of the playhead while the midroll ad is being played&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter stop];&amp;lt;/code&amp;gt; || // Call stop after midroll occurs&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Content (End of stream) || &amp;lt;code&amp;gt;[nielsenMeter loadMetadata: contentMetadataObject];&amp;lt;/code&amp;gt; || // contentMetadataObject contains the JSON metadata for the content being played&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter playheadPosition: position];&amp;lt;/code&amp;gt; || // position is position of the playhead while the content is being played&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter end];&amp;lt;/code&amp;gt; || // Called at the end of content&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Postroll || &amp;lt;code&amp;gt;[nielsenMeter loadMetadata: postrollMetadataObject];&amp;lt;/code&amp;gt; || // postrollMetadataObject contains the JSON metadata for the postroll ad&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter playheadPosition: position];&amp;lt;/code&amp;gt; || // position is position of the playhead while the postroll ad is being played&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter stop];&amp;lt;/code&amp;gt; || // Call stop after postroll occurs&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;'''Note:''' Each Ad playhead should reset or begin from 0 at ad start. When content has resumed following an ad break, playhead position must continue from where previous content segment was left off.&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Nielsen Measurement Opt-Out Implementation ==&lt;br /&gt;
No changes are necessary because Opt-out implementation for podcasts is the same as live AM/FM stream measurement.&lt;br /&gt;
&lt;br /&gt;
== Technical Guides ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! style=&amp;quot;width: 90px;&amp;quot; | Type&lt;br /&gt;
! style=&amp;quot;width: 45px;&amp;quot; |&lt;br /&gt;
! style=&amp;quot;width: 45px;&amp;quot; | OS&lt;br /&gt;
! style=&amp;quot;width: 50%;&amp;quot; | DCR Implementation Guide&lt;br /&gt;
!| SDK Documentation&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;7&amp;quot; | {{SmallIcon|SDKIcon.png|alt=SDK}}&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | {{OSIcon|VideoIcon.png|alt=Video}}&lt;br /&gt;
| {{OSIcon|macOSIcon.png|alt=iOS}}&lt;br /&gt;
| '''[[DCR Video iOS SDK]]'''&lt;br /&gt;
| [[iOS SDK API Reference]]&lt;br /&gt;
|-&lt;br /&gt;
| {{OSIcon|AndroidIcon.png|alt=Android}}&lt;br /&gt;
| '''[[DCR Video Android SDK]]'''&lt;br /&gt;
| [[Android SDK API Reference]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;width: 90px;&amp;quot; |&lt;br /&gt;
! style=&amp;quot;width: 42%;&amp;quot; | Technical Guides&lt;br /&gt;
!&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;7&amp;quot; | {{SmallIcon|DigitalIcon.png}}&lt;br /&gt;
| '''[[Digital Measurement Onboarding]]'''&lt;br /&gt;
| '''[[Digital Measurement Metadata]]'''&lt;br /&gt;
|-&lt;br /&gt;
| '''[[Digital Measurement Testing]]'''&lt;br /&gt;
| '''[[Digital Measurement Interruption Scenarios]]'''&lt;br /&gt;
|-&lt;br /&gt;
| '''[[Digital Measurement FAQ]]'''&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| '''[[Digital Pre-Certification Checklist App SDK]]'''&lt;br /&gt;
| '''[[Digital Pre-Certification Checklist Browser SDK]]'''&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>KimBritt</name></author>
	</entry>
	<entry>
		<id>https://nielsentest.mywikis.net/w/index.php?title=DCR_Podcasts_in_Digital&amp;diff=2256</id>
		<title>DCR Podcasts in Digital</title>
		<link rel="alternate" type="text/html" href="https://nielsentest.mywikis.net/w/index.php?title=DCR_Podcasts_in_Digital&amp;diff=2256"/>
		<updated>2017-12-13T16:49:48Z</updated>

		<summary type="html">&lt;p&gt;KimBritt: no changes&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Breadcrumb|}} {{Breadcrumb|Digital}} {{CurrentBreadcrumb}}&lt;br /&gt;
[[Category:Podcasts]]&lt;br /&gt;
{{CategoryIcon|DA.png|Podcasts}}&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
== Steps ==&lt;br /&gt;
This document assumes you have implemented Digital Audio with Live AM/FM stream measurement with a &amp;quot;radio&amp;quot; content type.    It outlines the new parameters you will use to implement podcast measurement. &lt;br /&gt;
&lt;br /&gt;
#Send a list of your podcasts or programs to your TAM to register them for reporting &lt;br /&gt;
#Get new appids from your TAM for the applications that will offer podcasts&lt;br /&gt;
#Update the parameters you use to call the SDK play and playheadPosition. Reference the appropriate [[Podcasts#Changes_for_Podcast_Measurement|Changes for Podcast Measurement]]  below&lt;br /&gt;
#Obtain Nielsen Podcast certification once your changes are complete and tested &lt;br /&gt;
#Complete a Production License with your Nielsen Account Representative&lt;br /&gt;
=== Library ===&lt;br /&gt;
Use the same SDK library as Digital Audio, live AM/FM stream measurement.&lt;br /&gt;
&lt;br /&gt;
== Changes for Podcast Measurement ==&lt;br /&gt;
=== Initializing the SDK ===&lt;br /&gt;
Update your appid to the new ID provided by your TAM for podcast measurement. &lt;br /&gt;
When you initialize the SDK, use 'dcr' in the sfcode instead of 'drm'. &lt;br /&gt;
&lt;br /&gt;
=== play ===&lt;br /&gt;
Continue to use [[play]] to pass the channel descriptor information through the channelName parameter when the user taps the '''Play''' button on the player. &lt;br /&gt;
&lt;br /&gt;
'''play Example'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;json&amp;quot;&amp;gt;{&lt;br /&gt;
   &amp;quot;channelName&amp;quot;: &amp;quot;KABC-FM Morning Show&amp;quot;&lt;br /&gt;
}&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== loadMetadata ===&lt;br /&gt;
Use [[loadMetadata]] to pass information about your podcast to the SDK. The parameters must be passed as a JSON object.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;objective-c&amp;quot;&amp;gt;    – (void) loadMetadata :(id)metadata;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Refer to [[loadMetadata]] for the list of parameters to be passed in the JSON object.&lt;br /&gt;
&amp;lt;blockquote&amp;gt;'''Note:''' The [[loadMetadata]] call after the first [[play]] call '''must have ‘content’ (&amp;quot;type&amp;quot;: &amp;quot;content&amp;quot;).''' &amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''loadMetadata Example'''&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;assetid&amp;quot;: &amp;quot;KABC:345-67483&amp;quot;,&lt;br /&gt;
  &amp;quot;program&amp;quot;: &amp;quot;KABC Morning Show&amp;quot;,&lt;br /&gt;
  &amp;quot;title&amp;quot;: &amp;quot;20171125: HR1&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;KABC-FM&amp;quot;,                        // station call letters and band are optional here                   &lt;br /&gt;
  &amp;quot;isfullepisode&amp;quot;: &amp;quot;y&amp;quot;,&lt;br /&gt;
  &amp;quot;airdate&amp;quot;: &amp;quot;20171125 06:00:00&amp;quot;,&lt;br /&gt;
  &amp;quot;adloadtype&amp;quot;: &amp;quot;2&amp;quot;,&lt;br /&gt;
  &amp;quot;pipmode&amp;quot;:&amp;quot;false&amp;quot; &lt;br /&gt;
}&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== playheadPosition for &amp;quot;content&amp;quot; ===&lt;br /&gt;
You will continue to use [[playheadPosition]] to pass the position of the playhead while the content is being played; however, you will pass the relative position from the beginning of the file.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Key !! Description !! Values !! Required? (Y/N) !! Example&lt;br /&gt;
|-&lt;br /&gt;
| On-Demand Audio || Position taken from beginning of the content in seconds. || Client-defined || Yes || Current player position from beginning of the content.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
''' playheadPosition Syntax Example for iOS'''&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;objective-c&amp;quot;&amp;gt;    CMTime curTime=[player currentTime];&lt;br /&gt;
    long pos=CMTimeGetSeconds(curTime);&lt;br /&gt;
    [nAppApiObject playheadPosition:pos];&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Usage Sequences and API Examples'''&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Action !! Sample code !! Description&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | Start of stream || &amp;lt;code&amp;gt;[nielsenMeter play: channelName];&amp;lt;/code&amp;gt; || // channelName contains JSON metadata of program being played&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter loadMetadata: contentMetadataObject];&amp;lt;/code&amp;gt; || // contentMetadataObject contains the JSON metadata for the content being played&lt;br /&gt;
|-&lt;br /&gt;
| Listening || &amp;lt;code&amp;gt;[nielsenMeter playheadPosition: position];&amp;lt;/code&amp;gt; || // playheadPosition is position of the playhead while the content is being played&lt;br /&gt;
|-&lt;br /&gt;
| End of Stream || &amp;lt;code&amp;gt;[nielsenMeter end];&amp;lt;/code&amp;gt; || // Content playback is completed.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Continue to call [[playheadPosition]] every two seconds until a pause / stop / another ''loadMetadata'' is called when the user selects a different program.&lt;br /&gt;
 &lt;br /&gt;
'''Please note:''' The below examples include ad pod information.  These ads are not ads served as part of the originator's programming (studio-recorded ads). These ads are hosted independently from the podcast content file. &lt;br /&gt;
&lt;br /&gt;
When applicable, Playhead should be passed for the entire duration of ad pod, if the ad pod details are passed as part of [[loadMetadata]].&lt;br /&gt;
&lt;br /&gt;
The sample API sequence can be used as a reference to identify the specific events that need to be called during content and ad playback.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Action !! Sample code !! Description&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | Start of stream || &amp;lt;code&amp;gt;[nielsenMeter play: channelName];&amp;lt;/code&amp;gt; || // channelName contains JSON metadata of channel/video name being played&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter loadMetadata: contentMetadataObject];&amp;lt;/code&amp;gt; || // contentMetadataObject contains the JSON metadata for the content being played&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Preroll || &amp;lt;code&amp;gt;[nielsenMeter loadMetadata: prerollMetadataObject];&amp;lt;/code&amp;gt; || // prerollMetadataObject contains the JSON metadata for the preroll ad&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter playheadPosition: position];&amp;lt;/code&amp;gt; || // position is position of the playhead while the preroll ad is being played&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter stop];&amp;lt;/code&amp;gt; || // Call stop after preroll occurs&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Content || &amp;lt;code&amp;gt;[nielsenMeter loadMetadata: contentMetadataObject];&amp;lt;/code&amp;gt; || // contentMetadataObject contains the JSON metadata for the content being played&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter playheadPosition: position];&amp;lt;/code&amp;gt; || // position is position of the playhead while the content is being played&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter stop];&amp;lt;/code&amp;gt; || // Call stop after the content is paused (ad starts)&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Midroll || &amp;lt;code&amp;gt;[nielsenMeter loadMetadata: midrollMetadataObject];&amp;lt;/code&amp;gt; || // midrollMetadataObject contains the JSON metadata for the midroll ad&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter playheadPosition: position];&amp;lt;/code&amp;gt; || // position is position of the playhead while the midroll ad is being played&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter stop];&amp;lt;/code&amp;gt; || // Call stop after midroll occurs&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Content (End of stream) || &amp;lt;code&amp;gt;[nielsenMeter loadMetadata: contentMetadataObject];&amp;lt;/code&amp;gt; || // contentMetadataObject contains the JSON metadata for the content being played&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter playheadPosition: position];&amp;lt;/code&amp;gt; || // position is position of the playhead while the content is being played&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter end];&amp;lt;/code&amp;gt; || // Called at the end of content&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Postroll || &amp;lt;code&amp;gt;[nielsenMeter loadMetadata: postrollMetadataObject];&amp;lt;/code&amp;gt; || // postrollMetadataObject contains the JSON metadata for the postroll ad&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter playheadPosition: position];&amp;lt;/code&amp;gt; || // position is position of the playhead while the postroll ad is being played&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter stop];&amp;lt;/code&amp;gt; || // Call stop after postroll occurs&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;'''Note:''' Each Ad playhead should reset or begin from 0 at ad start. When content has resumed following an ad break, playhead position must continue from where previous content segment was left off.&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Nielsen Measurement Opt-Out Implementation ==&lt;br /&gt;
No changes are necessary because Opt-out implementation for podcasts is the same as live AM/FM stream measurement.&lt;br /&gt;
&lt;br /&gt;
== Technical Guides ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! style=&amp;quot;width: 90px;&amp;quot; | Type&lt;br /&gt;
! style=&amp;quot;width: 45px;&amp;quot; |&lt;br /&gt;
! style=&amp;quot;width: 45px;&amp;quot; | OS&lt;br /&gt;
! style=&amp;quot;width: 50%;&amp;quot; | DCR Implementation Guide&lt;br /&gt;
!| SDK Documentation&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;7&amp;quot; | {{SmallIcon|SDKIcon.png|alt=SDK}}&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | {{OSIcon|VideoIcon.png|alt=Video}}&lt;br /&gt;
| {{OSIcon|macOSIcon.png|alt=iOS}}&lt;br /&gt;
| '''[[DCR Video iOS SDK]]'''&lt;br /&gt;
| [[iOS SDK API Reference]]&lt;br /&gt;
|-&lt;br /&gt;
| {{OSIcon|AndroidIcon.png|alt=Android}}&lt;br /&gt;
| '''[[DCR Video Android SDK]]'''&lt;br /&gt;
| [[Android SDK API Reference]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;width: 90px;&amp;quot; |&lt;br /&gt;
! style=&amp;quot;width: 42%;&amp;quot; | Technical Guides&lt;br /&gt;
!&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;7&amp;quot; | {{SmallIcon|DigitalIcon.png}}&lt;br /&gt;
| '''[[Digital Measurement Onboarding]]'''&lt;br /&gt;
| '''[[Digital Measurement Metadata]]'''&lt;br /&gt;
|-&lt;br /&gt;
| '''[[Digital Measurement Testing]]'''&lt;br /&gt;
| '''[[Digital Measurement Interruption Scenarios]]'''&lt;br /&gt;
|-&lt;br /&gt;
| '''[[Digital Measurement FAQ]]'''&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| '''[[Digital Pre-Certification Checklist App SDK]]'''&lt;br /&gt;
| '''[[Digital Pre-Certification Checklist Browser SDK]]'''&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>KimBritt</name></author>
	</entry>
	<entry>
		<id>https://nielsentest.mywikis.net/w/index.php?title=DCR_Podcasts_in_Digital&amp;diff=2255</id>
		<title>DCR Podcasts in Digital</title>
		<link rel="alternate" type="text/html" href="https://nielsentest.mywikis.net/w/index.php?title=DCR_Podcasts_in_Digital&amp;diff=2255"/>
		<updated>2017-12-13T16:49:02Z</updated>

		<summary type="html">&lt;p&gt;KimBritt: whitespace 2&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Breadcrumb|}} {{Breadcrumb|Digital}} {{CurrentBreadcrumb}}&lt;br /&gt;
[[Category:Podcasts]]&lt;br /&gt;
{{CategoryIcon|DA.png|Podcasts}}&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
== Steps ==&lt;br /&gt;
This document assumes you have implemented Digital Audio with Live AM/FM stream measurement with a &amp;quot;radio&amp;quot; content type.    It outlines the new parameters you will use to implement podcast measurement. &lt;br /&gt;
&lt;br /&gt;
#Send a list of your podcasts or programs to your TAM to register them for reporting &lt;br /&gt;
#Get new appids from your TAM for the applications that will offer podcasts&lt;br /&gt;
#Update the parameters you use to call the SDK play and playheadPosition. Reference the appropriate [[Podcasts#Changes_for_Podcast_Measurement|Changes for Podcast Measurement]]  below&lt;br /&gt;
#Obtain Nielsen Podcast certification once your changes are complete and tested &lt;br /&gt;
#Complete a Production License with your Nielsen Account Representative&lt;br /&gt;
=== Library ===&lt;br /&gt;
Use the same SDK library as Digital Audio, live AM/FM stream measurement.&lt;br /&gt;
&lt;br /&gt;
== Changes for Podcast Measurement ==&lt;br /&gt;
=== Initializing the SDK ===&lt;br /&gt;
Update your appid to the new ID provided by your TAM for podcast measurement. &lt;br /&gt;
When you initialize the SDK, use 'dcr' in the sfcode instead of 'drm'. &lt;br /&gt;
&lt;br /&gt;
=== play ===&lt;br /&gt;
Continue to use [[play]] to pass the channel descriptor information through the channelName parameter when the user taps the '''Play''' button on the player. &lt;br /&gt;
&lt;br /&gt;
'''play Example'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;json&amp;quot;&amp;gt;{&lt;br /&gt;
   &amp;quot;channelName&amp;quot;: &amp;quot;KABC-FM Morning Show&amp;quot;&lt;br /&gt;
}&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== loadMetadata ===&lt;br /&gt;
Use [[loadMetadata]] to pass information about your podcast to the SDK. The parameters must be passed as a JSON object.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;objective-c&amp;quot;&amp;gt;    – (void) loadMetadata :(id)metadata;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Refer to [[loadMetadata]] for the list of parameters to be passed in the JSON object.&lt;br /&gt;
&amp;lt;blockquote&amp;gt;'''Note:''' The [[loadMetadata]] call after the first [[play]] call '''must have ‘content’ (&amp;quot;type&amp;quot;: &amp;quot;content&amp;quot;).''' &amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''loadMetadata Example'''&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;assetid&amp;quot;: &amp;quot;KABC:345-67483&amp;quot;,&lt;br /&gt;
  &amp;quot;program&amp;quot;: &amp;quot;KABC Morning Show&amp;quot;,&lt;br /&gt;
  &amp;quot;title&amp;quot;: &amp;quot;20171125: HR1&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;KABC-FM&amp;quot;,                        // station call letters and band are optional here                   &lt;br /&gt;
  &amp;quot;isfullepisode&amp;quot;: &amp;quot;y&amp;quot;,&lt;br /&gt;
  &amp;quot;airdate&amp;quot;: &amp;quot;20171125 06:00:00&amp;quot;,&lt;br /&gt;
  &amp;quot;adloadtype&amp;quot;: &amp;quot;2&amp;quot;,&lt;br /&gt;
  &amp;quot;pipmode&amp;quot;:&amp;quot;false&amp;quot; &lt;br /&gt;
}&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== playheadPosition for &amp;quot;content&amp;quot; ===&lt;br /&gt;
You will continue to use [[playheadPosition]] to pass the position of the playhead while the content is being played; however, you will pass the relative position from the beginning of the file.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Key !! Description !! Values !! Required? (Y/N) !! Example&lt;br /&gt;
|-&lt;br /&gt;
| On-Demand Audio || Position taken from beginning of the content in seconds. || Client-defined || Yes || Current player position from beginning of the content.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
''' playheadPosition Syntax Example for iOS'''&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;objective-c&amp;quot;&amp;gt;    CMTime curTime=[player currentTime];&lt;br /&gt;
    long pos=CMTimeGetSeconds(curTime);&lt;br /&gt;
    [nAppApiObject playheadPosition:pos];&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Usage Sequences and API Examples'''&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Action !! Sample code !! Description&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | Start of stream || &amp;lt;code&amp;gt;[nielsenMeter play: channelName];&amp;lt;/code&amp;gt; || // channelName contains JSON metadata of program being played&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter loadMetadata: contentMetadataObject];&amp;lt;/code&amp;gt; || // contentMetadataObject contains the JSON metadata for the content being played&lt;br /&gt;
|-&lt;br /&gt;
| Listening || &amp;lt;code&amp;gt;[nielsenMeter playheadPosition: position];&amp;lt;/code&amp;gt; || // playheadPosition is position of the playhead while the content is being played&lt;br /&gt;
|-&lt;br /&gt;
| End of Stream || &amp;lt;code&amp;gt;[nielsenMeter end];&amp;lt;/code&amp;gt; || // Content playback is completed.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Continue to call [[playheadPosition]] every two seconds until a pause / stop / another ''loadMetadata'' is called when the user selects a different program.&lt;br /&gt;
 &lt;br /&gt;
'''Please note:''' The below examples include ad pod information.  These ads are not ads served as part of the originator's programming (studio-recorded ads). These ads are hosted independently from the podcast content file. &lt;br /&gt;
&lt;br /&gt;
When applicable, Playhead should be passed for the entire duration of ad pod, if the ad pod details are passed as part of [[loadMetadata]].&lt;br /&gt;
&lt;br /&gt;
The sample API sequence can be used as a reference to identify the specific events that need to be called during content and ad playback.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Action !! Sample code !! Description&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | Start of stream || &amp;lt;code&amp;gt;[nielsenMeter play: channelName];&amp;lt;/code&amp;gt; || // channelName contains JSON metadata of channel/video name being played&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter loadMetadata: contentMetadataObject];&amp;lt;/code&amp;gt; || // contentMetadataObject contains the JSON metadata for the content being played&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Preroll || &amp;lt;code&amp;gt;[nielsenMeter loadMetadata: prerollMetadataObject];&amp;lt;/code&amp;gt; || // prerollMetadataObject contains the JSON metadata for the preroll ad&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter playheadPosition: position];&amp;lt;/code&amp;gt; || // position is position of the playhead while the preroll ad is being played&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter stop];&amp;lt;/code&amp;gt; || // Call stop after preroll occurs&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Content || &amp;lt;code&amp;gt;[nielsenMeter loadMetadata: contentMetadataObject];&amp;lt;/code&amp;gt; || // contentMetadataObject contains the JSON metadata for the content being played&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter playheadPosition: position];&amp;lt;/code&amp;gt; || // position is position of the playhead while the content is being played&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter stop];&amp;lt;/code&amp;gt; || // Call stop after the content is paused (ad starts)&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Midroll || &amp;lt;code&amp;gt;[nielsenMeter loadMetadata: midrollMetadataObject];&amp;lt;/code&amp;gt; || // midrollMetadataObject contains the JSON metadata for the midroll ad&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter playheadPosition: position];&amp;lt;/code&amp;gt; || // position is position of the playhead while the midroll ad is being played&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter stop];&amp;lt;/code&amp;gt; || // Call stop after midroll occurs&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Content (End of stream) || &amp;lt;code&amp;gt;[nielsenMeter loadMetadata: contentMetadataObject];&amp;lt;/code&amp;gt; || // contentMetadataObject contains the JSON metadata for the content being played&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter playheadPosition: position];&amp;lt;/code&amp;gt; || // position is position of the playhead while the content is being played&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter end];&amp;lt;/code&amp;gt; || // Called at the end of content&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Postroll || &amp;lt;code&amp;gt;[nielsenMeter loadMetadata: postrollMetadataObject];&amp;lt;/code&amp;gt; || // postrollMetadataObject contains the JSON metadata for the postroll ad&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter playheadPosition: position];&amp;lt;/code&amp;gt; || // position is position of the playhead while the postroll ad is being played&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter stop];&amp;lt;/code&amp;gt; || // Call stop after postroll occurs&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;'''Note:''' Each Ad playhead should reset or begin from 0 at ad start. When content has resumed following an ad break, playhead position must continue from where previous content segment was left off.&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Nielsen Measurement Opt-Out Implementation ==&lt;br /&gt;
Opt-out implementation for podcasts is the same as live AM/FM stream measurement. &lt;br /&gt;
&lt;br /&gt;
== Technical Guides ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! style=&amp;quot;width: 90px;&amp;quot; | Type&lt;br /&gt;
! style=&amp;quot;width: 45px;&amp;quot; |&lt;br /&gt;
! style=&amp;quot;width: 45px;&amp;quot; | OS&lt;br /&gt;
! style=&amp;quot;width: 50%;&amp;quot; | DCR Implementation Guide&lt;br /&gt;
!| SDK Documentation&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;7&amp;quot; | {{SmallIcon|SDKIcon.png|alt=SDK}}&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | {{OSIcon|VideoIcon.png|alt=Video}}&lt;br /&gt;
| {{OSIcon|macOSIcon.png|alt=iOS}}&lt;br /&gt;
| '''[[DCR Video iOS SDK]]'''&lt;br /&gt;
| [[iOS SDK API Reference]]&lt;br /&gt;
|-&lt;br /&gt;
| {{OSIcon|AndroidIcon.png|alt=Android}}&lt;br /&gt;
| '''[[DCR Video Android SDK]]'''&lt;br /&gt;
| [[Android SDK API Reference]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;width: 90px;&amp;quot; |&lt;br /&gt;
! style=&amp;quot;width: 42%;&amp;quot; | Technical Guides&lt;br /&gt;
!&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;7&amp;quot; | {{SmallIcon|DigitalIcon.png}}&lt;br /&gt;
| '''[[Digital Measurement Onboarding]]'''&lt;br /&gt;
| '''[[Digital Measurement Metadata]]'''&lt;br /&gt;
|-&lt;br /&gt;
| '''[[Digital Measurement Testing]]'''&lt;br /&gt;
| '''[[Digital Measurement Interruption Scenarios]]'''&lt;br /&gt;
|-&lt;br /&gt;
| '''[[Digital Measurement FAQ]]'''&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| '''[[Digital Pre-Certification Checklist App SDK]]'''&lt;br /&gt;
| '''[[Digital Pre-Certification Checklist Browser SDK]]'''&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>KimBritt</name></author>
	</entry>
	<entry>
		<id>https://nielsentest.mywikis.net/w/index.php?title=DCR_Podcasts_in_Digital&amp;diff=2254</id>
		<title>DCR Podcasts in Digital</title>
		<link rel="alternate" type="text/html" href="https://nielsentest.mywikis.net/w/index.php?title=DCR_Podcasts_in_Digital&amp;diff=2254"/>
		<updated>2017-12-13T16:46:34Z</updated>

		<summary type="html">&lt;p&gt;KimBritt: whitespace&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Breadcrumb|}} {{Breadcrumb|Digital}} {{CurrentBreadcrumb}}&lt;br /&gt;
[[Category:Podcasts]]&lt;br /&gt;
{{CategoryIcon|DA.png|Podcasts}}&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
== Steps ==&lt;br /&gt;
This document assumes you have implemented Digital Audio with Live AM/FM stream measurement with a &amp;quot;radio&amp;quot; content type.    It outlines the new parameters you will use to implement podcast measurement. &lt;br /&gt;
&lt;br /&gt;
#Send a list of your podcasts or programs to your TAM to register them for reporting &lt;br /&gt;
#Get new appids from your TAM for the applications that will offer podcasts&lt;br /&gt;
#Update the parameters you use to call the SDK play and playheadPosition. Reference the appropriate [[Podcasts#Changes_for_Podcast_Measurement|Changes for Podcast Measurement]]  below&lt;br /&gt;
#Obtain Nielsen Podcast certification once your changes are complete and tested &lt;br /&gt;
#Complete a Production License with your Nielsen Account Representative&lt;br /&gt;
=== Library ===&lt;br /&gt;
Use the same SDK library as Digital Audio, live AM/FM stream measurement.&lt;br /&gt;
&lt;br /&gt;
== Changes for Podcast Measurement ==&lt;br /&gt;
=== Initializing the SDK ===&lt;br /&gt;
Update your appid to the new ID provided by your TAM for podcast measurement. &lt;br /&gt;
When you initialize the SDK, use 'dcr' in the sfcode instead of 'drm'. &lt;br /&gt;
&lt;br /&gt;
=== play ===&lt;br /&gt;
Continue to use [[play]] to pass the channel descriptor information through the channelName parameter when the user taps the '''Play''' button on the player. &lt;br /&gt;
&lt;br /&gt;
'''play Example'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;json&amp;quot;&amp;gt;{&lt;br /&gt;
   &amp;quot;channelName&amp;quot;: &amp;quot;KABC-FM Morning Show&amp;quot;&lt;br /&gt;
}&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== loadMetadata ===&lt;br /&gt;
Use [[loadMetadata]] to pass information about your podcast to the SDK. The parameters must be passed as a JSON object.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;objective-c&amp;quot;&amp;gt;    – (void) loadMetadata :(id)metadata;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Refer to [[loadMetadata]] for the list of parameters to be passed in the JSON object.&lt;br /&gt;
&amp;lt;blockquote&amp;gt;'''Note:''' The [[loadMetadata]] call after the first [[play]] call '''must have ‘content’ (&amp;quot;type&amp;quot;: &amp;quot;content&amp;quot;).''' &amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''loadMetadata Example'''&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;assetid&amp;quot;: &amp;quot;KABC:345-67483&amp;quot;,&lt;br /&gt;
  &amp;quot;program&amp;quot;: &amp;quot;KABC Morning Show&amp;quot;,&lt;br /&gt;
  &amp;quot;title&amp;quot;: &amp;quot;20171125: HR1&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;KABC-FM&amp;quot;,                        // station call letters and band are optional here                   &lt;br /&gt;
  &amp;quot;isfullepisode&amp;quot;: &amp;quot;y&amp;quot;,&lt;br /&gt;
  &amp;quot;airdate&amp;quot;: &amp;quot;20171125 06:00:00&amp;quot;,&lt;br /&gt;
  &amp;quot;adloadtype&amp;quot;: &amp;quot;2&amp;quot;,&lt;br /&gt;
  &amp;quot;pipmode&amp;quot;:&amp;quot;false&amp;quot; &lt;br /&gt;
}&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== playheadPosition for &amp;quot;content&amp;quot; ===&lt;br /&gt;
You will continue to use [[playheadPosition]] to pass the position of the playhead while the content is being played; however, you will pass the relative position from the beginning of the file.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Key !! Description !! Values !! Required? (Y/N) !! Example&lt;br /&gt;
|-&lt;br /&gt;
| On-Demand Audio || Position taken from beginning of the content in seconds. || Client-defined || Yes || Current player position from beginning of the content.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
''' playheadPosition Syntax Example for iOS'''&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;objective-c&amp;quot;&amp;gt;    CMTime curTime=[player currentTime];&lt;br /&gt;
    long pos=CMTimeGetSeconds(curTime);&lt;br /&gt;
    [nAppApiObject playheadPosition:pos];&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Type !! Sample code !! Description&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | Start of stream || &amp;lt;code&amp;gt;[nielsenMeter play: channelName];&amp;lt;/code&amp;gt; || // channelName contains JSON metadata of program being played&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter loadMetadata: contentMetadataObject];&amp;lt;/code&amp;gt; || // contentMetadataObject contains the JSON metadata for the content being played&lt;br /&gt;
|-&lt;br /&gt;
| Content || &amp;lt;code&amp;gt;[nielsenMeter playheadPosition: position];&amp;lt;/code&amp;gt; || // playheadPosition is position of the playhead while the content is being played&lt;br /&gt;
|-&lt;br /&gt;
| End of Stream || &amp;lt;code&amp;gt;[nielsenMeter end];&amp;lt;/code&amp;gt; || // Content playback is completed.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Continue to call [[playheadPosition]] every two seconds until a pause / stop / another ''loadMetadata'' is called when the user selects a different program.&lt;br /&gt;
 &lt;br /&gt;
'''Please note:''' The below examples include ad pod information.  These ads are not ads served as part of the originator's programming (studio-recorded ads). These ads are hosted independently from the podcast content file. &lt;br /&gt;
&lt;br /&gt;
When applicable, Playhead should be passed for the entire duration of ad pod, if the ad pod details are passed as part of [[loadMetadata]].&lt;br /&gt;
&lt;br /&gt;
The sample API sequence can be used as a reference to identify the specific events that need to be called during content and ad playback.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Type !! Sample code !! Description&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | Start of stream || &amp;lt;code&amp;gt;[nielsenMeter play: channelName];&amp;lt;/code&amp;gt; || // channelName contains JSON metadata of channel/video name being played&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter loadMetadata: contentMetadataObject];&amp;lt;/code&amp;gt; || // contentMetadataObject contains the JSON metadata for the content being played&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Preroll || &amp;lt;code&amp;gt;[nielsenMeter loadMetadata: prerollMetadataObject];&amp;lt;/code&amp;gt; || // prerollMetadataObject contains the JSON metadata for the preroll ad&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter playheadPosition: position];&amp;lt;/code&amp;gt; || // position is position of the playhead while the preroll ad is being played&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter stop];&amp;lt;/code&amp;gt; || // Call stop after preroll occurs&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Content || &amp;lt;code&amp;gt;[nielsenMeter loadMetadata: contentMetadataObject];&amp;lt;/code&amp;gt; || // contentMetadataObject contains the JSON metadata for the content being played&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter playheadPosition: position];&amp;lt;/code&amp;gt; || // position is position of the playhead while the content is being played&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter stop];&amp;lt;/code&amp;gt; || // Call stop after the content is paused (ad starts)&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Midroll || &amp;lt;code&amp;gt;[nielsenMeter loadMetadata: midrollMetadataObject];&amp;lt;/code&amp;gt; || // midrollMetadataObject contains the JSON metadata for the midroll ad&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter playheadPosition: position];&amp;lt;/code&amp;gt; || // position is position of the playhead while the midroll ad is being played&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter stop];&amp;lt;/code&amp;gt; || // Call stop after midroll occurs&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Content (End of stream) || &amp;lt;code&amp;gt;[nielsenMeter loadMetadata: contentMetadataObject];&amp;lt;/code&amp;gt; || // contentMetadataObject contains the JSON metadata for the content being played&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter playheadPosition: position];&amp;lt;/code&amp;gt; || // position is position of the playhead while the content is being played&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter end];&amp;lt;/code&amp;gt; || // Called at the end of content&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Postroll || &amp;lt;code&amp;gt;[nielsenMeter loadMetadata: postrollMetadataObject];&amp;lt;/code&amp;gt; || // postrollMetadataObject contains the JSON metadata for the postroll ad&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter playheadPosition: position];&amp;lt;/code&amp;gt; || // position is position of the playhead while the postroll ad is being played&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter stop];&amp;lt;/code&amp;gt; || // Call stop after postroll occurs&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;'''Note:''' Each Ad playhead should reset or begin from 0 at ad start. When content has resumed following an ad break, playhead position must continue from where previous content segment was left off.&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Nielsen Measurement Opt-Out Implementation ==&lt;br /&gt;
Opt-out implementation for podcasts is the same as live AM/FM stream measurement. &lt;br /&gt;
&lt;br /&gt;
== Technical Guides ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! style=&amp;quot;width: 90px;&amp;quot; | Type&lt;br /&gt;
! style=&amp;quot;width: 45px;&amp;quot; |&lt;br /&gt;
! style=&amp;quot;width: 45px;&amp;quot; | OS&lt;br /&gt;
! style=&amp;quot;width: 50%;&amp;quot; | DCR Implementation Guide&lt;br /&gt;
!| SDK Documentation&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;7&amp;quot; | {{SmallIcon|SDKIcon.png|alt=SDK}}&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | {{OSIcon|VideoIcon.png|alt=Video}}&lt;br /&gt;
| {{OSIcon|macOSIcon.png|alt=iOS}}&lt;br /&gt;
| '''[[DCR Video iOS SDK]]'''&lt;br /&gt;
| [[iOS SDK API Reference]]&lt;br /&gt;
|-&lt;br /&gt;
| {{OSIcon|AndroidIcon.png|alt=Android}}&lt;br /&gt;
| '''[[DCR Video Android SDK]]'''&lt;br /&gt;
| [[Android SDK API Reference]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;width: 90px;&amp;quot; |&lt;br /&gt;
! style=&amp;quot;width: 42%;&amp;quot; | Technical Guides&lt;br /&gt;
!&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;7&amp;quot; | {{SmallIcon|DigitalIcon.png}}&lt;br /&gt;
| '''[[Digital Measurement Onboarding]]'''&lt;br /&gt;
| '''[[Digital Measurement Metadata]]'''&lt;br /&gt;
|-&lt;br /&gt;
| '''[[Digital Measurement Testing]]'''&lt;br /&gt;
| '''[[Digital Measurement Interruption Scenarios]]'''&lt;br /&gt;
|-&lt;br /&gt;
| '''[[Digital Measurement FAQ]]'''&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| '''[[Digital Pre-Certification Checklist App SDK]]'''&lt;br /&gt;
| '''[[Digital Pre-Certification Checklist Browser SDK]]'''&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>KimBritt</name></author>
	</entry>
	<entry>
		<id>https://nielsentest.mywikis.net/w/index.php?title=DCR_Podcasts_in_Digital&amp;diff=2253</id>
		<title>DCR Podcasts in Digital</title>
		<link rel="alternate" type="text/html" href="https://nielsentest.mywikis.net/w/index.php?title=DCR_Podcasts_in_Digital&amp;diff=2253"/>
		<updated>2017-12-13T16:44:21Z</updated>

		<summary type="html">&lt;p&gt;KimBritt: ad pods&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Breadcrumb|}} {{Breadcrumb|Digital}} {{CurrentBreadcrumb}}&lt;br /&gt;
[[Category:Podcasts]]&lt;br /&gt;
{{CategoryIcon|DA.png|Podcasts}}&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
== Steps ==&lt;br /&gt;
This document assumes you have implemented Digital Audio with Live AM/FM stream measurement with a &amp;quot;radio&amp;quot; content type.    It outlines the new parameters you will use to implement podcast measurement. &lt;br /&gt;
&lt;br /&gt;
#Send a list of your podcasts or programs to your TAM to register them for reporting &lt;br /&gt;
#Get new appids from your TAM for the applications that will offer podcasts&lt;br /&gt;
#Update the parameters you use to call the SDK play and playheadPosition. Reference the appropriate [[Podcasts#Changes_for_Podcast_Measurement|Changes for Podcast Measurement]]  below&lt;br /&gt;
#Obtain Nielsen Podcast certification once your changes are complete and tested &lt;br /&gt;
#Complete a Production License with your Nielsen Account Representative&lt;br /&gt;
=== Library ===&lt;br /&gt;
Use the same SDK library as Digital Audio, live AM/FM stream measurement.&lt;br /&gt;
&lt;br /&gt;
== Changes for Podcast Measurement ==&lt;br /&gt;
=== Initializing the SDK ===&lt;br /&gt;
Update your appid to the new ID provided by your TAM for podcast measurement. &lt;br /&gt;
When you initialize the SDK, use 'dcr' in the sfcode instead of 'drm'. &lt;br /&gt;
&lt;br /&gt;
=== play ===&lt;br /&gt;
Continue to use [[play]] to pass the channel descriptor information through the channelName parameter when the user taps the '''Play''' button on the player. &lt;br /&gt;
&lt;br /&gt;
'''play Example'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;json&amp;quot;&amp;gt;{&lt;br /&gt;
   &amp;quot;channelName&amp;quot;: &amp;quot;KABC-FM Morning Show&amp;quot;&lt;br /&gt;
}&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== loadMetadata ===&lt;br /&gt;
Use [[loadMetadata]] to pass information about your podcast to the SDK. The parameters must be passed as a JSON object.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;objective-c&amp;quot;&amp;gt;    – (void) loadMetadata :(id)metadata;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Refer to [[loadMetadata]] for the list of parameters to be passed in the JSON object.&lt;br /&gt;
&amp;lt;blockquote&amp;gt;'''Note:''' The [[loadMetadata]] call after the first [[play]] call '''must have ‘content’ (&amp;quot;type&amp;quot;: &amp;quot;content&amp;quot;).''' &amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''loadMetadata Example'''&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;assetid&amp;quot;: &amp;quot;KABC:345-67483&amp;quot;,&lt;br /&gt;
  &amp;quot;program&amp;quot;: &amp;quot;KABC Morning Show&amp;quot;,&lt;br /&gt;
  &amp;quot;title&amp;quot;: &amp;quot;20171125: HR1&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;KABC-FM&amp;quot;,                        // station call letters and band are optional here                   &lt;br /&gt;
  &amp;quot;isfullepisode&amp;quot;: &amp;quot;y&amp;quot;,&lt;br /&gt;
  &amp;quot;airdate&amp;quot;: &amp;quot;20171125 06:00:00&amp;quot;,&lt;br /&gt;
  &amp;quot;adloadtype&amp;quot;: &amp;quot;2&amp;quot;,&lt;br /&gt;
  &amp;quot;pipmode&amp;quot;:&amp;quot;false&amp;quot; &lt;br /&gt;
}&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== playheadPosition for &amp;quot;content&amp;quot; ===&lt;br /&gt;
You will continue to use [[playheadPosition]] to pass the position of the playhead while the content is being played; however, you will pass the relative position from the beginning of the file.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Key !! Description !! Values !! Required? (Y/N) !! Example&lt;br /&gt;
|-&lt;br /&gt;
| On-Demand Audio || Position taken from beginning of the content in seconds. || Client-defined || Yes || Current player position from beginning of the content.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
''' playheadPosition Syntax Example for iOS'''&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;objective-c&amp;quot;&amp;gt;    CMTime curTime=[player currentTime];&lt;br /&gt;
    long pos=CMTimeGetSeconds(curTime);&lt;br /&gt;
    [nAppApiObject playheadPosition:pos];&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Type !! Sample code !! Description&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | Start of stream || &amp;lt;code&amp;gt;[nielsenMeter play: channelName];&amp;lt;/code&amp;gt; || // channelName contains JSON metadata of program being played&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter loadMetadata: contentMetadataObject];&amp;lt;/code&amp;gt; || // contentMetadataObject contains the JSON metadata for the content being played&lt;br /&gt;
|-&lt;br /&gt;
| Content || &amp;lt;code&amp;gt;[nielsenMeter playheadPosition: position];&amp;lt;/code&amp;gt; || // playheadPosition is position of the playhead while the content is being played&lt;br /&gt;
|-&lt;br /&gt;
| End of Stream || &amp;lt;code&amp;gt;[nielsenMeter end];&amp;lt;/code&amp;gt; || // Content playback is completed.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Call [[playheadPosition]] every two seconds until a pause / stop / another ''loadMetadata'' is called. &lt;br /&gt;
The below examples include ad pod information.  These ads are not ads served as part of the originator's programming (studio-recorded ads). These ads are hosted independently from the podcasts. &lt;br /&gt;
&lt;br /&gt;
When applicable, Playhead should be passed for the entire duration of ad pod, if the ad pod details are passed as part of [[loadMetadata]].&lt;br /&gt;
&lt;br /&gt;
The sample API sequence can be used as a reference to identify the specific events that need to be called during content and ad playback.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Type !! Sample code !! Description&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | Start of stream || &amp;lt;code&amp;gt;[nielsenMeter play: channelName];&amp;lt;/code&amp;gt; || // channelName contains JSON metadata of channel/video name being played&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter loadMetadata: contentMetadataObject];&amp;lt;/code&amp;gt; || // contentMetadataObject contains the JSON metadata for the content being played&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Preroll || &amp;lt;code&amp;gt;[nielsenMeter loadMetadata: prerollMetadataObject];&amp;lt;/code&amp;gt; || // prerollMetadataObject contains the JSON metadata for the preroll ad&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter playheadPosition: position];&amp;lt;/code&amp;gt; || // position is position of the playhead while the preroll ad is being played&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter stop];&amp;lt;/code&amp;gt; || // Call stop after preroll occurs&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Content || &amp;lt;code&amp;gt;[nielsenMeter loadMetadata: contentMetadataObject];&amp;lt;/code&amp;gt; || // contentMetadataObject contains the JSON metadata for the content being played&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter playheadPosition: position];&amp;lt;/code&amp;gt; || // position is position of the playhead while the content is being played&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter stop];&amp;lt;/code&amp;gt; || // Call stop after the content is paused (ad starts)&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Midroll || &amp;lt;code&amp;gt;[nielsenMeter loadMetadata: midrollMetadataObject];&amp;lt;/code&amp;gt; || // midrollMetadataObject contains the JSON metadata for the midroll ad&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter playheadPosition: position];&amp;lt;/code&amp;gt; || // position is position of the playhead while the midroll ad is being played&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter stop];&amp;lt;/code&amp;gt; || // Call stop after midroll occurs&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Content (End of stream) || &amp;lt;code&amp;gt;[nielsenMeter loadMetadata: contentMetadataObject];&amp;lt;/code&amp;gt; || // contentMetadataObject contains the JSON metadata for the content being played&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter playheadPosition: position];&amp;lt;/code&amp;gt; || // position is position of the playhead while the content is being played&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter end];&amp;lt;/code&amp;gt; || // Called at the end of content&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Postroll || &amp;lt;code&amp;gt;[nielsenMeter loadMetadata: postrollMetadataObject];&amp;lt;/code&amp;gt; || // postrollMetadataObject contains the JSON metadata for the postroll ad&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter playheadPosition: position];&amp;lt;/code&amp;gt; || // position is position of the playhead while the postroll ad is being played&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter stop];&amp;lt;/code&amp;gt; || // Call stop after postroll occurs&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;'''Note:''' Each Ad playhead should reset or begin from 0 at ad start. When content has resumed following an ad break, playhead position must continue from where previous content segment was left off.&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Nielsen Measurement Opt-Out Implementation ==&lt;br /&gt;
Opt-out implementation for podcasts is the same as live AM/FM stream measurement. &lt;br /&gt;
&lt;br /&gt;
== Technical Guides ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! style=&amp;quot;width: 90px;&amp;quot; | Type&lt;br /&gt;
! style=&amp;quot;width: 45px;&amp;quot; |&lt;br /&gt;
! style=&amp;quot;width: 45px;&amp;quot; | OS&lt;br /&gt;
! style=&amp;quot;width: 50%;&amp;quot; | DCR Implementation Guide&lt;br /&gt;
!| SDK Documentation&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;7&amp;quot; | {{SmallIcon|SDKIcon.png|alt=SDK}}&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | {{OSIcon|VideoIcon.png|alt=Video}}&lt;br /&gt;
| {{OSIcon|macOSIcon.png|alt=iOS}}&lt;br /&gt;
| '''[[DCR Video iOS SDK]]'''&lt;br /&gt;
| [[iOS SDK API Reference]]&lt;br /&gt;
|-&lt;br /&gt;
| {{OSIcon|AndroidIcon.png|alt=Android}}&lt;br /&gt;
| '''[[DCR Video Android SDK]]'''&lt;br /&gt;
| [[Android SDK API Reference]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;width: 90px;&amp;quot; |&lt;br /&gt;
! style=&amp;quot;width: 42%;&amp;quot; | Technical Guides&lt;br /&gt;
!&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;7&amp;quot; | {{SmallIcon|DigitalIcon.png}}&lt;br /&gt;
| '''[[Digital Measurement Onboarding]]'''&lt;br /&gt;
| '''[[Digital Measurement Metadata]]'''&lt;br /&gt;
|-&lt;br /&gt;
| '''[[Digital Measurement Testing]]'''&lt;br /&gt;
| '''[[Digital Measurement Interruption Scenarios]]'''&lt;br /&gt;
|-&lt;br /&gt;
| '''[[Digital Measurement FAQ]]'''&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| '''[[Digital Pre-Certification Checklist App SDK]]'''&lt;br /&gt;
| '''[[Digital Pre-Certification Checklist Browser SDK]]'''&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>KimBritt</name></author>
	</entry>
	<entry>
		<id>https://nielsentest.mywikis.net/w/index.php?title=DCR_Podcasts_in_Digital&amp;diff=2252</id>
		<title>DCR Podcasts in Digital</title>
		<link rel="alternate" type="text/html" href="https://nielsentest.mywikis.net/w/index.php?title=DCR_Podcasts_in_Digital&amp;diff=2252"/>
		<updated>2017-12-13T16:39:05Z</updated>

		<summary type="html">&lt;p&gt;KimBritt: bold&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Breadcrumb|}} {{Breadcrumb|Digital}} {{CurrentBreadcrumb}}&lt;br /&gt;
[[Category:Podcasts]]&lt;br /&gt;
{{CategoryIcon|DA.png|Podcasts}}&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
== Steps ==&lt;br /&gt;
This document assumes you have implemented Digital Audio with Live AM/FM stream measurement with a &amp;quot;radio&amp;quot; content type.    It outlines the new parameters you will use to implement podcast measurement. &lt;br /&gt;
&lt;br /&gt;
#Send a list of your podcasts or programs to your TAM to register them for reporting &lt;br /&gt;
#Get new appids from your TAM for the applications that will offer podcasts&lt;br /&gt;
#Update the parameters you use to call the SDK play and playheadPosition. Reference the appropriate [[Podcasts#Changes_for_Podcast_Measurement|Changes for Podcast Measurement]]  below&lt;br /&gt;
#Obtain Nielsen Podcast certification once your changes are complete and tested &lt;br /&gt;
#Complete a Production License with your Nielsen Account Representative&lt;br /&gt;
=== Library ===&lt;br /&gt;
Use the same SDK library as Digital Audio, live AM/FM stream measurement.&lt;br /&gt;
&lt;br /&gt;
== Changes for Podcast Measurement ==&lt;br /&gt;
=== Initializing the SDK ===&lt;br /&gt;
Update your appid to the new ID provided by your TAM for podcast measurement. &lt;br /&gt;
When you initialize the SDK, use 'dcr' in the sfcode instead of 'drm'. &lt;br /&gt;
&lt;br /&gt;
=== play ===&lt;br /&gt;
Continue to use [[play]] to pass the channel descriptor information through the channelName parameter when the user taps the '''Play''' button on the player. &lt;br /&gt;
&lt;br /&gt;
'''play Example'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;json&amp;quot;&amp;gt;{&lt;br /&gt;
   &amp;quot;channelName&amp;quot;: &amp;quot;KABC-FM Morning Show&amp;quot;&lt;br /&gt;
}&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== loadMetadata ===&lt;br /&gt;
Use [[loadMetadata]] to pass information about your podcast to the SDK. The parameters must be passed as a JSON object.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;objective-c&amp;quot;&amp;gt;    – (void) loadMetadata :(id)metadata;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Refer to [[loadMetadata]] for the list of parameters to be passed in the JSON object.&lt;br /&gt;
&amp;lt;blockquote&amp;gt;'''Note:''' The [[loadMetadata]] call after the first [[play]] call '''must have ‘content’ (&amp;quot;type&amp;quot;: &amp;quot;content&amp;quot;).''' &amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''loadMetadata Example'''&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;assetid&amp;quot;: &amp;quot;KABC:345-67483&amp;quot;,&lt;br /&gt;
  &amp;quot;program&amp;quot;: &amp;quot;KABC Morning Show&amp;quot;,&lt;br /&gt;
  &amp;quot;title&amp;quot;: &amp;quot;20171125: HR1&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;KABC-FM&amp;quot;,                        // station call letters and band are optional here                   &lt;br /&gt;
  &amp;quot;isfullepisode&amp;quot;: &amp;quot;y&amp;quot;,&lt;br /&gt;
  &amp;quot;airdate&amp;quot;: &amp;quot;20171125 06:00:00&amp;quot;,&lt;br /&gt;
  &amp;quot;adloadtype&amp;quot;: &amp;quot;2&amp;quot;,&lt;br /&gt;
  &amp;quot;pipmode&amp;quot;:&amp;quot;false&amp;quot; &lt;br /&gt;
}&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== playheadPosition for &amp;quot;content&amp;quot; ===&lt;br /&gt;
You will continue to use [[playheadPosition]] to pass the position of the playhead while the content is being played; however, you will pass the relative position from the beginning of the file.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;objective-c&amp;quot;&amp;gt;    – (void) playheadPosition: (long long) playheadPos&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Key !! Description !! Values !! Required? (Y/N) !! Example&lt;br /&gt;
|-&lt;br /&gt;
| On-Demand Audio || Position taken from beginning of the content in seconds. || Client-defined || Yes || Current player position from beginning of the content.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
''' playheadPosition Syntax Example for iOS'''&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;objective-c&amp;quot;&amp;gt;    CMTime curTime=[player currentTime];&lt;br /&gt;
    long pos=CMTimeGetSeconds(curTime);&lt;br /&gt;
    [nAppApiObject playheadPosition:pos];&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Type !! Sample code !! Description&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | Start of stream || &amp;lt;code&amp;gt;[nielsenMeter play: channelName];&amp;lt;/code&amp;gt; || // channelName contains JSON metadata of program being played&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter loadMetadata: contentMetadataObject];&amp;lt;/code&amp;gt; || // contentMetadataObject contains the JSON metadata for the content being played&lt;br /&gt;
|-&lt;br /&gt;
| Content || &amp;lt;code&amp;gt;[nielsenMeter playheadPosition: position];&amp;lt;/code&amp;gt; || // playheadPosition is position of the playhead while the content is being played&lt;br /&gt;
|-&lt;br /&gt;
| End of Stream || &amp;lt;code&amp;gt;[nielsenMeter end];&amp;lt;/code&amp;gt; || // Content playback is completed.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Call [[playheadPosition]] every two seconds until a pause / stop / another ''loadMetadata'' is called. Playhead should be passed for the entire duration of ad pod, if the ad pod details are passed as part of [[loadMetadata]].&lt;br /&gt;
&lt;br /&gt;
The sample API sequence can be used as a reference to identify the specific events that need to be called during content and ad playback.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Type !! Sample code !! Description&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | Start of stream || &amp;lt;code&amp;gt;[nielsenMeter play: channelName];&amp;lt;/code&amp;gt; || // channelName contains JSON metadata of channel/video name being played&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter loadMetadata: contentMetadataObject];&amp;lt;/code&amp;gt; || // contentMetadataObject contains the JSON metadata for the content being played&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Preroll || &amp;lt;code&amp;gt;[nielsenMeter loadMetadata: prerollMetadataObject];&amp;lt;/code&amp;gt; || // prerollMetadataObject contains the JSON metadata for the preroll ad&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter playheadPosition: position];&amp;lt;/code&amp;gt; || // position is position of the playhead while the preroll ad is being played&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter stop];&amp;lt;/code&amp;gt; || // Call stop after preroll occurs&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Content || &amp;lt;code&amp;gt;[nielsenMeter loadMetadata: contentMetadataObject];&amp;lt;/code&amp;gt; || // contentMetadataObject contains the JSON metadata for the content being played&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter playheadPosition: position];&amp;lt;/code&amp;gt; || // position is position of the playhead while the content is being played&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter stop];&amp;lt;/code&amp;gt; || // Call stop after the content is paused (ad starts)&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Midroll || &amp;lt;code&amp;gt;[nielsenMeter loadMetadata: midrollMetadataObject];&amp;lt;/code&amp;gt; || // midrollMetadataObject contains the JSON metadata for the midroll ad&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter playheadPosition: position];&amp;lt;/code&amp;gt; || // position is position of the playhead while the midroll ad is being played&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter stop];&amp;lt;/code&amp;gt; || // Call stop after midroll occurs&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Content (End of stream) || &amp;lt;code&amp;gt;[nielsenMeter loadMetadata: contentMetadataObject];&amp;lt;/code&amp;gt; || // contentMetadataObject contains the JSON metadata for the content being played&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter playheadPosition: position];&amp;lt;/code&amp;gt; || // position is position of the playhead while the content is being played&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter end];&amp;lt;/code&amp;gt; || // Called at the end of content&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Postroll || &amp;lt;code&amp;gt;[nielsenMeter loadMetadata: postrollMetadataObject];&amp;lt;/code&amp;gt; || // postrollMetadataObject contains the JSON metadata for the postroll ad&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter playheadPosition: position];&amp;lt;/code&amp;gt; || // position is position of the playhead while the postroll ad is being played&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter stop];&amp;lt;/code&amp;gt; || // Call stop after postroll occurs&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;'''Note:''' Each Ad playhead should reset or begin from 0 at ad start. When content has resumed following an ad break, playhead position must continue from where previous content segment was left off.&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Nielsen Measurement Opt-Out Implementation ==&lt;br /&gt;
Opt-out implementation for podcasts is the same as live AM/FM stream measurement. &lt;br /&gt;
&lt;br /&gt;
== Technical Guides ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! style=&amp;quot;width: 90px;&amp;quot; | Type&lt;br /&gt;
! style=&amp;quot;width: 45px;&amp;quot; |&lt;br /&gt;
! style=&amp;quot;width: 45px;&amp;quot; | OS&lt;br /&gt;
! style=&amp;quot;width: 50%;&amp;quot; | DCR Implementation Guide&lt;br /&gt;
!| SDK Documentation&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;7&amp;quot; | {{SmallIcon|SDKIcon.png|alt=SDK}}&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | {{OSIcon|VideoIcon.png|alt=Video}}&lt;br /&gt;
| {{OSIcon|macOSIcon.png|alt=iOS}}&lt;br /&gt;
| '''[[DCR Video iOS SDK]]'''&lt;br /&gt;
| [[iOS SDK API Reference]]&lt;br /&gt;
|-&lt;br /&gt;
| {{OSIcon|AndroidIcon.png|alt=Android}}&lt;br /&gt;
| '''[[DCR Video Android SDK]]'''&lt;br /&gt;
| [[Android SDK API Reference]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;width: 90px;&amp;quot; |&lt;br /&gt;
! style=&amp;quot;width: 42%;&amp;quot; | Technical Guides&lt;br /&gt;
!&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;7&amp;quot; | {{SmallIcon|DigitalIcon.png}}&lt;br /&gt;
| '''[[Digital Measurement Onboarding]]'''&lt;br /&gt;
| '''[[Digital Measurement Metadata]]'''&lt;br /&gt;
|-&lt;br /&gt;
| '''[[Digital Measurement Testing]]'''&lt;br /&gt;
| '''[[Digital Measurement Interruption Scenarios]]'''&lt;br /&gt;
|-&lt;br /&gt;
| '''[[Digital Measurement FAQ]]'''&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| '''[[Digital Pre-Certification Checklist App SDK]]'''&lt;br /&gt;
| '''[[Digital Pre-Certification Checklist Browser SDK]]'''&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>KimBritt</name></author>
	</entry>
	<entry>
		<id>https://nielsentest.mywikis.net/w/index.php?title=DCR_Podcasts_in_Digital&amp;diff=2251</id>
		<title>DCR Podcasts in Digital</title>
		<link rel="alternate" type="text/html" href="https://nielsentest.mywikis.net/w/index.php?title=DCR_Podcasts_in_Digital&amp;diff=2251"/>
		<updated>2017-12-13T16:37:58Z</updated>

		<summary type="html">&lt;p&gt;KimBritt: sdk&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Breadcrumb|}} {{Breadcrumb|Digital}} {{CurrentBreadcrumb}}&lt;br /&gt;
[[Category:Podcasts]]&lt;br /&gt;
{{CategoryIcon|DA.png|Podcasts}}&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
== Steps ==&lt;br /&gt;
This document assumes you have implemented Digital Audio with Live AM/FM stream measurement with a &amp;quot;radio&amp;quot; content type.    It outlines the new parameters you will use to implement podcast measurement. &lt;br /&gt;
&lt;br /&gt;
#Send a list of your podcasts or programs to your TAM to register them for reporting &lt;br /&gt;
#Get new appids from your TAM for the applications that will offer podcasts&lt;br /&gt;
#Update the parameters you use to call the SDK play and playheadPosition. Reference the appropriate [[Podcasts#Changes_for_Podcast_Measurement|Changes for Podcast Measurement]]  below&lt;br /&gt;
#Obtain Nielsen Podcast certification once your changes are complete and tested &lt;br /&gt;
#Complete a Production License with your Nielsen Account Representative&lt;br /&gt;
=== Library ===&lt;br /&gt;
Use the same SDK library as Digital Audio, live AM/FM stream measurement.&lt;br /&gt;
&lt;br /&gt;
== Changes for Podcast Measurement ==&lt;br /&gt;
=== Initializing the SDK ===&lt;br /&gt;
Update your appid to the new ID provided by your TAM for podcast measurement. &lt;br /&gt;
When you initialize the SDK, use 'dcr' in the sfcode instead of 'drm'. &lt;br /&gt;
&lt;br /&gt;
=== play ===&lt;br /&gt;
Continue to use [[play]] to pass the channel descriptor information through the channelName parameter when the user taps the '''Play''' button on the player. &lt;br /&gt;
&lt;br /&gt;
===play Example ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;json&amp;quot;&amp;gt;{&lt;br /&gt;
   &amp;quot;channelName&amp;quot;: &amp;quot;KABC-FM Morning Show&amp;quot;&lt;br /&gt;
}&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== loadMetadata ===&lt;br /&gt;
Use [[loadMetadata]] to pass information about your podcast to the SDK. The parameters must be passed as a JSON object.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;objective-c&amp;quot;&amp;gt;    – (void) loadMetadata :(id)metadata;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Refer to [[loadMetadata]] for the list of parameters to be passed in the JSON object.&lt;br /&gt;
&amp;lt;blockquote&amp;gt;'''Note:''' The [[loadMetadata]] call after the first [[play]] call '''must have ‘content’ (&amp;quot;type&amp;quot;: &amp;quot;content&amp;quot;).''' &amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== loadMetadata Example ===&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;assetid&amp;quot;: &amp;quot;KABC:345-67483&amp;quot;,&lt;br /&gt;
  &amp;quot;program&amp;quot;: &amp;quot;KABC Morning Show&amp;quot;,&lt;br /&gt;
  &amp;quot;title&amp;quot;: &amp;quot;20171125: HR1&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;KABC-FM&amp;quot;,                        // station call letters and band are optional here                   &lt;br /&gt;
  &amp;quot;isfullepisode&amp;quot;: &amp;quot;y&amp;quot;,&lt;br /&gt;
  &amp;quot;airdate&amp;quot;: &amp;quot;20171125 06:00:00&amp;quot;,&lt;br /&gt;
  &amp;quot;adloadtype&amp;quot;: &amp;quot;2&amp;quot;,&lt;br /&gt;
  &amp;quot;pipmode&amp;quot;:&amp;quot;false&amp;quot; &lt;br /&gt;
}&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== playheadPosition for &amp;quot;content&amp;quot; ===&lt;br /&gt;
You will continue to use [[playheadPosition]] to pass the position of the playhead while the content is being played; however, you will pass the relative position from the beginning of the file.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;objective-c&amp;quot;&amp;gt;    – (void) playheadPosition: (long long) playheadPos&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Key !! Description !! Values !! Required? (Y/N) !! Example&lt;br /&gt;
|-&lt;br /&gt;
| On-Demand Audio || Position taken from beginning of the content in seconds. || Client-defined || Yes || Current player position from beginning of the content.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
''' playheadPosition Syntax Example for iOS'''&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;objective-c&amp;quot;&amp;gt;    CMTime curTime=[player currentTime];&lt;br /&gt;
    long pos=CMTimeGetSeconds(curTime);&lt;br /&gt;
    [nAppApiObject playheadPosition:pos];&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Type !! Sample code !! Description&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | Start of stream || &amp;lt;code&amp;gt;[nielsenMeter play: channelName];&amp;lt;/code&amp;gt; || // channelName contains JSON metadata of program being played&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter loadMetadata: contentMetadataObject];&amp;lt;/code&amp;gt; || // contentMetadataObject contains the JSON metadata for the content being played&lt;br /&gt;
|-&lt;br /&gt;
| Content || &amp;lt;code&amp;gt;[nielsenMeter playheadPosition: position];&amp;lt;/code&amp;gt; || // playheadPosition is position of the playhead while the content is being played&lt;br /&gt;
|-&lt;br /&gt;
| End of Stream || &amp;lt;code&amp;gt;[nielsenMeter end];&amp;lt;/code&amp;gt; || // Content playback is completed.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Call [[playheadPosition]] every two seconds until a pause / stop / another ''loadMetadata'' is called. Playhead should be passed for the entire duration of ad pod, if the ad pod details are passed as part of [[loadMetadata]].&lt;br /&gt;
&lt;br /&gt;
The sample API sequence can be used as a reference to identify the specific events that need to be called during content and ad playback.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Type !! Sample code !! Description&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | Start of stream || &amp;lt;code&amp;gt;[nielsenMeter play: channelName];&amp;lt;/code&amp;gt; || // channelName contains JSON metadata of channel/video name being played&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter loadMetadata: contentMetadataObject];&amp;lt;/code&amp;gt; || // contentMetadataObject contains the JSON metadata for the content being played&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Preroll || &amp;lt;code&amp;gt;[nielsenMeter loadMetadata: prerollMetadataObject];&amp;lt;/code&amp;gt; || // prerollMetadataObject contains the JSON metadata for the preroll ad&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter playheadPosition: position];&amp;lt;/code&amp;gt; || // position is position of the playhead while the preroll ad is being played&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter stop];&amp;lt;/code&amp;gt; || // Call stop after preroll occurs&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Content || &amp;lt;code&amp;gt;[nielsenMeter loadMetadata: contentMetadataObject];&amp;lt;/code&amp;gt; || // contentMetadataObject contains the JSON metadata for the content being played&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter playheadPosition: position];&amp;lt;/code&amp;gt; || // position is position of the playhead while the content is being played&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter stop];&amp;lt;/code&amp;gt; || // Call stop after the content is paused (ad starts)&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Midroll || &amp;lt;code&amp;gt;[nielsenMeter loadMetadata: midrollMetadataObject];&amp;lt;/code&amp;gt; || // midrollMetadataObject contains the JSON metadata for the midroll ad&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter playheadPosition: position];&amp;lt;/code&amp;gt; || // position is position of the playhead while the midroll ad is being played&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter stop];&amp;lt;/code&amp;gt; || // Call stop after midroll occurs&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Content (End of stream) || &amp;lt;code&amp;gt;[nielsenMeter loadMetadata: contentMetadataObject];&amp;lt;/code&amp;gt; || // contentMetadataObject contains the JSON metadata for the content being played&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter playheadPosition: position];&amp;lt;/code&amp;gt; || // position is position of the playhead while the content is being played&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter end];&amp;lt;/code&amp;gt; || // Called at the end of content&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Postroll || &amp;lt;code&amp;gt;[nielsenMeter loadMetadata: postrollMetadataObject];&amp;lt;/code&amp;gt; || // postrollMetadataObject contains the JSON metadata for the postroll ad&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter playheadPosition: position];&amp;lt;/code&amp;gt; || // position is position of the playhead while the postroll ad is being played&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter stop];&amp;lt;/code&amp;gt; || // Call stop after postroll occurs&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;'''Note:''' Each Ad playhead should reset or begin from 0 at ad start. When content has resumed following an ad break, playhead position must continue from where previous content segment was left off.&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Nielsen Measurement Opt-Out Implementation ==&lt;br /&gt;
Opt-out implementation for podcasts is the same as live AM/FM stream measurement. &lt;br /&gt;
&lt;br /&gt;
== Technical Guides ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! style=&amp;quot;width: 90px;&amp;quot; | Type&lt;br /&gt;
! style=&amp;quot;width: 45px;&amp;quot; |&lt;br /&gt;
! style=&amp;quot;width: 45px;&amp;quot; | OS&lt;br /&gt;
! style=&amp;quot;width: 50%;&amp;quot; | DCR Implementation Guide&lt;br /&gt;
!| SDK Documentation&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;7&amp;quot; | {{SmallIcon|SDKIcon.png|alt=SDK}}&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | {{OSIcon|VideoIcon.png|alt=Video}}&lt;br /&gt;
| {{OSIcon|macOSIcon.png|alt=iOS}}&lt;br /&gt;
| '''[[DCR Video iOS SDK]]'''&lt;br /&gt;
| [[iOS SDK API Reference]]&lt;br /&gt;
|-&lt;br /&gt;
| {{OSIcon|AndroidIcon.png|alt=Android}}&lt;br /&gt;
| '''[[DCR Video Android SDK]]'''&lt;br /&gt;
| [[Android SDK API Reference]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;width: 90px;&amp;quot; |&lt;br /&gt;
! style=&amp;quot;width: 42%;&amp;quot; | Technical Guides&lt;br /&gt;
!&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;7&amp;quot; | {{SmallIcon|DigitalIcon.png}}&lt;br /&gt;
| '''[[Digital Measurement Onboarding]]'''&lt;br /&gt;
| '''[[Digital Measurement Metadata]]'''&lt;br /&gt;
|-&lt;br /&gt;
| '''[[Digital Measurement Testing]]'''&lt;br /&gt;
| '''[[Digital Measurement Interruption Scenarios]]'''&lt;br /&gt;
|-&lt;br /&gt;
| '''[[Digital Measurement FAQ]]'''&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| '''[[Digital Pre-Certification Checklist App SDK]]'''&lt;br /&gt;
| '''[[Digital Pre-Certification Checklist Browser SDK]]'''&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>KimBritt</name></author>
	</entry>
	<entry>
		<id>https://nielsentest.mywikis.net/w/index.php?title=DCR_Podcasts_in_Digital&amp;diff=2250</id>
		<title>DCR Podcasts in Digital</title>
		<link rel="alternate" type="text/html" href="https://nielsentest.mywikis.net/w/index.php?title=DCR_Podcasts_in_Digital&amp;diff=2250"/>
		<updated>2017-12-13T16:37:37Z</updated>

		<summary type="html">&lt;p&gt;KimBritt: podcast category&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Breadcrumb|}} {{Breadcrumb|Digital}} {{CurrentBreadcrumb}}&lt;br /&gt;
[[Category:Podcasts]]&lt;br /&gt;
{{CategoryIcon|DA.png|Podcasts}}&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
== Steps ==&lt;br /&gt;
This document assumes you have implemented Digital Audio with Live AM/FM stream measurement with a &amp;quot;radio&amp;quot; content type.    It outlines the new parameters you will use to implement podcast measurement. &lt;br /&gt;
&lt;br /&gt;
#Send a list of your podcasts or programs to your TAM to register them for reporting &lt;br /&gt;
#Get new appids from your TAM for the applications that will offer podcasts&lt;br /&gt;
#Update the parameters you use to call the SDK play and playheadPosition. Reference the appropriate [[Podcasts#Changes_for_Podcast_Measurement|Changes for Podcast Measurement]]  below&lt;br /&gt;
#Obtain Nielsen Podcast certification once your changes are complete and tested &lt;br /&gt;
#Complete a Production License with your Nielsen Account Representative&lt;br /&gt;
=== Library ===&lt;br /&gt;
Use the same library as Digital Audio, live AM/FM stream measurement.&lt;br /&gt;
&lt;br /&gt;
== Changes for Podcast Measurement ==&lt;br /&gt;
=== Initializing the SDK ===&lt;br /&gt;
Update your appid to the new ID provided by your TAM for podcast measurement. &lt;br /&gt;
When you initialize the SDK, use 'dcr' in the sfcode instead of 'drm'. &lt;br /&gt;
&lt;br /&gt;
=== play ===&lt;br /&gt;
Continue to use [[play]] to pass the channel descriptor information through the channelName parameter when the user taps the '''Play''' button on the player. &lt;br /&gt;
&lt;br /&gt;
===play Example ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;json&amp;quot;&amp;gt;{&lt;br /&gt;
   &amp;quot;channelName&amp;quot;: &amp;quot;KABC-FM Morning Show&amp;quot;&lt;br /&gt;
}&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== loadMetadata ===&lt;br /&gt;
Use [[loadMetadata]] to pass information about your podcast to the SDK. The parameters must be passed as a JSON object.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;objective-c&amp;quot;&amp;gt;    – (void) loadMetadata :(id)metadata;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Refer to [[loadMetadata]] for the list of parameters to be passed in the JSON object.&lt;br /&gt;
&amp;lt;blockquote&amp;gt;'''Note:''' The [[loadMetadata]] call after the first [[play]] call '''must have ‘content’ (&amp;quot;type&amp;quot;: &amp;quot;content&amp;quot;).''' &amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== loadMetadata Example ===&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;assetid&amp;quot;: &amp;quot;KABC:345-67483&amp;quot;,&lt;br /&gt;
  &amp;quot;program&amp;quot;: &amp;quot;KABC Morning Show&amp;quot;,&lt;br /&gt;
  &amp;quot;title&amp;quot;: &amp;quot;20171125: HR1&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;KABC-FM&amp;quot;,                        // station call letters and band are optional here                   &lt;br /&gt;
  &amp;quot;isfullepisode&amp;quot;: &amp;quot;y&amp;quot;,&lt;br /&gt;
  &amp;quot;airdate&amp;quot;: &amp;quot;20171125 06:00:00&amp;quot;,&lt;br /&gt;
  &amp;quot;adloadtype&amp;quot;: &amp;quot;2&amp;quot;,&lt;br /&gt;
  &amp;quot;pipmode&amp;quot;:&amp;quot;false&amp;quot; &lt;br /&gt;
}&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== playheadPosition for &amp;quot;content&amp;quot; ===&lt;br /&gt;
You will continue to use [[playheadPosition]] to pass the position of the playhead while the content is being played; however, you will pass the relative position from the beginning of the file.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;objective-c&amp;quot;&amp;gt;    – (void) playheadPosition: (long long) playheadPos&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Key !! Description !! Values !! Required? (Y/N) !! Example&lt;br /&gt;
|-&lt;br /&gt;
| On-Demand Audio || Position taken from beginning of the content in seconds. || Client-defined || Yes || Current player position from beginning of the content.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
''' playheadPosition Syntax Example for iOS'''&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;objective-c&amp;quot;&amp;gt;    CMTime curTime=[player currentTime];&lt;br /&gt;
    long pos=CMTimeGetSeconds(curTime);&lt;br /&gt;
    [nAppApiObject playheadPosition:pos];&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Type !! Sample code !! Description&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | Start of stream || &amp;lt;code&amp;gt;[nielsenMeter play: channelName];&amp;lt;/code&amp;gt; || // channelName contains JSON metadata of program being played&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter loadMetadata: contentMetadataObject];&amp;lt;/code&amp;gt; || // contentMetadataObject contains the JSON metadata for the content being played&lt;br /&gt;
|-&lt;br /&gt;
| Content || &amp;lt;code&amp;gt;[nielsenMeter playheadPosition: position];&amp;lt;/code&amp;gt; || // playheadPosition is position of the playhead while the content is being played&lt;br /&gt;
|-&lt;br /&gt;
| End of Stream || &amp;lt;code&amp;gt;[nielsenMeter end];&amp;lt;/code&amp;gt; || // Content playback is completed.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Call [[playheadPosition]] every two seconds until a pause / stop / another ''loadMetadata'' is called. Playhead should be passed for the entire duration of ad pod, if the ad pod details are passed as part of [[loadMetadata]].&lt;br /&gt;
&lt;br /&gt;
The sample API sequence can be used as a reference to identify the specific events that need to be called during content and ad playback.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Type !! Sample code !! Description&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | Start of stream || &amp;lt;code&amp;gt;[nielsenMeter play: channelName];&amp;lt;/code&amp;gt; || // channelName contains JSON metadata of channel/video name being played&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter loadMetadata: contentMetadataObject];&amp;lt;/code&amp;gt; || // contentMetadataObject contains the JSON metadata for the content being played&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Preroll || &amp;lt;code&amp;gt;[nielsenMeter loadMetadata: prerollMetadataObject];&amp;lt;/code&amp;gt; || // prerollMetadataObject contains the JSON metadata for the preroll ad&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter playheadPosition: position];&amp;lt;/code&amp;gt; || // position is position of the playhead while the preroll ad is being played&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter stop];&amp;lt;/code&amp;gt; || // Call stop after preroll occurs&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Content || &amp;lt;code&amp;gt;[nielsenMeter loadMetadata: contentMetadataObject];&amp;lt;/code&amp;gt; || // contentMetadataObject contains the JSON metadata for the content being played&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter playheadPosition: position];&amp;lt;/code&amp;gt; || // position is position of the playhead while the content is being played&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter stop];&amp;lt;/code&amp;gt; || // Call stop after the content is paused (ad starts)&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Midroll || &amp;lt;code&amp;gt;[nielsenMeter loadMetadata: midrollMetadataObject];&amp;lt;/code&amp;gt; || // midrollMetadataObject contains the JSON metadata for the midroll ad&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter playheadPosition: position];&amp;lt;/code&amp;gt; || // position is position of the playhead while the midroll ad is being played&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter stop];&amp;lt;/code&amp;gt; || // Call stop after midroll occurs&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Content (End of stream) || &amp;lt;code&amp;gt;[nielsenMeter loadMetadata: contentMetadataObject];&amp;lt;/code&amp;gt; || // contentMetadataObject contains the JSON metadata for the content being played&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter playheadPosition: position];&amp;lt;/code&amp;gt; || // position is position of the playhead while the content is being played&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter end];&amp;lt;/code&amp;gt; || // Called at the end of content&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Postroll || &amp;lt;code&amp;gt;[nielsenMeter loadMetadata: postrollMetadataObject];&amp;lt;/code&amp;gt; || // postrollMetadataObject contains the JSON metadata for the postroll ad&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter playheadPosition: position];&amp;lt;/code&amp;gt; || // position is position of the playhead while the postroll ad is being played&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter stop];&amp;lt;/code&amp;gt; || // Call stop after postroll occurs&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;'''Note:''' Each Ad playhead should reset or begin from 0 at ad start. When content has resumed following an ad break, playhead position must continue from where previous content segment was left off.&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Nielsen Measurement Opt-Out Implementation ==&lt;br /&gt;
Opt-out implementation for podcasts is the same as live AM/FM stream measurement. &lt;br /&gt;
&lt;br /&gt;
== Technical Guides ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! style=&amp;quot;width: 90px;&amp;quot; | Type&lt;br /&gt;
! style=&amp;quot;width: 45px;&amp;quot; |&lt;br /&gt;
! style=&amp;quot;width: 45px;&amp;quot; | OS&lt;br /&gt;
! style=&amp;quot;width: 50%;&amp;quot; | DCR Implementation Guide&lt;br /&gt;
!| SDK Documentation&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;7&amp;quot; | {{SmallIcon|SDKIcon.png|alt=SDK}}&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | {{OSIcon|VideoIcon.png|alt=Video}}&lt;br /&gt;
| {{OSIcon|macOSIcon.png|alt=iOS}}&lt;br /&gt;
| '''[[DCR Video iOS SDK]]'''&lt;br /&gt;
| [[iOS SDK API Reference]]&lt;br /&gt;
|-&lt;br /&gt;
| {{OSIcon|AndroidIcon.png|alt=Android}}&lt;br /&gt;
| '''[[DCR Video Android SDK]]'''&lt;br /&gt;
| [[Android SDK API Reference]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;width: 90px;&amp;quot; |&lt;br /&gt;
! style=&amp;quot;width: 42%;&amp;quot; | Technical Guides&lt;br /&gt;
!&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;7&amp;quot; | {{SmallIcon|DigitalIcon.png}}&lt;br /&gt;
| '''[[Digital Measurement Onboarding]]'''&lt;br /&gt;
| '''[[Digital Measurement Metadata]]'''&lt;br /&gt;
|-&lt;br /&gt;
| '''[[Digital Measurement Testing]]'''&lt;br /&gt;
| '''[[Digital Measurement Interruption Scenarios]]'''&lt;br /&gt;
|-&lt;br /&gt;
| '''[[Digital Measurement FAQ]]'''&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| '''[[Digital Pre-Certification Checklist App SDK]]'''&lt;br /&gt;
| '''[[Digital Pre-Certification Checklist Browser SDK]]'''&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>KimBritt</name></author>
	</entry>
	<entry>
		<id>https://nielsentest.mywikis.net/w/index.php?title=DCR_Podcasts_in_Digital&amp;diff=2249</id>
		<title>DCR Podcasts in Digital</title>
		<link rel="alternate" type="text/html" href="https://nielsentest.mywikis.net/w/index.php?title=DCR_Podcasts_in_Digital&amp;diff=2249"/>
		<updated>2017-12-13T16:37:16Z</updated>

		<summary type="html">&lt;p&gt;KimBritt: category&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Breadcrumb|}} {{Breadcrumb|Digital}} {{CurrentBreadcrumb}}&lt;br /&gt;
[[Category:Podcasts]]&lt;br /&gt;
{{CategoryIcon|DA.png|Digital Audio}}&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
== Steps ==&lt;br /&gt;
This document assumes you have implemented Digital Audio with Live AM/FM stream measurement with a &amp;quot;radio&amp;quot; content type.    It outlines the new parameters you will use to implement podcast measurement. &lt;br /&gt;
&lt;br /&gt;
#Send a list of your podcasts or programs to your TAM to register them for reporting &lt;br /&gt;
#Get new appids from your TAM for the applications that will offer podcasts&lt;br /&gt;
#Update the parameters you use to call the SDK play and playheadPosition. Reference the appropriate [[Podcasts#Changes_for_Podcast_Measurement|Changes for Podcast Measurement]]  below&lt;br /&gt;
#Obtain Nielsen Podcast certification once your changes are complete and tested &lt;br /&gt;
#Complete a Production License with your Nielsen Account Representative&lt;br /&gt;
=== Library ===&lt;br /&gt;
Use the same library as Digital Audio, live AM/FM stream measurement.&lt;br /&gt;
&lt;br /&gt;
== Changes for Podcast Measurement ==&lt;br /&gt;
=== Initializing the SDK ===&lt;br /&gt;
Update your appid to the new ID provided by your TAM for podcast measurement. &lt;br /&gt;
When you initialize the SDK, use 'dcr' in the sfcode instead of 'drm'. &lt;br /&gt;
&lt;br /&gt;
=== play ===&lt;br /&gt;
Continue to use [[play]] to pass the channel descriptor information through the channelName parameter when the user taps the '''Play''' button on the player. &lt;br /&gt;
&lt;br /&gt;
===play Example ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;json&amp;quot;&amp;gt;{&lt;br /&gt;
   &amp;quot;channelName&amp;quot;: &amp;quot;KABC-FM Morning Show&amp;quot;&lt;br /&gt;
}&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== loadMetadata ===&lt;br /&gt;
Use [[loadMetadata]] to pass information about your podcast to the SDK. The parameters must be passed as a JSON object.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;objective-c&amp;quot;&amp;gt;    – (void) loadMetadata :(id)metadata;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Refer to [[loadMetadata]] for the list of parameters to be passed in the JSON object.&lt;br /&gt;
&amp;lt;blockquote&amp;gt;'''Note:''' The [[loadMetadata]] call after the first [[play]] call '''must have ‘content’ (&amp;quot;type&amp;quot;: &amp;quot;content&amp;quot;).''' &amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== loadMetadata Example ===&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;assetid&amp;quot;: &amp;quot;KABC:345-67483&amp;quot;,&lt;br /&gt;
  &amp;quot;program&amp;quot;: &amp;quot;KABC Morning Show&amp;quot;,&lt;br /&gt;
  &amp;quot;title&amp;quot;: &amp;quot;20171125: HR1&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;KABC-FM&amp;quot;,                        // station call letters and band are optional here                   &lt;br /&gt;
  &amp;quot;isfullepisode&amp;quot;: &amp;quot;y&amp;quot;,&lt;br /&gt;
  &amp;quot;airdate&amp;quot;: &amp;quot;20171125 06:00:00&amp;quot;,&lt;br /&gt;
  &amp;quot;adloadtype&amp;quot;: &amp;quot;2&amp;quot;,&lt;br /&gt;
  &amp;quot;pipmode&amp;quot;:&amp;quot;false&amp;quot; &lt;br /&gt;
}&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== playheadPosition for &amp;quot;content&amp;quot; ===&lt;br /&gt;
You will continue to use [[playheadPosition]] to pass the position of the playhead while the content is being played; however, you will pass the relative position from the beginning of the file.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;objective-c&amp;quot;&amp;gt;    – (void) playheadPosition: (long long) playheadPos&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Key !! Description !! Values !! Required? (Y/N) !! Example&lt;br /&gt;
|-&lt;br /&gt;
| On-Demand Audio || Position taken from beginning of the content in seconds. || Client-defined || Yes || Current player position from beginning of the content.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
''' playheadPosition Syntax Example for iOS'''&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;objective-c&amp;quot;&amp;gt;    CMTime curTime=[player currentTime];&lt;br /&gt;
    long pos=CMTimeGetSeconds(curTime);&lt;br /&gt;
    [nAppApiObject playheadPosition:pos];&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Type !! Sample code !! Description&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | Start of stream || &amp;lt;code&amp;gt;[nielsenMeter play: channelName];&amp;lt;/code&amp;gt; || // channelName contains JSON metadata of program being played&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter loadMetadata: contentMetadataObject];&amp;lt;/code&amp;gt; || // contentMetadataObject contains the JSON metadata for the content being played&lt;br /&gt;
|-&lt;br /&gt;
| Content || &amp;lt;code&amp;gt;[nielsenMeter playheadPosition: position];&amp;lt;/code&amp;gt; || // playheadPosition is position of the playhead while the content is being played&lt;br /&gt;
|-&lt;br /&gt;
| End of Stream || &amp;lt;code&amp;gt;[nielsenMeter end];&amp;lt;/code&amp;gt; || // Content playback is completed.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Call [[playheadPosition]] every two seconds until a pause / stop / another ''loadMetadata'' is called. Playhead should be passed for the entire duration of ad pod, if the ad pod details are passed as part of [[loadMetadata]].&lt;br /&gt;
&lt;br /&gt;
The sample API sequence can be used as a reference to identify the specific events that need to be called during content and ad playback.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Type !! Sample code !! Description&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | Start of stream || &amp;lt;code&amp;gt;[nielsenMeter play: channelName];&amp;lt;/code&amp;gt; || // channelName contains JSON metadata of channel/video name being played&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter loadMetadata: contentMetadataObject];&amp;lt;/code&amp;gt; || // contentMetadataObject contains the JSON metadata for the content being played&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Preroll || &amp;lt;code&amp;gt;[nielsenMeter loadMetadata: prerollMetadataObject];&amp;lt;/code&amp;gt; || // prerollMetadataObject contains the JSON metadata for the preroll ad&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter playheadPosition: position];&amp;lt;/code&amp;gt; || // position is position of the playhead while the preroll ad is being played&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter stop];&amp;lt;/code&amp;gt; || // Call stop after preroll occurs&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Content || &amp;lt;code&amp;gt;[nielsenMeter loadMetadata: contentMetadataObject];&amp;lt;/code&amp;gt; || // contentMetadataObject contains the JSON metadata for the content being played&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter playheadPosition: position];&amp;lt;/code&amp;gt; || // position is position of the playhead while the content is being played&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter stop];&amp;lt;/code&amp;gt; || // Call stop after the content is paused (ad starts)&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Midroll || &amp;lt;code&amp;gt;[nielsenMeter loadMetadata: midrollMetadataObject];&amp;lt;/code&amp;gt; || // midrollMetadataObject contains the JSON metadata for the midroll ad&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter playheadPosition: position];&amp;lt;/code&amp;gt; || // position is position of the playhead while the midroll ad is being played&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter stop];&amp;lt;/code&amp;gt; || // Call stop after midroll occurs&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Content (End of stream) || &amp;lt;code&amp;gt;[nielsenMeter loadMetadata: contentMetadataObject];&amp;lt;/code&amp;gt; || // contentMetadataObject contains the JSON metadata for the content being played&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter playheadPosition: position];&amp;lt;/code&amp;gt; || // position is position of the playhead while the content is being played&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter end];&amp;lt;/code&amp;gt; || // Called at the end of content&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Postroll || &amp;lt;code&amp;gt;[nielsenMeter loadMetadata: postrollMetadataObject];&amp;lt;/code&amp;gt; || // postrollMetadataObject contains the JSON metadata for the postroll ad&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter playheadPosition: position];&amp;lt;/code&amp;gt; || // position is position of the playhead while the postroll ad is being played&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter stop];&amp;lt;/code&amp;gt; || // Call stop after postroll occurs&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;'''Note:''' Each Ad playhead should reset or begin from 0 at ad start. When content has resumed following an ad break, playhead position must continue from where previous content segment was left off.&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Nielsen Measurement Opt-Out Implementation ==&lt;br /&gt;
Opt-out implementation for podcasts is the same as live AM/FM stream measurement. &lt;br /&gt;
&lt;br /&gt;
== Technical Guides ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! style=&amp;quot;width: 90px;&amp;quot; | Type&lt;br /&gt;
! style=&amp;quot;width: 45px;&amp;quot; |&lt;br /&gt;
! style=&amp;quot;width: 45px;&amp;quot; | OS&lt;br /&gt;
! style=&amp;quot;width: 50%;&amp;quot; | DCR Implementation Guide&lt;br /&gt;
!| SDK Documentation&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;7&amp;quot; | {{SmallIcon|SDKIcon.png|alt=SDK}}&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | {{OSIcon|VideoIcon.png|alt=Video}}&lt;br /&gt;
| {{OSIcon|macOSIcon.png|alt=iOS}}&lt;br /&gt;
| '''[[DCR Video iOS SDK]]'''&lt;br /&gt;
| [[iOS SDK API Reference]]&lt;br /&gt;
|-&lt;br /&gt;
| {{OSIcon|AndroidIcon.png|alt=Android}}&lt;br /&gt;
| '''[[DCR Video Android SDK]]'''&lt;br /&gt;
| [[Android SDK API Reference]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;width: 90px;&amp;quot; |&lt;br /&gt;
! style=&amp;quot;width: 42%;&amp;quot; | Technical Guides&lt;br /&gt;
!&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;7&amp;quot; | {{SmallIcon|DigitalIcon.png}}&lt;br /&gt;
| '''[[Digital Measurement Onboarding]]'''&lt;br /&gt;
| '''[[Digital Measurement Metadata]]'''&lt;br /&gt;
|-&lt;br /&gt;
| '''[[Digital Measurement Testing]]'''&lt;br /&gt;
| '''[[Digital Measurement Interruption Scenarios]]'''&lt;br /&gt;
|-&lt;br /&gt;
| '''[[Digital Measurement FAQ]]'''&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| '''[[Digital Pre-Certification Checklist App SDK]]'''&lt;br /&gt;
| '''[[Digital Pre-Certification Checklist Browser SDK]]'''&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>KimBritt</name></author>
	</entry>
	<entry>
		<id>https://nielsentest.mywikis.net/w/index.php?title=DCR_Podcasts_in_Digital&amp;diff=2248</id>
		<title>DCR Podcasts in Digital</title>
		<link rel="alternate" type="text/html" href="https://nielsentest.mywikis.net/w/index.php?title=DCR_Podcasts_in_Digital&amp;diff=2248"/>
		<updated>2017-12-13T16:35:49Z</updated>

		<summary type="html">&lt;p&gt;KimBritt: link subtitle&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Breadcrumb|}} {{Breadcrumb|Digital}} {{CurrentBreadcrumb}}&lt;br /&gt;
[[Category:Digital]]&lt;br /&gt;
&lt;br /&gt;
== Steps ==&lt;br /&gt;
This document assumes you have implemented Digital Audio with Live AM/FM stream measurement with a &amp;quot;radio&amp;quot; content type.    It outlines the new parameters you will use to implement podcast measurement. &lt;br /&gt;
&lt;br /&gt;
#Send a list of your podcasts or programs to your TAM to register them for reporting &lt;br /&gt;
#Get new appids from your TAM for the applications that will offer podcasts&lt;br /&gt;
#Update the parameters you use to call the SDK play and playheadPosition. Reference the appropriate [[Podcasts#Changes_for_Podcast_Measurement|Changes for Podcast Measurement]]  below&lt;br /&gt;
#Obtain Nielsen Podcast certification once your changes are complete and tested &lt;br /&gt;
#Complete a Production License with your Nielsen Account Representative&lt;br /&gt;
=== Library ===&lt;br /&gt;
Use the same library as Digital Audio, live AM/FM stream measurement.&lt;br /&gt;
&lt;br /&gt;
== Changes for Podcast Measurement ==&lt;br /&gt;
=== Initializing the SDK ===&lt;br /&gt;
Update your appid to the new ID provided by your TAM for podcast measurement. &lt;br /&gt;
When you initialize the SDK, use 'dcr' in the sfcode instead of 'drm'. &lt;br /&gt;
&lt;br /&gt;
=== play ===&lt;br /&gt;
Continue to use [[play]] to pass the channel descriptor information through the channelName parameter when the user taps the '''Play''' button on the player. &lt;br /&gt;
&lt;br /&gt;
===play Example ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;json&amp;quot;&amp;gt;{&lt;br /&gt;
   &amp;quot;channelName&amp;quot;: &amp;quot;KABC-FM Morning Show&amp;quot;&lt;br /&gt;
}&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== loadMetadata ===&lt;br /&gt;
Use [[loadMetadata]] to pass information about your podcast to the SDK. The parameters must be passed as a JSON object.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;objective-c&amp;quot;&amp;gt;    – (void) loadMetadata :(id)metadata;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Refer to [[loadMetadata]] for the list of parameters to be passed in the JSON object.&lt;br /&gt;
&amp;lt;blockquote&amp;gt;'''Note:''' The [[loadMetadata]] call after the first [[play]] call '''must have ‘content’ (&amp;quot;type&amp;quot;: &amp;quot;content&amp;quot;).''' &amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== loadMetadata Example ===&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;assetid&amp;quot;: &amp;quot;KABC:345-67483&amp;quot;,&lt;br /&gt;
  &amp;quot;program&amp;quot;: &amp;quot;KABC Morning Show&amp;quot;,&lt;br /&gt;
  &amp;quot;title&amp;quot;: &amp;quot;20171125: HR1&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;KABC-FM&amp;quot;,                        // station call letters and band are optional here                   &lt;br /&gt;
  &amp;quot;isfullepisode&amp;quot;: &amp;quot;y&amp;quot;,&lt;br /&gt;
  &amp;quot;airdate&amp;quot;: &amp;quot;20171125 06:00:00&amp;quot;,&lt;br /&gt;
  &amp;quot;adloadtype&amp;quot;: &amp;quot;2&amp;quot;,&lt;br /&gt;
  &amp;quot;pipmode&amp;quot;:&amp;quot;false&amp;quot; &lt;br /&gt;
}&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== playheadPosition for &amp;quot;content&amp;quot; ===&lt;br /&gt;
You will continue to use [[playheadPosition]] to pass the position of the playhead while the content is being played; however, you will pass the relative position from the beginning of the file.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;objective-c&amp;quot;&amp;gt;    – (void) playheadPosition: (long long) playheadPos&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Key !! Description !! Values !! Required? (Y/N) !! Example&lt;br /&gt;
|-&lt;br /&gt;
| On-Demand Audio || Position taken from beginning of the content in seconds. || Client-defined || Yes || Current player position from beginning of the content.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
''' playheadPosition Syntax Example for iOS'''&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;objective-c&amp;quot;&amp;gt;    CMTime curTime=[player currentTime];&lt;br /&gt;
    long pos=CMTimeGetSeconds(curTime);&lt;br /&gt;
    [nAppApiObject playheadPosition:pos];&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Type !! Sample code !! Description&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | Start of stream || &amp;lt;code&amp;gt;[nielsenMeter play: channelName];&amp;lt;/code&amp;gt; || // channelName contains JSON metadata of program being played&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter loadMetadata: contentMetadataObject];&amp;lt;/code&amp;gt; || // contentMetadataObject contains the JSON metadata for the content being played&lt;br /&gt;
|-&lt;br /&gt;
| Content || &amp;lt;code&amp;gt;[nielsenMeter playheadPosition: position];&amp;lt;/code&amp;gt; || // playheadPosition is position of the playhead while the content is being played&lt;br /&gt;
|-&lt;br /&gt;
| End of Stream || &amp;lt;code&amp;gt;[nielsenMeter end];&amp;lt;/code&amp;gt; || // Content playback is completed.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Call [[playheadPosition]] every two seconds until a pause / stop / another ''loadMetadata'' is called. Playhead should be passed for the entire duration of ad pod, if the ad pod details are passed as part of [[loadMetadata]].&lt;br /&gt;
&lt;br /&gt;
The sample API sequence can be used as a reference to identify the specific events that need to be called during content and ad playback.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Type !! Sample code !! Description&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | Start of stream || &amp;lt;code&amp;gt;[nielsenMeter play: channelName];&amp;lt;/code&amp;gt; || // channelName contains JSON metadata of channel/video name being played&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter loadMetadata: contentMetadataObject];&amp;lt;/code&amp;gt; || // contentMetadataObject contains the JSON metadata for the content being played&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Preroll || &amp;lt;code&amp;gt;[nielsenMeter loadMetadata: prerollMetadataObject];&amp;lt;/code&amp;gt; || // prerollMetadataObject contains the JSON metadata for the preroll ad&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter playheadPosition: position];&amp;lt;/code&amp;gt; || // position is position of the playhead while the preroll ad is being played&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter stop];&amp;lt;/code&amp;gt; || // Call stop after preroll occurs&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Content || &amp;lt;code&amp;gt;[nielsenMeter loadMetadata: contentMetadataObject];&amp;lt;/code&amp;gt; || // contentMetadataObject contains the JSON metadata for the content being played&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter playheadPosition: position];&amp;lt;/code&amp;gt; || // position is position of the playhead while the content is being played&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter stop];&amp;lt;/code&amp;gt; || // Call stop after the content is paused (ad starts)&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Midroll || &amp;lt;code&amp;gt;[nielsenMeter loadMetadata: midrollMetadataObject];&amp;lt;/code&amp;gt; || // midrollMetadataObject contains the JSON metadata for the midroll ad&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter playheadPosition: position];&amp;lt;/code&amp;gt; || // position is position of the playhead while the midroll ad is being played&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter stop];&amp;lt;/code&amp;gt; || // Call stop after midroll occurs&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Content (End of stream) || &amp;lt;code&amp;gt;[nielsenMeter loadMetadata: contentMetadataObject];&amp;lt;/code&amp;gt; || // contentMetadataObject contains the JSON metadata for the content being played&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter playheadPosition: position];&amp;lt;/code&amp;gt; || // position is position of the playhead while the content is being played&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter end];&amp;lt;/code&amp;gt; || // Called at the end of content&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Postroll || &amp;lt;code&amp;gt;[nielsenMeter loadMetadata: postrollMetadataObject];&amp;lt;/code&amp;gt; || // postrollMetadataObject contains the JSON metadata for the postroll ad&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter playheadPosition: position];&amp;lt;/code&amp;gt; || // position is position of the playhead while the postroll ad is being played&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter stop];&amp;lt;/code&amp;gt; || // Call stop after postroll occurs&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;'''Note:''' Each Ad playhead should reset or begin from 0 at ad start. When content has resumed following an ad break, playhead position must continue from where previous content segment was left off.&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Nielsen Measurement Opt-Out Implementation ==&lt;br /&gt;
Opt-out implementation for podcasts is the same as live AM/FM stream measurement. &lt;br /&gt;
&lt;br /&gt;
== Technical Guides ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! style=&amp;quot;width: 90px;&amp;quot; | Type&lt;br /&gt;
! style=&amp;quot;width: 45px;&amp;quot; |&lt;br /&gt;
! style=&amp;quot;width: 45px;&amp;quot; | OS&lt;br /&gt;
! style=&amp;quot;width: 50%;&amp;quot; | DCR Implementation Guide&lt;br /&gt;
!| SDK Documentation&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;7&amp;quot; | {{SmallIcon|SDKIcon.png|alt=SDK}}&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | {{OSIcon|VideoIcon.png|alt=Video}}&lt;br /&gt;
| {{OSIcon|macOSIcon.png|alt=iOS}}&lt;br /&gt;
| '''[[DCR Video iOS SDK]]'''&lt;br /&gt;
| [[iOS SDK API Reference]]&lt;br /&gt;
|-&lt;br /&gt;
| {{OSIcon|AndroidIcon.png|alt=Android}}&lt;br /&gt;
| '''[[DCR Video Android SDK]]'''&lt;br /&gt;
| [[Android SDK API Reference]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;width: 90px;&amp;quot; |&lt;br /&gt;
! style=&amp;quot;width: 42%;&amp;quot; | Technical Guides&lt;br /&gt;
!&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;7&amp;quot; | {{SmallIcon|DigitalIcon.png}}&lt;br /&gt;
| '''[[Digital Measurement Onboarding]]'''&lt;br /&gt;
| '''[[Digital Measurement Metadata]]'''&lt;br /&gt;
|-&lt;br /&gt;
| '''[[Digital Measurement Testing]]'''&lt;br /&gt;
| '''[[Digital Measurement Interruption Scenarios]]'''&lt;br /&gt;
|-&lt;br /&gt;
| '''[[Digital Measurement FAQ]]'''&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| '''[[Digital Pre-Certification Checklist App SDK]]'''&lt;br /&gt;
| '''[[Digital Pre-Certification Checklist Browser SDK]]'''&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>KimBritt</name></author>
	</entry>
	<entry>
		<id>https://nielsentest.mywikis.net/w/index.php?title=DCR_Podcasts_in_Digital&amp;diff=2247</id>
		<title>DCR Podcasts in Digital</title>
		<link rel="alternate" type="text/html" href="https://nielsentest.mywikis.net/w/index.php?title=DCR_Podcasts_in_Digital&amp;diff=2247"/>
		<updated>2017-12-13T16:35:12Z</updated>

		<summary type="html">&lt;p&gt;KimBritt: title&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Breadcrumb|}} {{Breadcrumb|Digital}} {{CurrentBreadcrumb}}&lt;br /&gt;
[[Category:Digital]]&lt;br /&gt;
&lt;br /&gt;
== Steps ==&lt;br /&gt;
This document assumes you have implemented Digital Audio with Live AM/FM stream measurement with a &amp;quot;radio&amp;quot; content type.    It outlines the new parameters you will use to implement podcast measurement. &lt;br /&gt;
&lt;br /&gt;
#Send a list of your podcasts or programs to your TAM to register them for reporting &lt;br /&gt;
#Get new appids from your TAM for the applications that will offer podcasts&lt;br /&gt;
#Update the parameters you use to call the SDK play and playheadPosition. Reference the appropriate [[Podcasts#Changes_for_Podcast_Measurement]]  below&lt;br /&gt;
#Obtain Nielsen Podcast certification once your changes are complete and tested &lt;br /&gt;
#Complete a Production License with your Nielsen Account Representative&lt;br /&gt;
=== Library ===&lt;br /&gt;
Use the same library as Digital Audio, live AM/FM stream measurement.&lt;br /&gt;
&lt;br /&gt;
== Changes for Podcast Measurement ==&lt;br /&gt;
=== Initializing the SDK ===&lt;br /&gt;
Update your appid to the new ID provided by your TAM for podcast measurement. &lt;br /&gt;
When you initialize the SDK, use 'dcr' in the sfcode instead of 'drm'. &lt;br /&gt;
&lt;br /&gt;
=== play ===&lt;br /&gt;
Continue to use [[play]] to pass the channel descriptor information through the channelName parameter when the user taps the '''Play''' button on the player. &lt;br /&gt;
&lt;br /&gt;
===play Example ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;json&amp;quot;&amp;gt;{&lt;br /&gt;
   &amp;quot;channelName&amp;quot;: &amp;quot;KABC-FM Morning Show&amp;quot;&lt;br /&gt;
}&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== loadMetadata ===&lt;br /&gt;
Use [[loadMetadata]] to pass information about your podcast to the SDK. The parameters must be passed as a JSON object.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;objective-c&amp;quot;&amp;gt;    – (void) loadMetadata :(id)metadata;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Refer to [[loadMetadata]] for the list of parameters to be passed in the JSON object.&lt;br /&gt;
&amp;lt;blockquote&amp;gt;'''Note:''' The [[loadMetadata]] call after the first [[play]] call '''must have ‘content’ (&amp;quot;type&amp;quot;: &amp;quot;content&amp;quot;).''' &amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== loadMetadata Example ===&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;assetid&amp;quot;: &amp;quot;KABC:345-67483&amp;quot;,&lt;br /&gt;
  &amp;quot;program&amp;quot;: &amp;quot;KABC Morning Show&amp;quot;,&lt;br /&gt;
  &amp;quot;title&amp;quot;: &amp;quot;20171125: HR1&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;KABC-FM&amp;quot;,                        // station call letters and band are optional here                   &lt;br /&gt;
  &amp;quot;isfullepisode&amp;quot;: &amp;quot;y&amp;quot;,&lt;br /&gt;
  &amp;quot;airdate&amp;quot;: &amp;quot;20171125 06:00:00&amp;quot;,&lt;br /&gt;
  &amp;quot;adloadtype&amp;quot;: &amp;quot;2&amp;quot;,&lt;br /&gt;
  &amp;quot;pipmode&amp;quot;:&amp;quot;false&amp;quot; &lt;br /&gt;
}&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== playheadPosition for &amp;quot;content&amp;quot; ===&lt;br /&gt;
You will continue to use [[playheadPosition]] to pass the position of the playhead while the content is being played; however, you will pass the relative position from the beginning of the file.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;objective-c&amp;quot;&amp;gt;    – (void) playheadPosition: (long long) playheadPos&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Key !! Description !! Values !! Required? (Y/N) !! Example&lt;br /&gt;
|-&lt;br /&gt;
| On-Demand Audio || Position taken from beginning of the content in seconds. || Client-defined || Yes || Current player position from beginning of the content.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
''' playheadPosition Syntax Example for iOS'''&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;objective-c&amp;quot;&amp;gt;    CMTime curTime=[player currentTime];&lt;br /&gt;
    long pos=CMTimeGetSeconds(curTime);&lt;br /&gt;
    [nAppApiObject playheadPosition:pos];&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Type !! Sample code !! Description&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | Start of stream || &amp;lt;code&amp;gt;[nielsenMeter play: channelName];&amp;lt;/code&amp;gt; || // channelName contains JSON metadata of program being played&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter loadMetadata: contentMetadataObject];&amp;lt;/code&amp;gt; || // contentMetadataObject contains the JSON metadata for the content being played&lt;br /&gt;
|-&lt;br /&gt;
| Content || &amp;lt;code&amp;gt;[nielsenMeter playheadPosition: position];&amp;lt;/code&amp;gt; || // playheadPosition is position of the playhead while the content is being played&lt;br /&gt;
|-&lt;br /&gt;
| End of Stream || &amp;lt;code&amp;gt;[nielsenMeter end];&amp;lt;/code&amp;gt; || // Content playback is completed.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Call [[playheadPosition]] every two seconds until a pause / stop / another ''loadMetadata'' is called. Playhead should be passed for the entire duration of ad pod, if the ad pod details are passed as part of [[loadMetadata]].&lt;br /&gt;
&lt;br /&gt;
The sample API sequence can be used as a reference to identify the specific events that need to be called during content and ad playback.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Type !! Sample code !! Description&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | Start of stream || &amp;lt;code&amp;gt;[nielsenMeter play: channelName];&amp;lt;/code&amp;gt; || // channelName contains JSON metadata of channel/video name being played&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter loadMetadata: contentMetadataObject];&amp;lt;/code&amp;gt; || // contentMetadataObject contains the JSON metadata for the content being played&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Preroll || &amp;lt;code&amp;gt;[nielsenMeter loadMetadata: prerollMetadataObject];&amp;lt;/code&amp;gt; || // prerollMetadataObject contains the JSON metadata for the preroll ad&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter playheadPosition: position];&amp;lt;/code&amp;gt; || // position is position of the playhead while the preroll ad is being played&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter stop];&amp;lt;/code&amp;gt; || // Call stop after preroll occurs&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Content || &amp;lt;code&amp;gt;[nielsenMeter loadMetadata: contentMetadataObject];&amp;lt;/code&amp;gt; || // contentMetadataObject contains the JSON metadata for the content being played&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter playheadPosition: position];&amp;lt;/code&amp;gt; || // position is position of the playhead while the content is being played&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter stop];&amp;lt;/code&amp;gt; || // Call stop after the content is paused (ad starts)&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Midroll || &amp;lt;code&amp;gt;[nielsenMeter loadMetadata: midrollMetadataObject];&amp;lt;/code&amp;gt; || // midrollMetadataObject contains the JSON metadata for the midroll ad&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter playheadPosition: position];&amp;lt;/code&amp;gt; || // position is position of the playhead while the midroll ad is being played&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter stop];&amp;lt;/code&amp;gt; || // Call stop after midroll occurs&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Content (End of stream) || &amp;lt;code&amp;gt;[nielsenMeter loadMetadata: contentMetadataObject];&amp;lt;/code&amp;gt; || // contentMetadataObject contains the JSON metadata for the content being played&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter playheadPosition: position];&amp;lt;/code&amp;gt; || // position is position of the playhead while the content is being played&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter end];&amp;lt;/code&amp;gt; || // Called at the end of content&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Postroll || &amp;lt;code&amp;gt;[nielsenMeter loadMetadata: postrollMetadataObject];&amp;lt;/code&amp;gt; || // postrollMetadataObject contains the JSON metadata for the postroll ad&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter playheadPosition: position];&amp;lt;/code&amp;gt; || // position is position of the playhead while the postroll ad is being played&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter stop];&amp;lt;/code&amp;gt; || // Call stop after postroll occurs&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;'''Note:''' Each Ad playhead should reset or begin from 0 at ad start. When content has resumed following an ad break, playhead position must continue from where previous content segment was left off.&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Nielsen Measurement Opt-Out Implementation ==&lt;br /&gt;
Opt-out implementation for podcasts is the same as live AM/FM stream measurement. &lt;br /&gt;
&lt;br /&gt;
== Technical Guides ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! style=&amp;quot;width: 90px;&amp;quot; | Type&lt;br /&gt;
! style=&amp;quot;width: 45px;&amp;quot; |&lt;br /&gt;
! style=&amp;quot;width: 45px;&amp;quot; | OS&lt;br /&gt;
! style=&amp;quot;width: 50%;&amp;quot; | DCR Implementation Guide&lt;br /&gt;
!| SDK Documentation&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;7&amp;quot; | {{SmallIcon|SDKIcon.png|alt=SDK}}&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | {{OSIcon|VideoIcon.png|alt=Video}}&lt;br /&gt;
| {{OSIcon|macOSIcon.png|alt=iOS}}&lt;br /&gt;
| '''[[DCR Video iOS SDK]]'''&lt;br /&gt;
| [[iOS SDK API Reference]]&lt;br /&gt;
|-&lt;br /&gt;
| {{OSIcon|AndroidIcon.png|alt=Android}}&lt;br /&gt;
| '''[[DCR Video Android SDK]]'''&lt;br /&gt;
| [[Android SDK API Reference]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;width: 90px;&amp;quot; |&lt;br /&gt;
! style=&amp;quot;width: 42%;&amp;quot; | Technical Guides&lt;br /&gt;
!&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;7&amp;quot; | {{SmallIcon|DigitalIcon.png}}&lt;br /&gt;
| '''[[Digital Measurement Onboarding]]'''&lt;br /&gt;
| '''[[Digital Measurement Metadata]]'''&lt;br /&gt;
|-&lt;br /&gt;
| '''[[Digital Measurement Testing]]'''&lt;br /&gt;
| '''[[Digital Measurement Interruption Scenarios]]'''&lt;br /&gt;
|-&lt;br /&gt;
| '''[[Digital Measurement FAQ]]'''&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| '''[[Digital Pre-Certification Checklist App SDK]]'''&lt;br /&gt;
| '''[[Digital Pre-Certification Checklist Browser SDK]]'''&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>KimBritt</name></author>
	</entry>
	<entry>
		<id>https://nielsentest.mywikis.net/w/index.php?title=DCR_Podcasts_in_Digital&amp;diff=2246</id>
		<title>DCR Podcasts in Digital</title>
		<link rel="alternate" type="text/html" href="https://nielsentest.mywikis.net/w/index.php?title=DCR_Podcasts_in_Digital&amp;diff=2246"/>
		<updated>2017-12-13T16:33:44Z</updated>

		<summary type="html">&lt;p&gt;KimBritt: changes&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Breadcrumb|}} {{Breadcrumb|Digital}} {{CurrentBreadcrumb}}&lt;br /&gt;
[[Category:Digital]]&lt;br /&gt;
&lt;br /&gt;
== Steps ==&lt;br /&gt;
This document assumes you have implemented Digital Audio with Live AM/FM stream measurement with a &amp;quot;radio&amp;quot; content type.    It outlines the new parameters you will use to implement podcast measurement. &lt;br /&gt;
&lt;br /&gt;
#Send a list of your podcasts or programs to your TAM to register them for reporting &lt;br /&gt;
#Get new appids from your TAM for the applications that will offer podcasts&lt;br /&gt;
#Update the parameters you use to call the SDK play and playheadPosition. Reference the appropriate [[Changes for Podcast Measurement]]  below&lt;br /&gt;
#Obtain Nielsen Podcast certification once your changes are complete and tested &lt;br /&gt;
#Complete a Production License with your Nielsen Account Representative&lt;br /&gt;
=== Library ===&lt;br /&gt;
Use the same library as Digital Audio, live AM/FM stream measurement.&lt;br /&gt;
&lt;br /&gt;
== Changes for Podcast Measurement ==&lt;br /&gt;
=== Initializing the SDK ===&lt;br /&gt;
Update your appid to the new ID provided by your TAM for podcast measurement. &lt;br /&gt;
When you initialize the SDK, use 'dcr' in the sfcode instead of 'drm'. &lt;br /&gt;
&lt;br /&gt;
=== play ===&lt;br /&gt;
Continue to use [[play]] to pass the channel descriptor information through the channelName parameter when the user taps the '''Play''' button on the player. &lt;br /&gt;
&lt;br /&gt;
===play Example ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;json&amp;quot;&amp;gt;{&lt;br /&gt;
   &amp;quot;channelName&amp;quot;: &amp;quot;KABC-FM Morning Show&amp;quot;&lt;br /&gt;
}&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== loadMetadata ===&lt;br /&gt;
Use [[loadMetadata]] to pass information about your podcast to the SDK. The parameters must be passed as a JSON object.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;objective-c&amp;quot;&amp;gt;    – (void) loadMetadata :(id)metadata;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Refer to [[loadMetadata]] for the list of parameters to be passed in the JSON object.&lt;br /&gt;
&amp;lt;blockquote&amp;gt;'''Note:''' The [[loadMetadata]] call after the first [[play]] call '''must have ‘content’ (&amp;quot;type&amp;quot;: &amp;quot;content&amp;quot;).''' &amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== loadMetadata Example ===&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;assetid&amp;quot;: &amp;quot;KABC:345-67483&amp;quot;,&lt;br /&gt;
  &amp;quot;program&amp;quot;: &amp;quot;KABC Morning Show&amp;quot;,&lt;br /&gt;
  &amp;quot;title&amp;quot;: &amp;quot;20171125: HR1&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;KABC-FM&amp;quot;,                        // station call letters and band are optional here                   &lt;br /&gt;
  &amp;quot;isfullepisode&amp;quot;: &amp;quot;y&amp;quot;,&lt;br /&gt;
  &amp;quot;airdate&amp;quot;: &amp;quot;20171125 06:00:00&amp;quot;,&lt;br /&gt;
  &amp;quot;adloadtype&amp;quot;: &amp;quot;2&amp;quot;,&lt;br /&gt;
  &amp;quot;pipmode&amp;quot;:&amp;quot;false&amp;quot; &lt;br /&gt;
}&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== playheadPosition for &amp;quot;content&amp;quot; ===&lt;br /&gt;
You will continue to use [[playheadPosition]] to pass the position of the playhead while the content is being played; however, you will pass the relative position from the beginning of the file.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;objective-c&amp;quot;&amp;gt;    – (void) playheadPosition: (long long) playheadPos&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Key !! Description !! Values !! Required? (Y/N) !! Example&lt;br /&gt;
|-&lt;br /&gt;
| On-Demand Audio || Position taken from beginning of the content in seconds. || Client-defined || Yes || Current player position from beginning of the content.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
''' playheadPosition Syntax Example for iOS'''&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;objective-c&amp;quot;&amp;gt;    CMTime curTime=[player currentTime];&lt;br /&gt;
    long pos=CMTimeGetSeconds(curTime);&lt;br /&gt;
    [nAppApiObject playheadPosition:pos];&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Type !! Sample code !! Description&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | Start of stream || &amp;lt;code&amp;gt;[nielsenMeter play: channelName];&amp;lt;/code&amp;gt; || // channelName contains JSON metadata of program being played&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter loadMetadata: contentMetadataObject];&amp;lt;/code&amp;gt; || // contentMetadataObject contains the JSON metadata for the content being played&lt;br /&gt;
|-&lt;br /&gt;
| Content || &amp;lt;code&amp;gt;[nielsenMeter playheadPosition: position];&amp;lt;/code&amp;gt; || // playheadPosition is position of the playhead while the content is being played&lt;br /&gt;
|-&lt;br /&gt;
| End of Stream || &amp;lt;code&amp;gt;[nielsenMeter end];&amp;lt;/code&amp;gt; || // Content playback is completed.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Call [[playheadPosition]] every two seconds until a pause / stop / another ''loadMetadata'' is called. Playhead should be passed for the entire duration of ad pod, if the ad pod details are passed as part of [[loadMetadata]].&lt;br /&gt;
&lt;br /&gt;
The sample API sequence can be used as a reference to identify the specific events that need to be called during content and ad playback.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Type !! Sample code !! Description&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | Start of stream || &amp;lt;code&amp;gt;[nielsenMeter play: channelName];&amp;lt;/code&amp;gt; || // channelName contains JSON metadata of channel/video name being played&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter loadMetadata: contentMetadataObject];&amp;lt;/code&amp;gt; || // contentMetadataObject contains the JSON metadata for the content being played&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Preroll || &amp;lt;code&amp;gt;[nielsenMeter loadMetadata: prerollMetadataObject];&amp;lt;/code&amp;gt; || // prerollMetadataObject contains the JSON metadata for the preroll ad&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter playheadPosition: position];&amp;lt;/code&amp;gt; || // position is position of the playhead while the preroll ad is being played&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter stop];&amp;lt;/code&amp;gt; || // Call stop after preroll occurs&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Content || &amp;lt;code&amp;gt;[nielsenMeter loadMetadata: contentMetadataObject];&amp;lt;/code&amp;gt; || // contentMetadataObject contains the JSON metadata for the content being played&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter playheadPosition: position];&amp;lt;/code&amp;gt; || // position is position of the playhead while the content is being played&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter stop];&amp;lt;/code&amp;gt; || // Call stop after the content is paused (ad starts)&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Midroll || &amp;lt;code&amp;gt;[nielsenMeter loadMetadata: midrollMetadataObject];&amp;lt;/code&amp;gt; || // midrollMetadataObject contains the JSON metadata for the midroll ad&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter playheadPosition: position];&amp;lt;/code&amp;gt; || // position is position of the playhead while the midroll ad is being played&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter stop];&amp;lt;/code&amp;gt; || // Call stop after midroll occurs&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Content (End of stream) || &amp;lt;code&amp;gt;[nielsenMeter loadMetadata: contentMetadataObject];&amp;lt;/code&amp;gt; || // contentMetadataObject contains the JSON metadata for the content being played&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter playheadPosition: position];&amp;lt;/code&amp;gt; || // position is position of the playhead while the content is being played&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter end];&amp;lt;/code&amp;gt; || // Called at the end of content&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Postroll || &amp;lt;code&amp;gt;[nielsenMeter loadMetadata: postrollMetadataObject];&amp;lt;/code&amp;gt; || // postrollMetadataObject contains the JSON metadata for the postroll ad&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter playheadPosition: position];&amp;lt;/code&amp;gt; || // position is position of the playhead while the postroll ad is being played&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter stop];&amp;lt;/code&amp;gt; || // Call stop after postroll occurs&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;'''Note:''' Each Ad playhead should reset or begin from 0 at ad start. When content has resumed following an ad break, playhead position must continue from where previous content segment was left off.&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Nielsen Measurement Opt-Out Implementation ==&lt;br /&gt;
Opt-out implementation for podcasts is the same as live AM/FM stream measurement. &lt;br /&gt;
&lt;br /&gt;
== Technical Guides ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! style=&amp;quot;width: 90px;&amp;quot; | Type&lt;br /&gt;
! style=&amp;quot;width: 45px;&amp;quot; |&lt;br /&gt;
! style=&amp;quot;width: 45px;&amp;quot; | OS&lt;br /&gt;
! style=&amp;quot;width: 50%;&amp;quot; | DCR Implementation Guide&lt;br /&gt;
!| SDK Documentation&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;7&amp;quot; | {{SmallIcon|SDKIcon.png|alt=SDK}}&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | {{OSIcon|VideoIcon.png|alt=Video}}&lt;br /&gt;
| {{OSIcon|macOSIcon.png|alt=iOS}}&lt;br /&gt;
| '''[[DCR Video iOS SDK]]'''&lt;br /&gt;
| [[iOS SDK API Reference]]&lt;br /&gt;
|-&lt;br /&gt;
| {{OSIcon|AndroidIcon.png|alt=Android}}&lt;br /&gt;
| '''[[DCR Video Android SDK]]'''&lt;br /&gt;
| [[Android SDK API Reference]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;width: 90px;&amp;quot; |&lt;br /&gt;
! style=&amp;quot;width: 42%;&amp;quot; | Technical Guides&lt;br /&gt;
!&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;7&amp;quot; | {{SmallIcon|DigitalIcon.png}}&lt;br /&gt;
| '''[[Digital Measurement Onboarding]]'''&lt;br /&gt;
| '''[[Digital Measurement Metadata]]'''&lt;br /&gt;
|-&lt;br /&gt;
| '''[[Digital Measurement Testing]]'''&lt;br /&gt;
| '''[[Digital Measurement Interruption Scenarios]]'''&lt;br /&gt;
|-&lt;br /&gt;
| '''[[Digital Measurement FAQ]]'''&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| '''[[Digital Pre-Certification Checklist App SDK]]'''&lt;br /&gt;
| '''[[Digital Pre-Certification Checklist Browser SDK]]'''&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>KimBritt</name></author>
	</entry>
	<entry>
		<id>https://nielsentest.mywikis.net/w/index.php?title=DCR_Podcasts_in_Digital&amp;diff=2245</id>
		<title>DCR Podcasts in Digital</title>
		<link rel="alternate" type="text/html" href="https://nielsentest.mywikis.net/w/index.php?title=DCR_Podcasts_in_Digital&amp;diff=2245"/>
		<updated>2017-12-13T16:09:46Z</updated>

		<summary type="html">&lt;p&gt;KimBritt: examples 3&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Breadcrumb|}} {{Breadcrumb|Digital}} {{CurrentBreadcrumb}}&lt;br /&gt;
[[Category:Digital]]&lt;br /&gt;
&lt;br /&gt;
== Steps ==&lt;br /&gt;
This document assumes you have implemented Digital Audio with Live AM/FM stream measurement with a &amp;quot;radio&amp;quot; content type.    It outlines the new parameters you will use to implement podcast measurement with the DCR content type.  &lt;br /&gt;
&lt;br /&gt;
#Get a new appid from your TAM for the applications that will offer podcasts&lt;br /&gt;
#Send a list of your podcasts or programs to your TAM &lt;br /&gt;
#Update the parameters you use to call the SDK play and playheadPosition. Reference the appropriate [[Podcasts|Changes for Podcast Measurement]]  below.&lt;br /&gt;
#Obtain Nielsen Podcast certification once your changes are complete and tested &lt;br /&gt;
#Complete a Production License with your Nielsen Account Representative&lt;br /&gt;
=== Library ===&lt;br /&gt;
Use the same library as Digital Audio, live AM/FM stream measurement.&lt;br /&gt;
&lt;br /&gt;
== Changes for Podcast Measurement ==&lt;br /&gt;
=== Initializing the SDK ===&lt;br /&gt;
Update your appid to the new ID provided by your TAM for podcast measurement. &lt;br /&gt;
When you initialize the SDK, use 'dcr' in the sfcode instead of 'drm'. &lt;br /&gt;
&lt;br /&gt;
=== play ===&lt;br /&gt;
Continue to use [[play]] to pass the channel descriptor information through the channelName parameter when the user taps the '''Play''' button on the player. &lt;br /&gt;
&lt;br /&gt;
===play Example ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;json&amp;quot;&amp;gt;{&lt;br /&gt;
   &amp;quot;channelName&amp;quot;: &amp;quot;KABC-FM Morning Show&amp;quot;&lt;br /&gt;
}&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== loadMetadata ===&lt;br /&gt;
Use [[loadMetadata]] to pass information about your podcast to the SDK. The parameters must be passed as a JSON object.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;objective-c&amp;quot;&amp;gt;    – (void) loadMetadata :(id)metadata;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Refer to [[loadMetadata]] for the list of parameters to be passed in the JSON object.&lt;br /&gt;
&amp;lt;blockquote&amp;gt;'''Note:''' The [[loadMetadata]] call after the first [[play]] call '''must have ‘content’ (&amp;quot;type&amp;quot;: &amp;quot;content&amp;quot;).''' &amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== loadMetadata Example ===&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;assetid&amp;quot;: &amp;quot;KABC:345-67483&amp;quot;,&lt;br /&gt;
  &amp;quot;program&amp;quot;: &amp;quot;KABC Morning Show&amp;quot;,&lt;br /&gt;
  &amp;quot;title&amp;quot;: &amp;quot;20171125: HR1&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;KABC-FM&amp;quot;,                        // station call letters and band are optional here                   &lt;br /&gt;
  &amp;quot;isfullepisode&amp;quot;: &amp;quot;y&amp;quot;,&lt;br /&gt;
  &amp;quot;airdate&amp;quot;: &amp;quot;20171125 06:00:00&amp;quot;,&lt;br /&gt;
  &amp;quot;adloadtype&amp;quot;: &amp;quot;2&amp;quot;,&lt;br /&gt;
  &amp;quot;pipmode&amp;quot;:&amp;quot;false&amp;quot; &lt;br /&gt;
}&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== playheadPosition for &amp;quot;content&amp;quot; ===&lt;br /&gt;
You will continue to use [[playheadPosition]] to pass the position of the playhead while the content is being played; however, you will pass the relative position from the beginning of the file.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;objective-c&amp;quot;&amp;gt;    – (void) playheadPosition: (long long) playheadPos&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Key !! Description !! Values !! Required? (Y/N) !! Example&lt;br /&gt;
|-&lt;br /&gt;
| On-Demand Audio || Position taken from beginning of the content in seconds. || Client-defined || Yes || Current player position from beginning of the content.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
''' playheadPosition Syntax Example for iOS'''&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;objective-c&amp;quot;&amp;gt;    CMTime curTime=[player currentTime];&lt;br /&gt;
    long pos=CMTimeGetSeconds(curTime);&lt;br /&gt;
    [nAppApiObject playheadPosition:pos];&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Type !! Sample code !! Description&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | Start of stream || &amp;lt;code&amp;gt;[nielsenMeter play: channelName];&amp;lt;/code&amp;gt; || // channelName contains JSON metadata of program being played&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter loadMetadata: contentMetadataObject];&amp;lt;/code&amp;gt; || // contentMetadataObject contains the JSON metadata for the content being played&lt;br /&gt;
|-&lt;br /&gt;
| Content || &amp;lt;code&amp;gt;[nielsenMeter playheadPosition: position];&amp;lt;/code&amp;gt; || // playheadPosition is position of the playhead while the content is being played&lt;br /&gt;
|-&lt;br /&gt;
| End of Stream || &amp;lt;code&amp;gt;[nielsenMeter end];&amp;lt;/code&amp;gt; || // Content playback is completed.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Call [[playheadPosition]] every two seconds until a pause / stop / another ''loadMetadata'' is called. Playhead should be passed for the entire duration of ad pod, if the ad pod details are passed as part of [[loadMetadata]].&lt;br /&gt;
&lt;br /&gt;
The sample API sequence can be used as a reference to identify the specific events that need to be called during content and ad playback.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Type !! Sample code !! Description&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | Start of stream || &amp;lt;code&amp;gt;[nielsenMeter play: channelName];&amp;lt;/code&amp;gt; || // channelName contains JSON metadata of channel/video name being played&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter loadMetadata: contentMetadataObject];&amp;lt;/code&amp;gt; || // contentMetadataObject contains the JSON metadata for the content being played&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Preroll || &amp;lt;code&amp;gt;[nielsenMeter loadMetadata: prerollMetadataObject];&amp;lt;/code&amp;gt; || // prerollMetadataObject contains the JSON metadata for the preroll ad&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter playheadPosition: position];&amp;lt;/code&amp;gt; || // position is position of the playhead while the preroll ad is being played&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter stop];&amp;lt;/code&amp;gt; || // Call stop after preroll occurs&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Content || &amp;lt;code&amp;gt;[nielsenMeter loadMetadata: contentMetadataObject];&amp;lt;/code&amp;gt; || // contentMetadataObject contains the JSON metadata for the content being played&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter playheadPosition: position];&amp;lt;/code&amp;gt; || // position is position of the playhead while the content is being played&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter stop];&amp;lt;/code&amp;gt; || // Call stop after the content is paused (ad starts)&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Midroll || &amp;lt;code&amp;gt;[nielsenMeter loadMetadata: midrollMetadataObject];&amp;lt;/code&amp;gt; || // midrollMetadataObject contains the JSON metadata for the midroll ad&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter playheadPosition: position];&amp;lt;/code&amp;gt; || // position is position of the playhead while the midroll ad is being played&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter stop];&amp;lt;/code&amp;gt; || // Call stop after midroll occurs&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Content (End of stream) || &amp;lt;code&amp;gt;[nielsenMeter loadMetadata: contentMetadataObject];&amp;lt;/code&amp;gt; || // contentMetadataObject contains the JSON metadata for the content being played&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter playheadPosition: position];&amp;lt;/code&amp;gt; || // position is position of the playhead while the content is being played&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter end];&amp;lt;/code&amp;gt; || // Called at the end of content&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Postroll || &amp;lt;code&amp;gt;[nielsenMeter loadMetadata: postrollMetadataObject];&amp;lt;/code&amp;gt; || // postrollMetadataObject contains the JSON metadata for the postroll ad&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter playheadPosition: position];&amp;lt;/code&amp;gt; || // position is position of the playhead while the postroll ad is being played&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter stop];&amp;lt;/code&amp;gt; || // Call stop after postroll occurs&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;'''Note:''' Each Ad playhead should reset or begin from 0 at ad start. When content has resumed following an ad break, playhead position must continue from where previous content segment was left off.&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Nielsen Measurement Opt-Out Implementation ==&lt;br /&gt;
Opt-out implementation for podcasts is the same as live AM/FM stream measurement. &lt;br /&gt;
&lt;br /&gt;
== Technical Guides ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! style=&amp;quot;width: 90px;&amp;quot; | Type&lt;br /&gt;
! style=&amp;quot;width: 45px;&amp;quot; |&lt;br /&gt;
! style=&amp;quot;width: 45px;&amp;quot; | OS&lt;br /&gt;
! style=&amp;quot;width: 50%;&amp;quot; | DCR Implementation Guide&lt;br /&gt;
!| SDK Documentation&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;7&amp;quot; | {{SmallIcon|SDKIcon.png|alt=SDK}}&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | {{OSIcon|VideoIcon.png|alt=Video}}&lt;br /&gt;
| {{OSIcon|macOSIcon.png|alt=iOS}}&lt;br /&gt;
| '''[[DCR Video iOS SDK]]'''&lt;br /&gt;
| [[iOS SDK API Reference]]&lt;br /&gt;
|-&lt;br /&gt;
| {{OSIcon|AndroidIcon.png|alt=Android}}&lt;br /&gt;
| '''[[DCR Video Android SDK]]'''&lt;br /&gt;
| [[Android SDK API Reference]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;width: 90px;&amp;quot; |&lt;br /&gt;
! style=&amp;quot;width: 42%;&amp;quot; | Technical Guides&lt;br /&gt;
!&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;7&amp;quot; | {{SmallIcon|DigitalIcon.png}}&lt;br /&gt;
| '''[[Digital Measurement Onboarding]]'''&lt;br /&gt;
| '''[[Digital Measurement Metadata]]'''&lt;br /&gt;
|-&lt;br /&gt;
| '''[[Digital Measurement Testing]]'''&lt;br /&gt;
| '''[[Digital Measurement Interruption Scenarios]]'''&lt;br /&gt;
|-&lt;br /&gt;
| '''[[Digital Measurement FAQ]]'''&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| '''[[Digital Pre-Certification Checklist App SDK]]'''&lt;br /&gt;
| '''[[Digital Pre-Certification Checklist Browser SDK]]'''&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>KimBritt</name></author>
	</entry>
	<entry>
		<id>https://nielsentest.mywikis.net/w/index.php?title=DCR_Podcasts_in_Digital&amp;diff=2244</id>
		<title>DCR Podcasts in Digital</title>
		<link rel="alternate" type="text/html" href="https://nielsentest.mywikis.net/w/index.php?title=DCR_Podcasts_in_Digital&amp;diff=2244"/>
		<updated>2017-12-13T16:06:58Z</updated>

		<summary type="html">&lt;p&gt;KimBritt: podcast list&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Breadcrumb|}} {{Breadcrumb|Digital}} {{CurrentBreadcrumb}}&lt;br /&gt;
[[Category:Digital]]&lt;br /&gt;
&lt;br /&gt;
== Steps ==&lt;br /&gt;
This document assumes you have implemented Digital Audio with Live AM/FM stream measurement with a &amp;quot;radio&amp;quot; content type.    It outlines the new parameters you will use to implement podcast measurement with the DCR content type.  &lt;br /&gt;
&lt;br /&gt;
#Get a new appid from your TAM for the applications that will offer podcasts&lt;br /&gt;
#Send a list of your podcasts or programs to your TAM &lt;br /&gt;
#Update the parameters you use to call the SDK play and playheadPosition. Reference the appropriate [[Podcasts|Changes for Podcast Measurement]]  below.&lt;br /&gt;
#Obtain Nielsen Podcast certification once your changes are complete and tested &lt;br /&gt;
#Complete a Production License with your Nielsen Account Representative&lt;br /&gt;
=== Library ===&lt;br /&gt;
Use the same library as Digital Audio, live AM/FM stream measurement.&lt;br /&gt;
&lt;br /&gt;
== Changes for Podcast Measurement ==&lt;br /&gt;
=== Initializing the SDK ===&lt;br /&gt;
Update your appid to the new ID provided by your TAM for podcast measurement. &lt;br /&gt;
When you initialize the SDK, use 'dcr' in the sfcode instead of 'drm'. &lt;br /&gt;
&lt;br /&gt;
=== play ===&lt;br /&gt;
Continue to use [[play]] to pass the channel descriptor information through the channelName parameter when the user taps the '''Play''' button on the player. &lt;br /&gt;
&lt;br /&gt;
=== loadMetadata ===&lt;br /&gt;
Use [[loadMetadata]] to pass information about your podcast to the SDK. The parameters must be passed as a JSON object.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;objective-c&amp;quot;&amp;gt;    – (void) loadMetadata :(id)metadata;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Refer to [[loadMetadata]] for the list of parameters to be passed in the JSON object.&lt;br /&gt;
&amp;lt;blockquote&amp;gt;'''Note:''' The [[loadMetadata]] call after the first [[play]] call '''must have ‘content’ (&amp;quot;type&amp;quot;: &amp;quot;content&amp;quot;).''' &amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== playheadPosition for &amp;quot;content&amp;quot; ===&lt;br /&gt;
You will continue to use [[playheadPosition]] to pass the position of the playhead while the content is being played; however, you will pass the relative position from the beginning of the file.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;objective-c&amp;quot;&amp;gt;    – (void) playheadPosition: (long long) playheadPos&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Key !! Description !! Values !! Required? (Y/N) !! Example&lt;br /&gt;
|-&lt;br /&gt;
| On-Demand Audio || Position taken from beginning of the content in seconds. || Client-defined || Yes || Current player position from beginning of the content.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
''' playheadPosition Syntax Example for iOS'''&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;objective-c&amp;quot;&amp;gt;    CMTime curTime=[player currentTime];&lt;br /&gt;
    long pos=CMTimeGetSeconds(curTime);&lt;br /&gt;
    [nAppApiObject playheadPosition:pos];&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== API Parameters Example ===&lt;br /&gt;
Convert the API calls below to the OS and language requirements for your platform. &lt;br /&gt;
&lt;br /&gt;
Call [[play]] with channelName JSON as below.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;json&amp;quot;&amp;gt;{&lt;br /&gt;
   &amp;quot;channelName&amp;quot;: &amp;quot;KABC-FM Morning Show&amp;quot;&lt;br /&gt;
}&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Call [[loadMetadata]] with JSON metadata for content as below.&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;assetid&amp;quot;: &amp;quot;KABC:345-67483&amp;quot;,&lt;br /&gt;
  &amp;quot;program&amp;quot;: &amp;quot;KABC MorningShow&amp;quot;,&lt;br /&gt;
  &amp;quot;title&amp;quot;: &amp;quot;20171125: HR1&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;KABC-FM&amp;quot;,                        // station call letters and band are optional here                   &lt;br /&gt;
  &amp;quot;isfullepisode&amp;quot;: &amp;quot;y&amp;quot;,&lt;br /&gt;
  &amp;quot;airdate&amp;quot;: &amp;quot;20171125 06:00:00&amp;quot;,&lt;br /&gt;
  &amp;quot;adloadtype&amp;quot;: &amp;quot;2&amp;quot;,&lt;br /&gt;
  &amp;quot;pipmode&amp;quot;:&amp;quot;false&amp;quot; &lt;br /&gt;
}&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Call [[playheadPosition]] every one second until a pause / stop.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Type !! Sample code !! Description&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | Start of stream || &amp;lt;code&amp;gt;[nielsenMeter play: channelName];&amp;lt;/code&amp;gt; || // channelName contains JSON metadata of program being played&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter loadMetadata: contentMetadataObject];&amp;lt;/code&amp;gt; || // contentMetadataObject contains the JSON metadata for the content being played&lt;br /&gt;
|-&lt;br /&gt;
| Content || &amp;lt;code&amp;gt;[nielsenMeter playheadPosition: position];&amp;lt;/code&amp;gt; || // playheadPosition is position of the playhead while the content is being played&lt;br /&gt;
|-&lt;br /&gt;
| End of Stream || &amp;lt;code&amp;gt;[nielsenMeter end];&amp;lt;/code&amp;gt; || // Content playback is completed.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Call [[playheadPosition]] every two seconds until a pause / stop / another ''loadMetadata'' is called. Playhead should be passed for the entire duration of ad pod, if the ad pod details are passed as part of [[loadMetadata]].&lt;br /&gt;
&lt;br /&gt;
The sample API sequence can be used as a reference to identify the specific events that need to be called during content and ad playback.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Type !! Sample code !! Description&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | Start of stream || &amp;lt;code&amp;gt;[nielsenMeter play: channelName];&amp;lt;/code&amp;gt; || // channelName contains JSON metadata of channel/video name being played&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter loadMetadata: contentMetadataObject];&amp;lt;/code&amp;gt; || // contentMetadataObject contains the JSON metadata for the content being played&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Preroll || &amp;lt;code&amp;gt;[nielsenMeter loadMetadata: prerollMetadataObject];&amp;lt;/code&amp;gt; || // prerollMetadataObject contains the JSON metadata for the preroll ad&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter playheadPosition: position];&amp;lt;/code&amp;gt; || // position is position of the playhead while the preroll ad is being played&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter stop];&amp;lt;/code&amp;gt; || // Call stop after preroll occurs&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Content || &amp;lt;code&amp;gt;[nielsenMeter loadMetadata: contentMetadataObject];&amp;lt;/code&amp;gt; || // contentMetadataObject contains the JSON metadata for the content being played&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter playheadPosition: position];&amp;lt;/code&amp;gt; || // position is position of the playhead while the content is being played&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter stop];&amp;lt;/code&amp;gt; || // Call stop after the content is paused (ad starts)&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Midroll || &amp;lt;code&amp;gt;[nielsenMeter loadMetadata: midrollMetadataObject];&amp;lt;/code&amp;gt; || // midrollMetadataObject contains the JSON metadata for the midroll ad&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter playheadPosition: position];&amp;lt;/code&amp;gt; || // position is position of the playhead while the midroll ad is being played&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter stop];&amp;lt;/code&amp;gt; || // Call stop after midroll occurs&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Content (End of stream) || &amp;lt;code&amp;gt;[nielsenMeter loadMetadata: contentMetadataObject];&amp;lt;/code&amp;gt; || // contentMetadataObject contains the JSON metadata for the content being played&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter playheadPosition: position];&amp;lt;/code&amp;gt; || // position is position of the playhead while the content is being played&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter end];&amp;lt;/code&amp;gt; || // Called at the end of content&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Postroll || &amp;lt;code&amp;gt;[nielsenMeter loadMetadata: postrollMetadataObject];&amp;lt;/code&amp;gt; || // postrollMetadataObject contains the JSON metadata for the postroll ad&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter playheadPosition: position];&amp;lt;/code&amp;gt; || // position is position of the playhead while the postroll ad is being played&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter stop];&amp;lt;/code&amp;gt; || // Call stop after postroll occurs&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;'''Note:''' Each Ad playhead should reset or begin from 0 at ad start. When content has resumed following an ad break, playhead position must continue from where previous content segment was left off.&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Nielsen Measurement Opt-Out Implementation ==&lt;br /&gt;
Opt-out implementation for podcasts is the same as live AM/FM stream measurement. &lt;br /&gt;
&lt;br /&gt;
== Technical Guides ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! style=&amp;quot;width: 90px;&amp;quot; | Type&lt;br /&gt;
! style=&amp;quot;width: 45px;&amp;quot; |&lt;br /&gt;
! style=&amp;quot;width: 45px;&amp;quot; | OS&lt;br /&gt;
! style=&amp;quot;width: 50%;&amp;quot; | DCR Implementation Guide&lt;br /&gt;
!| SDK Documentation&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;7&amp;quot; | {{SmallIcon|SDKIcon.png|alt=SDK}}&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | {{OSIcon|VideoIcon.png|alt=Video}}&lt;br /&gt;
| {{OSIcon|macOSIcon.png|alt=iOS}}&lt;br /&gt;
| '''[[DCR Video iOS SDK]]'''&lt;br /&gt;
| [[iOS SDK API Reference]]&lt;br /&gt;
|-&lt;br /&gt;
| {{OSIcon|AndroidIcon.png|alt=Android}}&lt;br /&gt;
| '''[[DCR Video Android SDK]]'''&lt;br /&gt;
| [[Android SDK API Reference]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;width: 90px;&amp;quot; |&lt;br /&gt;
! style=&amp;quot;width: 42%;&amp;quot; | Technical Guides&lt;br /&gt;
!&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;7&amp;quot; | {{SmallIcon|DigitalIcon.png}}&lt;br /&gt;
| '''[[Digital Measurement Onboarding]]'''&lt;br /&gt;
| '''[[Digital Measurement Metadata]]'''&lt;br /&gt;
|-&lt;br /&gt;
| '''[[Digital Measurement Testing]]'''&lt;br /&gt;
| '''[[Digital Measurement Interruption Scenarios]]'''&lt;br /&gt;
|-&lt;br /&gt;
| '''[[Digital Measurement FAQ]]'''&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| '''[[Digital Pre-Certification Checklist App SDK]]'''&lt;br /&gt;
| '''[[Digital Pre-Certification Checklist Browser SDK]]'''&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>KimBritt</name></author>
	</entry>
	<entry>
		<id>https://nielsentest.mywikis.net/w/index.php?title=DCR_Podcasts_in_Digital&amp;diff=2243</id>
		<title>DCR Podcasts in Digital</title>
		<link rel="alternate" type="text/html" href="https://nielsentest.mywikis.net/w/index.php?title=DCR_Podcasts_in_Digital&amp;diff=2243"/>
		<updated>2017-12-13T16:05:47Z</updated>

		<summary type="html">&lt;p&gt;KimBritt: parms update&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Breadcrumb|}} {{Breadcrumb|Digital}} {{CurrentBreadcrumb}}&lt;br /&gt;
[[Category:Digital]]&lt;br /&gt;
&lt;br /&gt;
== Steps ==&lt;br /&gt;
This document assumes you have implemented Digital Audio with Live AM/FM stream measurement with a &amp;quot;radio&amp;quot; content type.    It outlines the new parameters you will use to implement podcast measurement with the DCR content type.  &lt;br /&gt;
&lt;br /&gt;
# Send a list of your podcasts or programs to your TAM &lt;br /&gt;
#Update the parameters you use to call the SDK play and playheadPosition. Reference the appropriate [[Podcasts|Changes for Podcast Measurement]]  below.&lt;br /&gt;
#Obtain Nielsen Podcast certification once your changes are complete and tested &lt;br /&gt;
#Complete a Production License with your Nielsen Account Representative&lt;br /&gt;
=== Library ===&lt;br /&gt;
Use the same library as Digital Audio, live AM/FM stream measurement.&lt;br /&gt;
&lt;br /&gt;
== Changes for Podcast Measurement ==&lt;br /&gt;
=== Initializing the SDK ===&lt;br /&gt;
Update your appid to the new ID provided by your TAM for podcast measurement. &lt;br /&gt;
When you initialize the SDK, use 'dcr' in the sfcode instead of 'drm'. &lt;br /&gt;
&lt;br /&gt;
=== play ===&lt;br /&gt;
Continue to use [[play]] to pass the channel descriptor information through the channelName parameter when the user taps the '''Play''' button on the player. &lt;br /&gt;
&lt;br /&gt;
=== loadMetadata ===&lt;br /&gt;
Use [[loadMetadata]] to pass information about your podcast to the SDK. The parameters must be passed as a JSON object.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;objective-c&amp;quot;&amp;gt;    – (void) loadMetadata :(id)metadata;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Refer to [[loadMetadata]] for the list of parameters to be passed in the JSON object.&lt;br /&gt;
&amp;lt;blockquote&amp;gt;'''Note:''' The [[loadMetadata]] call after the first [[play]] call '''must have ‘content’ (&amp;quot;type&amp;quot;: &amp;quot;content&amp;quot;).''' &amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== playheadPosition for &amp;quot;content&amp;quot; ===&lt;br /&gt;
You will continue to use [[playheadPosition]] to pass the position of the playhead while the content is being played; however, you will pass the relative position from the beginning of the file.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;objective-c&amp;quot;&amp;gt;    – (void) playheadPosition: (long long) playheadPos&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Key !! Description !! Values !! Required? (Y/N) !! Example&lt;br /&gt;
|-&lt;br /&gt;
| On-Demand Audio || Position taken from beginning of the content in seconds. || Client-defined || Yes || Current player position from beginning of the content.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
''' playheadPosition Syntax Example for iOS'''&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;objective-c&amp;quot;&amp;gt;    CMTime curTime=[player currentTime];&lt;br /&gt;
    long pos=CMTimeGetSeconds(curTime);&lt;br /&gt;
    [nAppApiObject playheadPosition:pos];&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== API Parameters Example ===&lt;br /&gt;
Convert the API calls below to the OS and language requirements for your platform. &lt;br /&gt;
&lt;br /&gt;
Call [[play]] with channelName JSON as below.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;json&amp;quot;&amp;gt;{&lt;br /&gt;
   &amp;quot;channelName&amp;quot;: &amp;quot;KABC-FM Morning Show&amp;quot;&lt;br /&gt;
}&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Call [[loadMetadata]] with JSON metadata for content as below.&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;assetid&amp;quot;: &amp;quot;KABC:345-67483&amp;quot;,&lt;br /&gt;
  &amp;quot;program&amp;quot;: &amp;quot;KABC MorningShow&amp;quot;,&lt;br /&gt;
  &amp;quot;title&amp;quot;: &amp;quot;20171125: HR1&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;KABC-FM&amp;quot;,                        // station call letters and band are optional here                   &lt;br /&gt;
  &amp;quot;isfullepisode&amp;quot;: &amp;quot;y&amp;quot;,&lt;br /&gt;
  &amp;quot;airdate&amp;quot;: &amp;quot;20171125 06:00:00&amp;quot;,&lt;br /&gt;
  &amp;quot;adloadtype&amp;quot;: &amp;quot;2&amp;quot;,&lt;br /&gt;
  &amp;quot;pipmode&amp;quot;:&amp;quot;false&amp;quot; &lt;br /&gt;
}&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Call [[playheadPosition]] every one second until a pause / stop.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Type !! Sample code !! Description&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | Start of stream || &amp;lt;code&amp;gt;[nielsenMeter play: channelName];&amp;lt;/code&amp;gt; || // channelName contains JSON metadata of program being played&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter loadMetadata: contentMetadataObject];&amp;lt;/code&amp;gt; || // contentMetadataObject contains the JSON metadata for the content being played&lt;br /&gt;
|-&lt;br /&gt;
| Content || &amp;lt;code&amp;gt;[nielsenMeter playheadPosition: position];&amp;lt;/code&amp;gt; || // playheadPosition is position of the playhead while the content is being played&lt;br /&gt;
|-&lt;br /&gt;
| End of Stream || &amp;lt;code&amp;gt;[nielsenMeter end];&amp;lt;/code&amp;gt; || // Content playback is completed.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Call [[playheadPosition]] every two seconds until a pause / stop / another ''loadMetadata'' is called. Playhead should be passed for the entire duration of ad pod, if the ad pod details are passed as part of [[loadMetadata]].&lt;br /&gt;
&lt;br /&gt;
The sample API sequence can be used as a reference to identify the specific events that need to be called during content and ad playback.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Type !! Sample code !! Description&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | Start of stream || &amp;lt;code&amp;gt;[nielsenMeter play: channelName];&amp;lt;/code&amp;gt; || // channelName contains JSON metadata of channel/video name being played&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter loadMetadata: contentMetadataObject];&amp;lt;/code&amp;gt; || // contentMetadataObject contains the JSON metadata for the content being played&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Preroll || &amp;lt;code&amp;gt;[nielsenMeter loadMetadata: prerollMetadataObject];&amp;lt;/code&amp;gt; || // prerollMetadataObject contains the JSON metadata for the preroll ad&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter playheadPosition: position];&amp;lt;/code&amp;gt; || // position is position of the playhead while the preroll ad is being played&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter stop];&amp;lt;/code&amp;gt; || // Call stop after preroll occurs&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Content || &amp;lt;code&amp;gt;[nielsenMeter loadMetadata: contentMetadataObject];&amp;lt;/code&amp;gt; || // contentMetadataObject contains the JSON metadata for the content being played&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter playheadPosition: position];&amp;lt;/code&amp;gt; || // position is position of the playhead while the content is being played&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter stop];&amp;lt;/code&amp;gt; || // Call stop after the content is paused (ad starts)&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Midroll || &amp;lt;code&amp;gt;[nielsenMeter loadMetadata: midrollMetadataObject];&amp;lt;/code&amp;gt; || // midrollMetadataObject contains the JSON metadata for the midroll ad&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter playheadPosition: position];&amp;lt;/code&amp;gt; || // position is position of the playhead while the midroll ad is being played&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter stop];&amp;lt;/code&amp;gt; || // Call stop after midroll occurs&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Content (End of stream) || &amp;lt;code&amp;gt;[nielsenMeter loadMetadata: contentMetadataObject];&amp;lt;/code&amp;gt; || // contentMetadataObject contains the JSON metadata for the content being played&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter playheadPosition: position];&amp;lt;/code&amp;gt; || // position is position of the playhead while the content is being played&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter end];&amp;lt;/code&amp;gt; || // Called at the end of content&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Postroll || &amp;lt;code&amp;gt;[nielsenMeter loadMetadata: postrollMetadataObject];&amp;lt;/code&amp;gt; || // postrollMetadataObject contains the JSON metadata for the postroll ad&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter playheadPosition: position];&amp;lt;/code&amp;gt; || // position is position of the playhead while the postroll ad is being played&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter stop];&amp;lt;/code&amp;gt; || // Call stop after postroll occurs&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;'''Note:''' Each Ad playhead should reset or begin from 0 at ad start. When content has resumed following an ad break, playhead position must continue from where previous content segment was left off.&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Nielsen Measurement Opt-Out Implementation ==&lt;br /&gt;
Opt-out implementation for podcasts is the same as live AM/FM stream measurement. &lt;br /&gt;
&lt;br /&gt;
== Technical Guides ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! style=&amp;quot;width: 90px;&amp;quot; | Type&lt;br /&gt;
! style=&amp;quot;width: 45px;&amp;quot; |&lt;br /&gt;
! style=&amp;quot;width: 45px;&amp;quot; | OS&lt;br /&gt;
! style=&amp;quot;width: 50%;&amp;quot; | DCR Implementation Guide&lt;br /&gt;
!| SDK Documentation&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;7&amp;quot; | {{SmallIcon|SDKIcon.png|alt=SDK}}&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | {{OSIcon|VideoIcon.png|alt=Video}}&lt;br /&gt;
| {{OSIcon|macOSIcon.png|alt=iOS}}&lt;br /&gt;
| '''[[DCR Video iOS SDK]]'''&lt;br /&gt;
| [[iOS SDK API Reference]]&lt;br /&gt;
|-&lt;br /&gt;
| {{OSIcon|AndroidIcon.png|alt=Android}}&lt;br /&gt;
| '''[[DCR Video Android SDK]]'''&lt;br /&gt;
| [[Android SDK API Reference]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;width: 90px;&amp;quot; |&lt;br /&gt;
! style=&amp;quot;width: 42%;&amp;quot; | Technical Guides&lt;br /&gt;
!&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;7&amp;quot; | {{SmallIcon|DigitalIcon.png}}&lt;br /&gt;
| '''[[Digital Measurement Onboarding]]'''&lt;br /&gt;
| '''[[Digital Measurement Metadata]]'''&lt;br /&gt;
|-&lt;br /&gt;
| '''[[Digital Measurement Testing]]'''&lt;br /&gt;
| '''[[Digital Measurement Interruption Scenarios]]'''&lt;br /&gt;
|-&lt;br /&gt;
| '''[[Digital Measurement FAQ]]'''&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| '''[[Digital Pre-Certification Checklist App SDK]]'''&lt;br /&gt;
| '''[[Digital Pre-Certification Checklist Browser SDK]]'''&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>KimBritt</name></author>
	</entry>
	<entry>
		<id>https://nielsentest.mywikis.net/w/index.php?title=DCR_Podcasts_in_Digital&amp;diff=2242</id>
		<title>DCR Podcasts in Digital</title>
		<link rel="alternate" type="text/html" href="https://nielsentest.mywikis.net/w/index.php?title=DCR_Podcasts_in_Digital&amp;diff=2242"/>
		<updated>2017-12-13T16:03:58Z</updated>

		<summary type="html">&lt;p&gt;KimBritt: initialization&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Breadcrumb|}} {{Breadcrumb|Digital}} {{CurrentBreadcrumb}}&lt;br /&gt;
[[Category:Digital]]&lt;br /&gt;
&lt;br /&gt;
== Steps ==&lt;br /&gt;
This document assumes you have implemented Digital Audio with Live AM/FM stream measurement with a &amp;quot;radio&amp;quot; content type.    It outlines the new parameters you will use to implement podcast measurement with the DCR content type.  &lt;br /&gt;
&lt;br /&gt;
# Send a list of your podcasts or programs to your TAM &lt;br /&gt;
#Update the parameters you use to call the SDK play and playheadPosition. Reference the appropriate [[Podcasts|Changes for Podcast Measurement]]  below.&lt;br /&gt;
#Obtain Nielsen Podcast certification once your changes are complete and tested &lt;br /&gt;
#Complete a Production License with your Nielsen Account Representative&lt;br /&gt;
=== Library ===&lt;br /&gt;
Use the same library as Digital Audio, live AM/FM stream measurement.&lt;br /&gt;
&lt;br /&gt;
== Changes for Podcast Measurement ==&lt;br /&gt;
=== Initializing the SDK ===&lt;br /&gt;
Update your appid to the new ID provided by your TAM for podcast measurement. &lt;br /&gt;
When you initialize the SDK, use 'dcr' in the sfcode instead of 'drm'. &lt;br /&gt;
&lt;br /&gt;
=== play ===&lt;br /&gt;
Continue to use [[play]] to pass the channel descriptor information through the channelName parameter when the user taps the '''Play''' button on the player. &lt;br /&gt;
&lt;br /&gt;
=== loadMetadata ===&lt;br /&gt;
Use [[loadMetadata]] to pass information about your podcast to the SDK. The parameters must be passed as a JSON object.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;objective-c&amp;quot;&amp;gt;    – (void) loadMetadata :(id)metadata;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Refer to [[loadMetadata]] for the list of parameters to be passed in the JSON object.&lt;br /&gt;
&amp;lt;blockquote&amp;gt;'''Note:''' The [[loadMetadata]] call after the first [[play]] call '''must have ‘content’ (&amp;quot;type&amp;quot;: &amp;quot;content&amp;quot;).''' &amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== playheadPosition for &amp;quot;content&amp;quot; ===&lt;br /&gt;
You will continue to use [[playheadPosition]] to pass the position of the playhead while the content is being played; however, you will pass the relative position from the beginning of the file.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;objective-c&amp;quot;&amp;gt;    – (void) playheadPosition: (long long) playheadPos&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Key !! Description !! Values !! Required? (Y/N) !! Example&lt;br /&gt;
|-&lt;br /&gt;
| On-Demand Audio || Position taken from beginning of the content in seconds. || Client-defined || Yes || Current player position from beginning of the content.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
''' playheadPosition Syntax Example for iOS'''&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;objective-c&amp;quot;&amp;gt;    CMTime curTime=[player currentTime];&lt;br /&gt;
    long pos=CMTimeGetSeconds(curTime);&lt;br /&gt;
    [nAppApiObject playheadPosition:pos];&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== API Parameters Example ===&lt;br /&gt;
Convert the API calls below to the OS and language requirements for your platform. &lt;br /&gt;
&lt;br /&gt;
Call [[play]] with channelName JSON as below.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;json&amp;quot;&amp;gt;{&lt;br /&gt;
   &amp;quot;channelName&amp;quot;: &amp;quot;KABC-FM Morning Show&amp;quot;&lt;br /&gt;
}&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Call [[loadMetadata]] with JSON metadata for content as below.&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;assetid&amp;quot;: &amp;quot;pod345-67483&amp;quot;,&lt;br /&gt;
  &amp;quot;program&amp;quot;: &amp;quot;KABC MorningShow&amp;quot;,&lt;br /&gt;
  &amp;quot;title&amp;quot;: &amp;quot;20171125: HR1&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;,                        // station call letters and band are optional here                   &lt;br /&gt;
  &amp;quot;segC&amp;quot;: &amp;quot;CustomSegmentValueC&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;20171125 06:00:00&amp;quot;,&lt;br /&gt;
  &amp;quot;adloadtype&amp;quot;: &amp;quot;2&amp;quot;,&lt;br /&gt;
  &amp;quot;pipmode&amp;quot;:&amp;quot;false&amp;quot;,                  &lt;br /&gt;
  &amp;quot;progen&amp;quot;:&amp;quot;GV&amp;quot;&lt;br /&gt;
}&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Call [[playheadPosition]] every one second until a pause / stop.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Type !! Sample code !! Description&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | Start of stream || &amp;lt;code&amp;gt;[nielsenMeter play: channelName];&amp;lt;/code&amp;gt; || // channelName contains JSON metadata of program being played&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter loadMetadata: contentMetadataObject];&amp;lt;/code&amp;gt; || // contentMetadataObject contains the JSON metadata for the content being played&lt;br /&gt;
|-&lt;br /&gt;
| Content || &amp;lt;code&amp;gt;[nielsenMeter playheadPosition: position];&amp;lt;/code&amp;gt; || // playheadPosition is position of the playhead while the content is being played&lt;br /&gt;
|-&lt;br /&gt;
| End of Stream || &amp;lt;code&amp;gt;[nielsenMeter end];&amp;lt;/code&amp;gt; || // Content playback is completed.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Call [[playheadPosition]] every two seconds until a pause / stop / another ''loadMetadata'' is called. Playhead should be passed for the entire duration of ad pod, if the ad pod details are passed as part of [[loadMetadata]].&lt;br /&gt;
&lt;br /&gt;
The sample API sequence can be used as a reference to identify the specific events that need to be called during content and ad playback.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Type !! Sample code !! Description&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | Start of stream || &amp;lt;code&amp;gt;[nielsenMeter play: channelName];&amp;lt;/code&amp;gt; || // channelName contains JSON metadata of channel/video name being played&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter loadMetadata: contentMetadataObject];&amp;lt;/code&amp;gt; || // contentMetadataObject contains the JSON metadata for the content being played&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Preroll || &amp;lt;code&amp;gt;[nielsenMeter loadMetadata: prerollMetadataObject];&amp;lt;/code&amp;gt; || // prerollMetadataObject contains the JSON metadata for the preroll ad&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter playheadPosition: position];&amp;lt;/code&amp;gt; || // position is position of the playhead while the preroll ad is being played&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter stop];&amp;lt;/code&amp;gt; || // Call stop after preroll occurs&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Content || &amp;lt;code&amp;gt;[nielsenMeter loadMetadata: contentMetadataObject];&amp;lt;/code&amp;gt; || // contentMetadataObject contains the JSON metadata for the content being played&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter playheadPosition: position];&amp;lt;/code&amp;gt; || // position is position of the playhead while the content is being played&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter stop];&amp;lt;/code&amp;gt; || // Call stop after the content is paused (ad starts)&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Midroll || &amp;lt;code&amp;gt;[nielsenMeter loadMetadata: midrollMetadataObject];&amp;lt;/code&amp;gt; || // midrollMetadataObject contains the JSON metadata for the midroll ad&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter playheadPosition: position];&amp;lt;/code&amp;gt; || // position is position of the playhead while the midroll ad is being played&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter stop];&amp;lt;/code&amp;gt; || // Call stop after midroll occurs&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Content (End of stream) || &amp;lt;code&amp;gt;[nielsenMeter loadMetadata: contentMetadataObject];&amp;lt;/code&amp;gt; || // contentMetadataObject contains the JSON metadata for the content being played&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter playheadPosition: position];&amp;lt;/code&amp;gt; || // position is position of the playhead while the content is being played&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter end];&amp;lt;/code&amp;gt; || // Called at the end of content&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Postroll || &amp;lt;code&amp;gt;[nielsenMeter loadMetadata: postrollMetadataObject];&amp;lt;/code&amp;gt; || // postrollMetadataObject contains the JSON metadata for the postroll ad&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter playheadPosition: position];&amp;lt;/code&amp;gt; || // position is position of the playhead while the postroll ad is being played&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter stop];&amp;lt;/code&amp;gt; || // Call stop after postroll occurs&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;'''Note:''' Each Ad playhead should reset or begin from 0 at ad start. When content has resumed following an ad break, playhead position must continue from where previous content segment was left off.&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Nielsen Measurement Opt-Out Implementation ==&lt;br /&gt;
Opt-out implementation for podcasts is the same as live AM/FM stream measurement. &lt;br /&gt;
&lt;br /&gt;
== Technical Guides ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! style=&amp;quot;width: 90px;&amp;quot; | Type&lt;br /&gt;
! style=&amp;quot;width: 45px;&amp;quot; |&lt;br /&gt;
! style=&amp;quot;width: 45px;&amp;quot; | OS&lt;br /&gt;
! style=&amp;quot;width: 50%;&amp;quot; | DCR Implementation Guide&lt;br /&gt;
!| SDK Documentation&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;7&amp;quot; | {{SmallIcon|SDKIcon.png|alt=SDK}}&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | {{OSIcon|VideoIcon.png|alt=Video}}&lt;br /&gt;
| {{OSIcon|macOSIcon.png|alt=iOS}}&lt;br /&gt;
| '''[[DCR Video iOS SDK]]'''&lt;br /&gt;
| [[iOS SDK API Reference]]&lt;br /&gt;
|-&lt;br /&gt;
| {{OSIcon|AndroidIcon.png|alt=Android}}&lt;br /&gt;
| '''[[DCR Video Android SDK]]'''&lt;br /&gt;
| [[Android SDK API Reference]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;width: 90px;&amp;quot; |&lt;br /&gt;
! style=&amp;quot;width: 42%;&amp;quot; | Technical Guides&lt;br /&gt;
!&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;7&amp;quot; | {{SmallIcon|DigitalIcon.png}}&lt;br /&gt;
| '''[[Digital Measurement Onboarding]]'''&lt;br /&gt;
| '''[[Digital Measurement Metadata]]'''&lt;br /&gt;
|-&lt;br /&gt;
| '''[[Digital Measurement Testing]]'''&lt;br /&gt;
| '''[[Digital Measurement Interruption Scenarios]]'''&lt;br /&gt;
|-&lt;br /&gt;
| '''[[Digital Measurement FAQ]]'''&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| '''[[Digital Pre-Certification Checklist App SDK]]'''&lt;br /&gt;
| '''[[Digital Pre-Certification Checklist Browser SDK]]'''&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>KimBritt</name></author>
	</entry>
	<entry>
		<id>https://nielsentest.mywikis.net/w/index.php?title=DCR_Podcasts_in_Digital&amp;diff=2241</id>
		<title>DCR Podcasts in Digital</title>
		<link rel="alternate" type="text/html" href="https://nielsentest.mywikis.net/w/index.php?title=DCR_Podcasts_in_Digital&amp;diff=2241"/>
		<updated>2017-12-13T16:00:15Z</updated>

		<summary type="html">&lt;p&gt;KimBritt: radio drm&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Breadcrumb|}} {{Breadcrumb|Digital}} {{CurrentBreadcrumb}}&lt;br /&gt;
[[Category:Digital]]&lt;br /&gt;
&lt;br /&gt;
== Steps ==&lt;br /&gt;
This document assumes you have implemented Digital Audio with Live AM/FM stream measurement with a &amp;quot;radio&amp;quot; content type.    It outlines the new parameters you will use to implement podcast measurement with the DCR content type.  &lt;br /&gt;
&lt;br /&gt;
# Send a list of your podcasts or programs to your TAM &lt;br /&gt;
#Update the parameters you use to call the SDK play and playheadPosition. Reference the appropriate [[Podcasts|Changes for Podcast Measurement]]  below.&lt;br /&gt;
#Obtain Nielsen Podcast certification once your changes are complete and tested &lt;br /&gt;
#Complete a Production License with your Nielsen Account Representative&lt;br /&gt;
=== Library ===&lt;br /&gt;
Use the same library as Digital Audio, live AM/FM stream measurement.&lt;br /&gt;
&lt;br /&gt;
== Changes for Podcast Measurement ==&lt;br /&gt;
=== play ===&lt;br /&gt;
Continue to use [[play]] to pass the channel descriptor information through the channelName parameter when the user taps the '''Play''' button on the player. &lt;br /&gt;
&lt;br /&gt;
=== loadMetadata ===&lt;br /&gt;
Use [[loadMetadata]] to pass information about your podcast to the SDK. The parameters must be passed as a JSON object.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;objective-c&amp;quot;&amp;gt;    – (void) loadMetadata :(id)metadata;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Refer to [[loadMetadata]] for the list of parameters to be passed in the JSON object.&lt;br /&gt;
&amp;lt;blockquote&amp;gt;'''Note:''' The [[loadMetadata]] call after the first [[play]] call '''must have ‘content’ (&amp;quot;type&amp;quot;: &amp;quot;content&amp;quot;).''' &amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== playheadPosition for &amp;quot;content&amp;quot; ===&lt;br /&gt;
You will continue to use [[playheadPosition]] to pass the position of the playhead while the content is being played; however, you will pass the relative position from the beginning of the file.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;objective-c&amp;quot;&amp;gt;    – (void) playheadPosition: (long long) playheadPos&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Key !! Description !! Values !! Required? (Y/N) !! Example&lt;br /&gt;
|-&lt;br /&gt;
| On-Demand Audio || Position taken from beginning of the content in seconds. || Client-defined || Yes || Current player position from beginning of the content.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
''' playheadPosition Syntax Example for iOS'''&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;objective-c&amp;quot;&amp;gt;    CMTime curTime=[player currentTime];&lt;br /&gt;
    long pos=CMTimeGetSeconds(curTime);&lt;br /&gt;
    [nAppApiObject playheadPosition:pos];&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== API Parameters Example ===&lt;br /&gt;
Convert the API calls below to the OS and language requirements for your platform. &lt;br /&gt;
&lt;br /&gt;
Call [[play]] with channelName JSON as below.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;json&amp;quot;&amp;gt;{&lt;br /&gt;
   &amp;quot;channelName&amp;quot;: &amp;quot;KABC-FM Morning Show&amp;quot;&lt;br /&gt;
}&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Call [[loadMetadata]] with JSON metadata for content as below.&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;assetid&amp;quot;: &amp;quot;pod345-67483&amp;quot;,&lt;br /&gt;
  &amp;quot;program&amp;quot;: &amp;quot;KABC MorningShow&amp;quot;,&lt;br /&gt;
  &amp;quot;title&amp;quot;: &amp;quot;20171125: HR1&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;,                        // station call letters and band are optional here                   &lt;br /&gt;
  &amp;quot;segC&amp;quot;: &amp;quot;CustomSegmentValueC&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;20171125 06:00:00&amp;quot;,&lt;br /&gt;
  &amp;quot;adloadtype&amp;quot;: &amp;quot;2&amp;quot;,&lt;br /&gt;
  &amp;quot;pipmode&amp;quot;:&amp;quot;false&amp;quot;,                  &lt;br /&gt;
  &amp;quot;progen&amp;quot;:&amp;quot;GV&amp;quot;&lt;br /&gt;
}&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Call [[playheadPosition]] every one second until a pause / stop.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Type !! Sample code !! Description&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | Start of stream || &amp;lt;code&amp;gt;[nielsenMeter play: channelName];&amp;lt;/code&amp;gt; || // channelName contains JSON metadata of program being played&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter loadMetadata: contentMetadataObject];&amp;lt;/code&amp;gt; || // contentMetadataObject contains the JSON metadata for the content being played&lt;br /&gt;
|-&lt;br /&gt;
| Content || &amp;lt;code&amp;gt;[nielsenMeter playheadPosition: position];&amp;lt;/code&amp;gt; || // playheadPosition is position of the playhead while the content is being played&lt;br /&gt;
|-&lt;br /&gt;
| End of Stream || &amp;lt;code&amp;gt;[nielsenMeter end];&amp;lt;/code&amp;gt; || // Content playback is completed.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Call [[playheadPosition]] every two seconds until a pause / stop / another ''loadMetadata'' is called. Playhead should be passed for the entire duration of ad pod, if the ad pod details are passed as part of [[loadMetadata]].&lt;br /&gt;
&lt;br /&gt;
The sample API sequence can be used as a reference to identify the specific events that need to be called during content and ad playback.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Type !! Sample code !! Description&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | Start of stream || &amp;lt;code&amp;gt;[nielsenMeter play: channelName];&amp;lt;/code&amp;gt; || // channelName contains JSON metadata of channel/video name being played&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter loadMetadata: contentMetadataObject];&amp;lt;/code&amp;gt; || // contentMetadataObject contains the JSON metadata for the content being played&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Preroll || &amp;lt;code&amp;gt;[nielsenMeter loadMetadata: prerollMetadataObject];&amp;lt;/code&amp;gt; || // prerollMetadataObject contains the JSON metadata for the preroll ad&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter playheadPosition: position];&amp;lt;/code&amp;gt; || // position is position of the playhead while the preroll ad is being played&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter stop];&amp;lt;/code&amp;gt; || // Call stop after preroll occurs&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Content || &amp;lt;code&amp;gt;[nielsenMeter loadMetadata: contentMetadataObject];&amp;lt;/code&amp;gt; || // contentMetadataObject contains the JSON metadata for the content being played&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter playheadPosition: position];&amp;lt;/code&amp;gt; || // position is position of the playhead while the content is being played&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter stop];&amp;lt;/code&amp;gt; || // Call stop after the content is paused (ad starts)&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Midroll || &amp;lt;code&amp;gt;[nielsenMeter loadMetadata: midrollMetadataObject];&amp;lt;/code&amp;gt; || // midrollMetadataObject contains the JSON metadata for the midroll ad&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter playheadPosition: position];&amp;lt;/code&amp;gt; || // position is position of the playhead while the midroll ad is being played&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter stop];&amp;lt;/code&amp;gt; || // Call stop after midroll occurs&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Content (End of stream) || &amp;lt;code&amp;gt;[nielsenMeter loadMetadata: contentMetadataObject];&amp;lt;/code&amp;gt; || // contentMetadataObject contains the JSON metadata for the content being played&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter playheadPosition: position];&amp;lt;/code&amp;gt; || // position is position of the playhead while the content is being played&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter end];&amp;lt;/code&amp;gt; || // Called at the end of content&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Postroll || &amp;lt;code&amp;gt;[nielsenMeter loadMetadata: postrollMetadataObject];&amp;lt;/code&amp;gt; || // postrollMetadataObject contains the JSON metadata for the postroll ad&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter playheadPosition: position];&amp;lt;/code&amp;gt; || // position is position of the playhead while the postroll ad is being played&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter stop];&amp;lt;/code&amp;gt; || // Call stop after postroll occurs&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;'''Note:''' Each Ad playhead should reset or begin from 0 at ad start. When content has resumed following an ad break, playhead position must continue from where previous content segment was left off.&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Nielsen Measurement Opt-Out Implementation ==&lt;br /&gt;
Opt-out implementation for podcasts is the same as live AM/FM stream measurement. &lt;br /&gt;
&lt;br /&gt;
== Technical Guides ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! style=&amp;quot;width: 90px;&amp;quot; | Type&lt;br /&gt;
! style=&amp;quot;width: 45px;&amp;quot; |&lt;br /&gt;
! style=&amp;quot;width: 45px;&amp;quot; | OS&lt;br /&gt;
! style=&amp;quot;width: 50%;&amp;quot; | DCR Implementation Guide&lt;br /&gt;
!| SDK Documentation&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;7&amp;quot; | {{SmallIcon|SDKIcon.png|alt=SDK}}&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | {{OSIcon|VideoIcon.png|alt=Video}}&lt;br /&gt;
| {{OSIcon|macOSIcon.png|alt=iOS}}&lt;br /&gt;
| '''[[DCR Video iOS SDK]]'''&lt;br /&gt;
| [[iOS SDK API Reference]]&lt;br /&gt;
|-&lt;br /&gt;
| {{OSIcon|AndroidIcon.png|alt=Android}}&lt;br /&gt;
| '''[[DCR Video Android SDK]]'''&lt;br /&gt;
| [[Android SDK API Reference]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;width: 90px;&amp;quot; |&lt;br /&gt;
! style=&amp;quot;width: 42%;&amp;quot; | Technical Guides&lt;br /&gt;
!&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;7&amp;quot; | {{SmallIcon|DigitalIcon.png}}&lt;br /&gt;
| '''[[Digital Measurement Onboarding]]'''&lt;br /&gt;
| '''[[Digital Measurement Metadata]]'''&lt;br /&gt;
|-&lt;br /&gt;
| '''[[Digital Measurement Testing]]'''&lt;br /&gt;
| '''[[Digital Measurement Interruption Scenarios]]'''&lt;br /&gt;
|-&lt;br /&gt;
| '''[[Digital Measurement FAQ]]'''&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| '''[[Digital Pre-Certification Checklist App SDK]]'''&lt;br /&gt;
| '''[[Digital Pre-Certification Checklist Browser SDK]]'''&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>KimBritt</name></author>
	</entry>
	<entry>
		<id>https://nielsentest.mywikis.net/w/index.php?title=DCR_Podcasts_in_Digital&amp;diff=2240</id>
		<title>DCR Podcasts in Digital</title>
		<link rel="alternate" type="text/html" href="https://nielsentest.mywikis.net/w/index.php?title=DCR_Podcasts_in_Digital&amp;diff=2240"/>
		<updated>2017-12-13T15:18:29Z</updated>

		<summary type="html">&lt;p&gt;KimBritt: end blockquote&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Breadcrumb|}} {{Breadcrumb|Digital}} {{CurrentBreadcrumb}}&lt;br /&gt;
[[Category:Digital]]&lt;br /&gt;
&lt;br /&gt;
== Steps ==&lt;br /&gt;
This document assumes you have implemented Digital Audio with Live AM/FM stream measurement.    It outlines the new parameters you will use to implement podcast measurement with the DCR content type.  &lt;br /&gt;
&lt;br /&gt;
# Send a list of your podcasts or programs to your TAM &lt;br /&gt;
#Update the parameters you use to call the SDK play and playheadPosition. Reference the appropriate [[Podcasts|Changes for Podcast Measurement]]  below.&lt;br /&gt;
#Obtain Nielsen Podcast certification once your changes are complete and tested &lt;br /&gt;
#Complete a Production License with your Nielsen Account Representative&lt;br /&gt;
=== Library ===&lt;br /&gt;
Use the same library as Digital Audio, live AM/FM stream measurement.&lt;br /&gt;
&lt;br /&gt;
== Changes for Podcast Measurement ==&lt;br /&gt;
=== play ===&lt;br /&gt;
Continue to use [[play]] to pass the channel descriptor information through the channelName parameter when the user taps the '''Play''' button on the player. &lt;br /&gt;
&lt;br /&gt;
=== loadMetadata ===&lt;br /&gt;
Use [[loadMetadata]] to pass information about your podcast to the SDK. The parameters must be passed as a JSON object.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;objective-c&amp;quot;&amp;gt;    – (void) loadMetadata :(id)metadata;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Refer to [[loadMetadata]] for the list of parameters to be passed in the JSON object.&lt;br /&gt;
&amp;lt;blockquote&amp;gt;'''Note:''' The [[loadMetadata]] call after the first [[play]] call '''must have ‘content’ (&amp;quot;type&amp;quot;: &amp;quot;content&amp;quot;).''' &amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== playheadPosition for &amp;quot;content&amp;quot; ===&lt;br /&gt;
You will continue to use [[playheadPosition]] to pass the position of the playhead while the content is being played; however, you will pass the relative position from the beginning of the file.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;objective-c&amp;quot;&amp;gt;    – (void) playheadPosition: (long long) playheadPos&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Key !! Description !! Values !! Required? (Y/N) !! Example&lt;br /&gt;
|-&lt;br /&gt;
| On-Demand Audio || Position taken from beginning of the content in seconds. || Client-defined || Yes || Current player position from beginning of the content.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
''' playheadPosition Syntax Example for iOS'''&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;objective-c&amp;quot;&amp;gt;    CMTime curTime=[player currentTime];&lt;br /&gt;
    long pos=CMTimeGetSeconds(curTime);&lt;br /&gt;
    [nAppApiObject playheadPosition:pos];&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== API Parameters Example ===&lt;br /&gt;
Convert the API calls below to the OS and language requirements for your platform. &lt;br /&gt;
&lt;br /&gt;
Call [[play]] with channelName JSON as below.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;json&amp;quot;&amp;gt;{&lt;br /&gt;
   &amp;quot;channelName&amp;quot;: &amp;quot;KABC-FM Morning Show&amp;quot;&lt;br /&gt;
}&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Call [[loadMetadata]] with JSON metadata for content as below.&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;assetid&amp;quot;: &amp;quot;pod345-67483&amp;quot;,&lt;br /&gt;
  &amp;quot;program&amp;quot;: &amp;quot;KABC MorningShow&amp;quot;,&lt;br /&gt;
  &amp;quot;title&amp;quot;: &amp;quot;20171125: HR1&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;,                        // station call letters and band are optional here                   &lt;br /&gt;
  &amp;quot;segC&amp;quot;: &amp;quot;CustomSegmentValueC&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;20171125 06:00:00&amp;quot;,&lt;br /&gt;
  &amp;quot;adloadtype&amp;quot;: &amp;quot;2&amp;quot;,&lt;br /&gt;
  &amp;quot;pipmode&amp;quot;:&amp;quot;false&amp;quot;,                  &lt;br /&gt;
  &amp;quot;progen&amp;quot;:&amp;quot;GV&amp;quot;&lt;br /&gt;
}&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Call [[playheadPosition]] every one second until a pause / stop.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Type !! Sample code !! Description&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | Start of stream || &amp;lt;code&amp;gt;[nielsenMeter play: channelName];&amp;lt;/code&amp;gt; || // channelName contains JSON metadata of program being played&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter loadMetadata: contentMetadataObject];&amp;lt;/code&amp;gt; || // contentMetadataObject contains the JSON metadata for the content being played&lt;br /&gt;
|-&lt;br /&gt;
| Content || &amp;lt;code&amp;gt;[nielsenMeter playheadPosition: position];&amp;lt;/code&amp;gt; || // playheadPosition is position of the playhead while the content is being played&lt;br /&gt;
|-&lt;br /&gt;
| End of Stream || &amp;lt;code&amp;gt;[nielsenMeter end];&amp;lt;/code&amp;gt; || // Content playback is completed.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Call [[playheadPosition]] every two seconds until a pause / stop / another ''loadMetadata'' is called. Playhead should be passed for the entire duration of ad pod, if the ad pod details are passed as part of [[loadMetadata]].&lt;br /&gt;
&lt;br /&gt;
The sample API sequence can be used as a reference to identify the specific events that need to be called during content and ad playback.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Type !! Sample code !! Description&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | Start of stream || &amp;lt;code&amp;gt;[nielsenMeter play: channelName];&amp;lt;/code&amp;gt; || // channelName contains JSON metadata of channel/video name being played&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter loadMetadata: contentMetadataObject];&amp;lt;/code&amp;gt; || // contentMetadataObject contains the JSON metadata for the content being played&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Preroll || &amp;lt;code&amp;gt;[nielsenMeter loadMetadata: prerollMetadataObject];&amp;lt;/code&amp;gt; || // prerollMetadataObject contains the JSON metadata for the preroll ad&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter playheadPosition: position];&amp;lt;/code&amp;gt; || // position is position of the playhead while the preroll ad is being played&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter stop];&amp;lt;/code&amp;gt; || // Call stop after preroll occurs&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Content || &amp;lt;code&amp;gt;[nielsenMeter loadMetadata: contentMetadataObject];&amp;lt;/code&amp;gt; || // contentMetadataObject contains the JSON metadata for the content being played&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter playheadPosition: position];&amp;lt;/code&amp;gt; || // position is position of the playhead while the content is being played&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter stop];&amp;lt;/code&amp;gt; || // Call stop after the content is paused (ad starts)&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Midroll || &amp;lt;code&amp;gt;[nielsenMeter loadMetadata: midrollMetadataObject];&amp;lt;/code&amp;gt; || // midrollMetadataObject contains the JSON metadata for the midroll ad&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter playheadPosition: position];&amp;lt;/code&amp;gt; || // position is position of the playhead while the midroll ad is being played&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter stop];&amp;lt;/code&amp;gt; || // Call stop after midroll occurs&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Content (End of stream) || &amp;lt;code&amp;gt;[nielsenMeter loadMetadata: contentMetadataObject];&amp;lt;/code&amp;gt; || // contentMetadataObject contains the JSON metadata for the content being played&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter playheadPosition: position];&amp;lt;/code&amp;gt; || // position is position of the playhead while the content is being played&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter end];&amp;lt;/code&amp;gt; || // Called at the end of content&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Postroll || &amp;lt;code&amp;gt;[nielsenMeter loadMetadata: postrollMetadataObject];&amp;lt;/code&amp;gt; || // postrollMetadataObject contains the JSON metadata for the postroll ad&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter playheadPosition: position];&amp;lt;/code&amp;gt; || // position is position of the playhead while the postroll ad is being played&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter stop];&amp;lt;/code&amp;gt; || // Call stop after postroll occurs&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;'''Note:''' Each Ad playhead should reset or begin from 0 at ad start. When content has resumed following an ad break, playhead position must continue from where previous content segment was left off.&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Nielsen Measurement Opt-Out Implementation ==&lt;br /&gt;
Opt-out implementation for podcasts is the same as live AM/FM stream measurement. &lt;br /&gt;
&lt;br /&gt;
== Technical Guides ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! style=&amp;quot;width: 90px;&amp;quot; | Type&lt;br /&gt;
! style=&amp;quot;width: 45px;&amp;quot; |&lt;br /&gt;
! style=&amp;quot;width: 45px;&amp;quot; | OS&lt;br /&gt;
! style=&amp;quot;width: 50%;&amp;quot; | DCR Implementation Guide&lt;br /&gt;
!| SDK Documentation&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;7&amp;quot; | {{SmallIcon|SDKIcon.png|alt=SDK}}&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | {{OSIcon|VideoIcon.png|alt=Video}}&lt;br /&gt;
| {{OSIcon|macOSIcon.png|alt=iOS}}&lt;br /&gt;
| '''[[DCR Video iOS SDK]]'''&lt;br /&gt;
| [[iOS SDK API Reference]]&lt;br /&gt;
|-&lt;br /&gt;
| {{OSIcon|AndroidIcon.png|alt=Android}}&lt;br /&gt;
| '''[[DCR Video Android SDK]]'''&lt;br /&gt;
| [[Android SDK API Reference]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;width: 90px;&amp;quot; |&lt;br /&gt;
! style=&amp;quot;width: 42%;&amp;quot; | Technical Guides&lt;br /&gt;
!&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;7&amp;quot; | {{SmallIcon|DigitalIcon.png}}&lt;br /&gt;
| '''[[Digital Measurement Onboarding]]'''&lt;br /&gt;
| '''[[Digital Measurement Metadata]]'''&lt;br /&gt;
|-&lt;br /&gt;
| '''[[Digital Measurement Testing]]'''&lt;br /&gt;
| '''[[Digital Measurement Interruption Scenarios]]'''&lt;br /&gt;
|-&lt;br /&gt;
| '''[[Digital Measurement FAQ]]'''&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| '''[[Digital Pre-Certification Checklist App SDK]]'''&lt;br /&gt;
| '''[[Digital Pre-Certification Checklist Browser SDK]]'''&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>KimBritt</name></author>
	</entry>
	<entry>
		<id>https://nielsentest.mywikis.net/w/index.php?title=DCR_Podcasts_in_Digital&amp;diff=2239</id>
		<title>DCR Podcasts in Digital</title>
		<link rel="alternate" type="text/html" href="https://nielsentest.mywikis.net/w/index.php?title=DCR_Podcasts_in_Digital&amp;diff=2239"/>
		<updated>2017-12-13T15:17:32Z</updated>

		<summary type="html">&lt;p&gt;KimBritt: bold content type&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Breadcrumb|}} {{Breadcrumb|Digital}} {{CurrentBreadcrumb}}&lt;br /&gt;
[[Category:Digital]]&lt;br /&gt;
&lt;br /&gt;
== Steps ==&lt;br /&gt;
This document assumes you have implemented Digital Audio with Live AM/FM stream measurement.    It outlines the new parameters you will use to implement podcast measurement with the DCR content type.  &lt;br /&gt;
&lt;br /&gt;
# Send a list of your podcasts or programs to your TAM &lt;br /&gt;
#Update the parameters you use to call the SDK play and playheadPosition. Reference the appropriate [[Podcasts|Changes for Podcast Measurement]]  below.&lt;br /&gt;
#Obtain Nielsen Podcast certification once your changes are complete and tested &lt;br /&gt;
#Complete a Production License with your Nielsen Account Representative&lt;br /&gt;
=== Library ===&lt;br /&gt;
Use the same library as Digital Audio, live AM/FM stream measurement.&lt;br /&gt;
&lt;br /&gt;
== Changes for Podcast Measurement ==&lt;br /&gt;
=== play ===&lt;br /&gt;
Continue to use [[play]] to pass the channel descriptor information through the channelName parameter when the user taps the '''Play''' button on the player. &lt;br /&gt;
&lt;br /&gt;
=== loadMetadata ===&lt;br /&gt;
Use [[loadMetadata]] to pass information about your podcast to the SDK. The parameters must be passed as a JSON object.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;objective-c&amp;quot;&amp;gt;    – (void) loadMetadata :(id)metadata;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Refer to [[loadMetadata]] for the list of parameters to be passed in the JSON object.&lt;br /&gt;
&amp;lt;blockquote&amp;gt;'''Note:''' The [[loadMetadata]] call after the first [[play]] call '''must have ‘content’ details (&amp;quot;type&amp;quot;: &amp;quot;content&amp;quot;).''' &lt;br /&gt;
&lt;br /&gt;
=== playheadPosition for &amp;quot;content&amp;quot; ===&lt;br /&gt;
You will continue to use [[playheadPosition]] to pass the position of the playhead while the content is being played; however, you will pass the relative position from the beginning of the file.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;objective-c&amp;quot;&amp;gt;    – (void) playheadPosition: (long long) playheadPos&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Key !! Description !! Values !! Required? (Y/N) !! Example&lt;br /&gt;
|-&lt;br /&gt;
| On-Demand Audio || Position taken from beginning of the content in seconds. || Client-defined || Yes || Current player position from beginning of the content.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
''' playheadPosition Syntax Example for iOS'''&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;objective-c&amp;quot;&amp;gt;    CMTime curTime=[player currentTime];&lt;br /&gt;
    long pos=CMTimeGetSeconds(curTime);&lt;br /&gt;
    [nAppApiObject playheadPosition:pos];&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== API Parameters Example ===&lt;br /&gt;
Convert the API calls below to the OS and language requirements for your platform. &lt;br /&gt;
&lt;br /&gt;
Call [[play]] with channelName JSON as below.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;json&amp;quot;&amp;gt;{&lt;br /&gt;
   &amp;quot;channelName&amp;quot;: &amp;quot;KABC-FM Morning Show&amp;quot;&lt;br /&gt;
}&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Call [[loadMetadata]] with JSON metadata for content as below.&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;assetid&amp;quot;: &amp;quot;pod345-67483&amp;quot;,&lt;br /&gt;
  &amp;quot;program&amp;quot;: &amp;quot;KABC MorningShow&amp;quot;,&lt;br /&gt;
  &amp;quot;title&amp;quot;: &amp;quot;20171125: HR1&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;,                        // station call letters and band are optional here                   &lt;br /&gt;
  &amp;quot;segC&amp;quot;: &amp;quot;CustomSegmentValueC&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;20171125 06:00:00&amp;quot;,&lt;br /&gt;
  &amp;quot;adloadtype&amp;quot;: &amp;quot;2&amp;quot;,&lt;br /&gt;
  &amp;quot;pipmode&amp;quot;:&amp;quot;false&amp;quot;,                  &lt;br /&gt;
  &amp;quot;progen&amp;quot;:&amp;quot;GV&amp;quot;&lt;br /&gt;
}&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Call [[playheadPosition]] every one second until a pause / stop.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Type !! Sample code !! Description&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | Start of stream || &amp;lt;code&amp;gt;[nielsenMeter play: channelName];&amp;lt;/code&amp;gt; || // channelName contains JSON metadata of program being played&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter loadMetadata: contentMetadataObject];&amp;lt;/code&amp;gt; || // contentMetadataObject contains the JSON metadata for the content being played&lt;br /&gt;
|-&lt;br /&gt;
| Content || &amp;lt;code&amp;gt;[nielsenMeter playheadPosition: position];&amp;lt;/code&amp;gt; || // playheadPosition is position of the playhead while the content is being played&lt;br /&gt;
|-&lt;br /&gt;
| End of Stream || &amp;lt;code&amp;gt;[nielsenMeter end];&amp;lt;/code&amp;gt; || // Content playback is completed.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Call [[playheadPosition]] every two seconds until a pause / stop / another ''loadMetadata'' is called. Playhead should be passed for the entire duration of ad pod, if the ad pod details are passed as part of [[loadMetadata]].&lt;br /&gt;
&lt;br /&gt;
The sample API sequence can be used as a reference to identify the specific events that need to be called during content and ad playback.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Type !! Sample code !! Description&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | Start of stream || &amp;lt;code&amp;gt;[nielsenMeter play: channelName];&amp;lt;/code&amp;gt; || // channelName contains JSON metadata of channel/video name being played&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter loadMetadata: contentMetadataObject];&amp;lt;/code&amp;gt; || // contentMetadataObject contains the JSON metadata for the content being played&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Preroll || &amp;lt;code&amp;gt;[nielsenMeter loadMetadata: prerollMetadataObject];&amp;lt;/code&amp;gt; || // prerollMetadataObject contains the JSON metadata for the preroll ad&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter playheadPosition: position];&amp;lt;/code&amp;gt; || // position is position of the playhead while the preroll ad is being played&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter stop];&amp;lt;/code&amp;gt; || // Call stop after preroll occurs&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Content || &amp;lt;code&amp;gt;[nielsenMeter loadMetadata: contentMetadataObject];&amp;lt;/code&amp;gt; || // contentMetadataObject contains the JSON metadata for the content being played&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter playheadPosition: position];&amp;lt;/code&amp;gt; || // position is position of the playhead while the content is being played&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter stop];&amp;lt;/code&amp;gt; || // Call stop after the content is paused (ad starts)&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Midroll || &amp;lt;code&amp;gt;[nielsenMeter loadMetadata: midrollMetadataObject];&amp;lt;/code&amp;gt; || // midrollMetadataObject contains the JSON metadata for the midroll ad&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter playheadPosition: position];&amp;lt;/code&amp;gt; || // position is position of the playhead while the midroll ad is being played&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter stop];&amp;lt;/code&amp;gt; || // Call stop after midroll occurs&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Content (End of stream) || &amp;lt;code&amp;gt;[nielsenMeter loadMetadata: contentMetadataObject];&amp;lt;/code&amp;gt; || // contentMetadataObject contains the JSON metadata for the content being played&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter playheadPosition: position];&amp;lt;/code&amp;gt; || // position is position of the playhead while the content is being played&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter end];&amp;lt;/code&amp;gt; || // Called at the end of content&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Postroll || &amp;lt;code&amp;gt;[nielsenMeter loadMetadata: postrollMetadataObject];&amp;lt;/code&amp;gt; || // postrollMetadataObject contains the JSON metadata for the postroll ad&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter playheadPosition: position];&amp;lt;/code&amp;gt; || // position is position of the playhead while the postroll ad is being played&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter stop];&amp;lt;/code&amp;gt; || // Call stop after postroll occurs&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;'''Note:''' Each Ad playhead should reset or begin from 0 at ad start. When content has resumed following an ad break, playhead position must continue from where previous content segment was left off.&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Nielsen Measurement Opt-Out Implementation ==&lt;br /&gt;
Opt-out implementation for podcasts is the same as live AM/FM stream measurement. &lt;br /&gt;
&lt;br /&gt;
== Technical Guides ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! style=&amp;quot;width: 90px;&amp;quot; | Type&lt;br /&gt;
! style=&amp;quot;width: 45px;&amp;quot; |&lt;br /&gt;
! style=&amp;quot;width: 45px;&amp;quot; | OS&lt;br /&gt;
! style=&amp;quot;width: 50%;&amp;quot; | DCR Implementation Guide&lt;br /&gt;
!| SDK Documentation&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;7&amp;quot; | {{SmallIcon|SDKIcon.png|alt=SDK}}&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | {{OSIcon|VideoIcon.png|alt=Video}}&lt;br /&gt;
| {{OSIcon|macOSIcon.png|alt=iOS}}&lt;br /&gt;
| '''[[DCR Video iOS SDK]]'''&lt;br /&gt;
| [[iOS SDK API Reference]]&lt;br /&gt;
|-&lt;br /&gt;
| {{OSIcon|AndroidIcon.png|alt=Android}}&lt;br /&gt;
| '''[[DCR Video Android SDK]]'''&lt;br /&gt;
| [[Android SDK API Reference]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;width: 90px;&amp;quot; |&lt;br /&gt;
! style=&amp;quot;width: 42%;&amp;quot; | Technical Guides&lt;br /&gt;
!&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;7&amp;quot; | {{SmallIcon|DigitalIcon.png}}&lt;br /&gt;
| '''[[Digital Measurement Onboarding]]'''&lt;br /&gt;
| '''[[Digital Measurement Metadata]]'''&lt;br /&gt;
|-&lt;br /&gt;
| '''[[Digital Measurement Testing]]'''&lt;br /&gt;
| '''[[Digital Measurement Interruption Scenarios]]'''&lt;br /&gt;
|-&lt;br /&gt;
| '''[[Digital Measurement FAQ]]'''&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| '''[[Digital Pre-Certification Checklist App SDK]]'''&lt;br /&gt;
| '''[[Digital Pre-Certification Checklist Browser SDK]]'''&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>KimBritt</name></author>
	</entry>
	<entry>
		<id>https://nielsentest.mywikis.net/w/index.php?title=DCR_Podcasts_in_Digital&amp;diff=2238</id>
		<title>DCR Podcasts in Digital</title>
		<link rel="alternate" type="text/html" href="https://nielsentest.mywikis.net/w/index.php?title=DCR_Podcasts_in_Digital&amp;diff=2238"/>
		<updated>2017-12-13T15:15:50Z</updated>

		<summary type="html">&lt;p&gt;KimBritt: quote type&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Breadcrumb|}} {{Breadcrumb|Digital}} {{CurrentBreadcrumb}}&lt;br /&gt;
[[Category:Digital]]&lt;br /&gt;
&lt;br /&gt;
== Steps ==&lt;br /&gt;
This document assumes you have implemented Digital Audio with Live AM/FM stream measurement.    It outlines the new parameters you will use to implement podcast measurement with the DCR content type.  &lt;br /&gt;
&lt;br /&gt;
# Send a list of your podcasts or programs to your TAM &lt;br /&gt;
#Update the parameters you use to call the SDK play and playheadPosition. Reference the appropriate [[Podcasts|Changes for Podcast Measurement]]  below.&lt;br /&gt;
#Obtain Nielsen Podcast certification once your changes are complete and tested &lt;br /&gt;
#Complete a Production License with your Nielsen Account Representative&lt;br /&gt;
=== Library ===&lt;br /&gt;
Use the same library as Digital Audio, live AM/FM stream measurement.&lt;br /&gt;
&lt;br /&gt;
== Changes for Podcast Measurement ==&lt;br /&gt;
=== play ===&lt;br /&gt;
Continue to use [[play]] to pass the channel descriptor information through the channelName parameter when the user taps the '''Play''' button on the player. &lt;br /&gt;
&lt;br /&gt;
=== loadMetadata ===&lt;br /&gt;
Use [[loadMetadata]] to pass 'content'  [[Digital Measurement Metadata]]. The CMS data must be passed as a JSON object.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;objective-c&amp;quot;&amp;gt;    – (void) loadMetadata :(id)metadata;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Refer to [[loadMetadata]] for the list of parameters to be passed in the JSON object.&lt;br /&gt;
&amp;lt;blockquote&amp;gt;'''Note:''' The [[loadMetadata]] call after the first [[play]] call must have ‘content’ details (&amp;quot;type&amp;quot;: &amp;quot;content&amp;quot;). This call should occur before any preroll ad starts playing.&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== playheadPosition for &amp;quot;content&amp;quot; ===&lt;br /&gt;
You will continue to use [[playheadPosition]] to pass the position of the playhead while the content is being played; however, you will pass the relative position from the beginning of the file.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;objective-c&amp;quot;&amp;gt;    – (void) playheadPosition: (long long) playheadPos&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Key !! Description !! Values !! Required? (Y/N) !! Example&lt;br /&gt;
|-&lt;br /&gt;
| On-Demand Audio || Position taken from beginning of the content in seconds. || Client-defined || Yes || Current player position from beginning of the content.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
''' playheadPosition Syntax Example for iOS'''&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;objective-c&amp;quot;&amp;gt;    CMTime curTime=[player currentTime];&lt;br /&gt;
    long pos=CMTimeGetSeconds(curTime);&lt;br /&gt;
    [nAppApiObject playheadPosition:pos];&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== API Parameters Example ===&lt;br /&gt;
Convert the API calls below to the OS and language requirements for your platform. &lt;br /&gt;
&lt;br /&gt;
Call [[play]] with channelName JSON as below.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;json&amp;quot;&amp;gt;{&lt;br /&gt;
   &amp;quot;channelName&amp;quot;: &amp;quot;KABC-FM Morning Show&amp;quot;&lt;br /&gt;
}&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Call [[loadMetadata]] with JSON metadata for content as below.&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;assetid&amp;quot;: &amp;quot;pod345-67483&amp;quot;,&lt;br /&gt;
  &amp;quot;program&amp;quot;: &amp;quot;KABC MorningShow&amp;quot;,&lt;br /&gt;
  &amp;quot;title&amp;quot;: &amp;quot;20171125: HR1&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;,                        // station call letters and band are optional here                   &lt;br /&gt;
  &amp;quot;segC&amp;quot;: &amp;quot;CustomSegmentValueC&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;20171125 06:00:00&amp;quot;,&lt;br /&gt;
  &amp;quot;adloadtype&amp;quot;: &amp;quot;2&amp;quot;,&lt;br /&gt;
  &amp;quot;pipmode&amp;quot;:&amp;quot;false&amp;quot;,                  &lt;br /&gt;
  &amp;quot;progen&amp;quot;:&amp;quot;GV&amp;quot;&lt;br /&gt;
}&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Call [[playheadPosition]] every one second until a pause / stop.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Type !! Sample code !! Description&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | Start of stream || &amp;lt;code&amp;gt;[nielsenMeter play: channelName];&amp;lt;/code&amp;gt; || // channelName contains JSON metadata of program being played&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter loadMetadata: contentMetadataObject];&amp;lt;/code&amp;gt; || // contentMetadataObject contains the JSON metadata for the content being played&lt;br /&gt;
|-&lt;br /&gt;
| Content || &amp;lt;code&amp;gt;[nielsenMeter playheadPosition: position];&amp;lt;/code&amp;gt; || // playheadPosition is position of the playhead while the content is being played&lt;br /&gt;
|-&lt;br /&gt;
| End of Stream || &amp;lt;code&amp;gt;[nielsenMeter end];&amp;lt;/code&amp;gt; || // Content playback is completed.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Call [[playheadPosition]] every two seconds until a pause / stop / another ''loadMetadata'' is called. Playhead should be passed for the entire duration of ad pod, if the ad pod details are passed as part of [[loadMetadata]].&lt;br /&gt;
&lt;br /&gt;
The sample API sequence can be used as a reference to identify the specific events that need to be called during content and ad playback.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Type !! Sample code !! Description&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | Start of stream || &amp;lt;code&amp;gt;[nielsenMeter play: channelName];&amp;lt;/code&amp;gt; || // channelName contains JSON metadata of channel/video name being played&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter loadMetadata: contentMetadataObject];&amp;lt;/code&amp;gt; || // contentMetadataObject contains the JSON metadata for the content being played&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Preroll || &amp;lt;code&amp;gt;[nielsenMeter loadMetadata: prerollMetadataObject];&amp;lt;/code&amp;gt; || // prerollMetadataObject contains the JSON metadata for the preroll ad&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter playheadPosition: position];&amp;lt;/code&amp;gt; || // position is position of the playhead while the preroll ad is being played&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter stop];&amp;lt;/code&amp;gt; || // Call stop after preroll occurs&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Content || &amp;lt;code&amp;gt;[nielsenMeter loadMetadata: contentMetadataObject];&amp;lt;/code&amp;gt; || // contentMetadataObject contains the JSON metadata for the content being played&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter playheadPosition: position];&amp;lt;/code&amp;gt; || // position is position of the playhead while the content is being played&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter stop];&amp;lt;/code&amp;gt; || // Call stop after the content is paused (ad starts)&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Midroll || &amp;lt;code&amp;gt;[nielsenMeter loadMetadata: midrollMetadataObject];&amp;lt;/code&amp;gt; || // midrollMetadataObject contains the JSON metadata for the midroll ad&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter playheadPosition: position];&amp;lt;/code&amp;gt; || // position is position of the playhead while the midroll ad is being played&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter stop];&amp;lt;/code&amp;gt; || // Call stop after midroll occurs&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Content (End of stream) || &amp;lt;code&amp;gt;[nielsenMeter loadMetadata: contentMetadataObject];&amp;lt;/code&amp;gt; || // contentMetadataObject contains the JSON metadata for the content being played&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter playheadPosition: position];&amp;lt;/code&amp;gt; || // position is position of the playhead while the content is being played&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter end];&amp;lt;/code&amp;gt; || // Called at the end of content&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Postroll || &amp;lt;code&amp;gt;[nielsenMeter loadMetadata: postrollMetadataObject];&amp;lt;/code&amp;gt; || // postrollMetadataObject contains the JSON metadata for the postroll ad&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter playheadPosition: position];&amp;lt;/code&amp;gt; || // position is position of the playhead while the postroll ad is being played&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter stop];&amp;lt;/code&amp;gt; || // Call stop after postroll occurs&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;'''Note:''' Each Ad playhead should reset or begin from 0 at ad start. When content has resumed following an ad break, playhead position must continue from where previous content segment was left off.&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Nielsen Measurement Opt-Out Implementation ==&lt;br /&gt;
Opt-out implementation for podcasts is the same as live AM/FM stream measurement. &lt;br /&gt;
&lt;br /&gt;
== Technical Guides ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! style=&amp;quot;width: 90px;&amp;quot; | Type&lt;br /&gt;
! style=&amp;quot;width: 45px;&amp;quot; |&lt;br /&gt;
! style=&amp;quot;width: 45px;&amp;quot; | OS&lt;br /&gt;
! style=&amp;quot;width: 50%;&amp;quot; | DCR Implementation Guide&lt;br /&gt;
!| SDK Documentation&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;7&amp;quot; | {{SmallIcon|SDKIcon.png|alt=SDK}}&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | {{OSIcon|VideoIcon.png|alt=Video}}&lt;br /&gt;
| {{OSIcon|macOSIcon.png|alt=iOS}}&lt;br /&gt;
| '''[[DCR Video iOS SDK]]'''&lt;br /&gt;
| [[iOS SDK API Reference]]&lt;br /&gt;
|-&lt;br /&gt;
| {{OSIcon|AndroidIcon.png|alt=Android}}&lt;br /&gt;
| '''[[DCR Video Android SDK]]'''&lt;br /&gt;
| [[Android SDK API Reference]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;width: 90px;&amp;quot; |&lt;br /&gt;
! style=&amp;quot;width: 42%;&amp;quot; | Technical Guides&lt;br /&gt;
!&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;7&amp;quot; | {{SmallIcon|DigitalIcon.png}}&lt;br /&gt;
| '''[[Digital Measurement Onboarding]]'''&lt;br /&gt;
| '''[[Digital Measurement Metadata]]'''&lt;br /&gt;
|-&lt;br /&gt;
| '''[[Digital Measurement Testing]]'''&lt;br /&gt;
| '''[[Digital Measurement Interruption Scenarios]]'''&lt;br /&gt;
|-&lt;br /&gt;
| '''[[Digital Measurement FAQ]]'''&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| '''[[Digital Pre-Certification Checklist App SDK]]'''&lt;br /&gt;
| '''[[Digital Pre-Certification Checklist Browser SDK]]'''&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>KimBritt</name></author>
	</entry>
	<entry>
		<id>https://nielsentest.mywikis.net/w/index.php?title=DCR_Podcasts_in_Digital&amp;diff=2237</id>
		<title>DCR Podcasts in Digital</title>
		<link rel="alternate" type="text/html" href="https://nielsentest.mywikis.net/w/index.php?title=DCR_Podcasts_in_Digital&amp;diff=2237"/>
		<updated>2017-12-13T15:14:50Z</updated>

		<summary type="html">&lt;p&gt;KimBritt: examples&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Breadcrumb|}} {{Breadcrumb|Digital}} {{CurrentBreadcrumb}}&lt;br /&gt;
[[Category:Digital]]&lt;br /&gt;
&lt;br /&gt;
== Steps ==&lt;br /&gt;
This document assumes you have implemented Digital Audio with Live AM/FM stream measurement.    It outlines the new parameters you will use to implement podcast measurement with the DCR content type.  &lt;br /&gt;
&lt;br /&gt;
# Send a list of your podcasts or programs to your TAM &lt;br /&gt;
#Update the parameters you use to call the SDK play and playheadPosition. Reference the appropriate [[Podcasts|Changes for Podcast Measurement]]  below.&lt;br /&gt;
#Obtain Nielsen Podcast certification once your changes are complete and tested &lt;br /&gt;
#Complete a Production License with your Nielsen Account Representative&lt;br /&gt;
=== Library ===&lt;br /&gt;
Use the same library as Digital Audio, live AM/FM stream measurement.&lt;br /&gt;
&lt;br /&gt;
== Changes for Podcast Measurement ==&lt;br /&gt;
=== play ===&lt;br /&gt;
Continue to use [[play]] to pass the channel descriptor information through the channelName parameter when the user taps the '''Play''' button on the player. &lt;br /&gt;
&lt;br /&gt;
=== loadMetadata ===&lt;br /&gt;
Use [[loadMetadata]] to pass 'content'  [[Digital Measurement Metadata]]. The CMS data must be passed as a JSON object.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;objective-c&amp;quot;&amp;gt;    – (void) loadMetadata :(id)metadata;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Refer to [[loadMetadata]] for the list of parameters to be passed in the JSON object.&lt;br /&gt;
&amp;lt;blockquote&amp;gt;'''Note:''' The [[loadMetadata]] call after the first [[play]] call must have ‘content’ details (&amp;quot;type&amp;quot;: &amp;quot;content&amp;quot;). This call should occur before any preroll ad starts playing.&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== playheadPosition for &amp;quot;content&amp;quot; ===&lt;br /&gt;
You will continue to use [[playheadPosition]] to pass the position of the playhead while the content is being played; however, you will pass the relative position from the beginning of the file.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;objective-c&amp;quot;&amp;gt;    – (void) playheadPosition: (long long) playheadPos&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Key !! Description !! Values !! Required? (Y/N) !! Example&lt;br /&gt;
|-&lt;br /&gt;
| On-Demand Audio || Position taken from beginning of the content in seconds. || Client-defined || Yes || Current player position from beginning of the content.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
''' playheadPosition Syntax Example for iOS'''&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;objective-c&amp;quot;&amp;gt;    CMTime curTime=[player currentTime];&lt;br /&gt;
    long pos=CMTimeGetSeconds(curTime);&lt;br /&gt;
    [nAppApiObject playheadPosition:pos];&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== API Parameters Example ===&lt;br /&gt;
Convert the API calls below to the OS and language requirements for your platform. &lt;br /&gt;
&lt;br /&gt;
Call [[play]] with channelName JSON as below.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;json&amp;quot;&amp;gt;{&lt;br /&gt;
   &amp;quot;channelName&amp;quot;: &amp;quot;KABC-FM Morning Show&amp;quot;&lt;br /&gt;
}&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Call [[loadMetadata]] with JSON metadata for content as below.&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;assetid&amp;quot;: &amp;quot;pod345-67483&amp;quot;,&lt;br /&gt;
  &amp;quot;program&amp;quot;: &amp;quot;KABC MorningShow&amp;quot;,&lt;br /&gt;
  &amp;quot;title&amp;quot;: &amp;quot;20171125: HR1&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;,                        // station call letters and band are optional here                   &lt;br /&gt;
  &amp;quot;segC&amp;quot;: &amp;quot;CustomSegmentValueC&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;20171125 06:00:00&amp;quot;,&lt;br /&gt;
  &amp;quot;adloadtype&amp;quot;: &amp;quot;2&amp;quot;,&lt;br /&gt;
  “pipmode”:“false”,                  &lt;br /&gt;
  &amp;quot;progen&amp;quot;:&amp;quot;GV&amp;quot;&lt;br /&gt;
}&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Call [[playheadPosition]] every one second until a pause / stop.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Type !! Sample code !! Description&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | Start of stream || &amp;lt;code&amp;gt;[nielsenMeter play: channelName];&amp;lt;/code&amp;gt; || // channelName contains JSON metadata of program being played&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter loadMetadata: contentMetadataObject];&amp;lt;/code&amp;gt; || // contentMetadataObject contains the JSON metadata for the content being played&lt;br /&gt;
|-&lt;br /&gt;
| Content || &amp;lt;code&amp;gt;[nielsenMeter playheadPosition: position];&amp;lt;/code&amp;gt; || // playheadPosition is position of the playhead while the content is being played&lt;br /&gt;
|-&lt;br /&gt;
| End of Stream || &amp;lt;code&amp;gt;[nielsenMeter end];&amp;lt;/code&amp;gt; || // Content playback is completed.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Call [[playheadPosition]] every two seconds until a pause / stop / another ''loadMetadata'' is called. Playhead should be passed for the entire duration of ad pod, if the ad pod details are passed as part of [[loadMetadata]].&lt;br /&gt;
&lt;br /&gt;
The sample API sequence can be used as a reference to identify the specific events that need to be called during content and ad playback.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Type !! Sample code !! Description&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | Start of stream || &amp;lt;code&amp;gt;[nielsenMeter play: channelName];&amp;lt;/code&amp;gt; || // channelName contains JSON metadata of channel/video name being played&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter loadMetadata: contentMetadataObject];&amp;lt;/code&amp;gt; || // contentMetadataObject contains the JSON metadata for the content being played&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Preroll || &amp;lt;code&amp;gt;[nielsenMeter loadMetadata: prerollMetadataObject];&amp;lt;/code&amp;gt; || // prerollMetadataObject contains the JSON metadata for the preroll ad&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter playheadPosition: position];&amp;lt;/code&amp;gt; || // position is position of the playhead while the preroll ad is being played&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter stop];&amp;lt;/code&amp;gt; || // Call stop after preroll occurs&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Content || &amp;lt;code&amp;gt;[nielsenMeter loadMetadata: contentMetadataObject];&amp;lt;/code&amp;gt; || // contentMetadataObject contains the JSON metadata for the content being played&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter playheadPosition: position];&amp;lt;/code&amp;gt; || // position is position of the playhead while the content is being played&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter stop];&amp;lt;/code&amp;gt; || // Call stop after the content is paused (ad starts)&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Midroll || &amp;lt;code&amp;gt;[nielsenMeter loadMetadata: midrollMetadataObject];&amp;lt;/code&amp;gt; || // midrollMetadataObject contains the JSON metadata for the midroll ad&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter playheadPosition: position];&amp;lt;/code&amp;gt; || // position is position of the playhead while the midroll ad is being played&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter stop];&amp;lt;/code&amp;gt; || // Call stop after midroll occurs&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Content (End of stream) || &amp;lt;code&amp;gt;[nielsenMeter loadMetadata: contentMetadataObject];&amp;lt;/code&amp;gt; || // contentMetadataObject contains the JSON metadata for the content being played&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter playheadPosition: position];&amp;lt;/code&amp;gt; || // position is position of the playhead while the content is being played&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter end];&amp;lt;/code&amp;gt; || // Called at the end of content&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Postroll || &amp;lt;code&amp;gt;[nielsenMeter loadMetadata: postrollMetadataObject];&amp;lt;/code&amp;gt; || // postrollMetadataObject contains the JSON metadata for the postroll ad&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter playheadPosition: position];&amp;lt;/code&amp;gt; || // position is position of the playhead while the postroll ad is being played&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter stop];&amp;lt;/code&amp;gt; || // Call stop after postroll occurs&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;'''Note:''' Each Ad playhead should reset or begin from 0 at ad start. When content has resumed following an ad break, playhead position must continue from where previous content segment was left off.&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Nielsen Measurement Opt-Out Implementation ==&lt;br /&gt;
Opt-out implementation for podcasts is the same as live AM/FM stream measurement. &lt;br /&gt;
&lt;br /&gt;
== Technical Guides ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! style=&amp;quot;width: 90px;&amp;quot; | Type&lt;br /&gt;
! style=&amp;quot;width: 45px;&amp;quot; |&lt;br /&gt;
! style=&amp;quot;width: 45px;&amp;quot; | OS&lt;br /&gt;
! style=&amp;quot;width: 50%;&amp;quot; | DCR Implementation Guide&lt;br /&gt;
!| SDK Documentation&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;7&amp;quot; | {{SmallIcon|SDKIcon.png|alt=SDK}}&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | {{OSIcon|VideoIcon.png|alt=Video}}&lt;br /&gt;
| {{OSIcon|macOSIcon.png|alt=iOS}}&lt;br /&gt;
| '''[[DCR Video iOS SDK]]'''&lt;br /&gt;
| [[iOS SDK API Reference]]&lt;br /&gt;
|-&lt;br /&gt;
| {{OSIcon|AndroidIcon.png|alt=Android}}&lt;br /&gt;
| '''[[DCR Video Android SDK]]'''&lt;br /&gt;
| [[Android SDK API Reference]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;width: 90px;&amp;quot; |&lt;br /&gt;
! style=&amp;quot;width: 42%;&amp;quot; | Technical Guides&lt;br /&gt;
!&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;7&amp;quot; | {{SmallIcon|DigitalIcon.png}}&lt;br /&gt;
| '''[[Digital Measurement Onboarding]]'''&lt;br /&gt;
| '''[[Digital Measurement Metadata]]'''&lt;br /&gt;
|-&lt;br /&gt;
| '''[[Digital Measurement Testing]]'''&lt;br /&gt;
| '''[[Digital Measurement Interruption Scenarios]]'''&lt;br /&gt;
|-&lt;br /&gt;
| '''[[Digital Measurement FAQ]]'''&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| '''[[Digital Pre-Certification Checklist App SDK]]'''&lt;br /&gt;
| '''[[Digital Pre-Certification Checklist Browser SDK]]'''&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>KimBritt</name></author>
	</entry>
	<entry>
		<id>https://nielsentest.mywikis.net/w/index.php?title=DCR_Podcasts_in_Digital&amp;diff=2236</id>
		<title>DCR Podcasts in Digital</title>
		<link rel="alternate" type="text/html" href="https://nielsentest.mywikis.net/w/index.php?title=DCR_Podcasts_in_Digital&amp;diff=2236"/>
		<updated>2017-12-13T15:02:58Z</updated>

		<summary type="html">&lt;p&gt;KimBritt: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Breadcrumb|}} {{Breadcrumb|Digital}} {{CurrentBreadcrumb}}&lt;br /&gt;
[[Category:Digital]]&lt;br /&gt;
&lt;br /&gt;
== Steps ==&lt;br /&gt;
This document assumes you have implemented Digital Audio with Live AM/FM stream measurement.    It outlines the new parameters you will use to implement podcast measurement with the DCR content type.  &lt;br /&gt;
&lt;br /&gt;
# Send a list of your podcasts or programs to your TAM &lt;br /&gt;
#Update the parameters you use to call the SDK play and playheadPosition. Reference the appropriate [[Podcasts|Changes for Podcast Measurement]]  below.&lt;br /&gt;
#Obtain Nielsen Podcast certification once your changes are complete and tested &lt;br /&gt;
#Complete a Production License with your Nielsen Account Representative&lt;br /&gt;
=== Library ===&lt;br /&gt;
Use the same library as Digital Audio, live AM/FM stream measurement.&lt;br /&gt;
&lt;br /&gt;
== Changes for Podcast Measurement ==&lt;br /&gt;
=== play ===&lt;br /&gt;
Continue to use [[play]] to pass the channel descriptor information through the channelName parameter when the user taps the '''Play''' button on the player. &lt;br /&gt;
&lt;br /&gt;
=== loadMetadata ===&lt;br /&gt;
Use [[loadMetadata]] to pass 'content' and 'ad' [[Digital Measurement Metadata]]. The CMS data must be passed as a JSON object.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;objective-c&amp;quot;&amp;gt;    – (void) loadMetadata :(id)metadata;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Refer to [[loadMetadata]] for the list of parameters to be passed in the JSON object.&lt;br /&gt;
&amp;lt;blockquote&amp;gt;'''Note:''' The [[loadMetadata]] call after the first [[play]] call must have ‘content’ details (&amp;quot;type&amp;quot;: &amp;quot;content&amp;quot;). This call should occur before any preroll ad starts playing.&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== playheadPosition for &amp;quot;content&amp;quot; ===&lt;br /&gt;
You will continue to use [[playheadPosition]] to pass the position of the playhead while the content is being played; however, you will pass the relative position from the beginning of the file.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;objective-c&amp;quot;&amp;gt;    – (void) playheadPosition: (long long) playheadPos&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Key !! Description !! Values !! Required? (Y/N) !! Example&lt;br /&gt;
|-&lt;br /&gt;
| On-Demand Audio || Position taken from beginning of the content in seconds. || Client-defined || Yes || Current player position from beginning of the content.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
''' playheadPosition Syntax Example for iOS'''&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;objective-c&amp;quot;&amp;gt;    CMTime curTime=[player currentTime];&lt;br /&gt;
    long pos=CMTimeGetSeconds(curTime);&lt;br /&gt;
    [nAppApiObject playheadPosition:pos];&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== API Call sequence ===&lt;br /&gt;
==== Use Case 1: Content has no Advertisements ====&lt;br /&gt;
Use the sample API sequence below as a reference to identify the specific events that need to be called during content playback without ads.&lt;br /&gt;
&lt;br /&gt;
Call [[play]] with channelName JSON as below.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;json&amp;quot;&amp;gt;{&lt;br /&gt;
   &amp;quot;channelName&amp;quot;: &amp;quot;TheMovieTitle&amp;quot;&lt;br /&gt;
}&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Call [[loadMetadata]] with JSON metadata for content as below.&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;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;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;
  &amp;quot;progen&amp;quot;:&amp;quot;GV&amp;quot;&lt;br /&gt;
}&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Call [[playheadPosition]] every one second until a pause / stop.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Type !! Sample code !! Description&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | Start of stream || &amp;lt;code&amp;gt;[nielsenMeter play: channelName];&amp;lt;/code&amp;gt; || // channelName contains JSON metadata of channel/video name being played&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter loadMetadata: contentMetadataObject];&amp;lt;/code&amp;gt; || // contentMetadataObject contains the JSON metadata for the content being played&lt;br /&gt;
|-&lt;br /&gt;
| Content || &amp;lt;code&amp;gt;[nielsenMeter playheadPosition: position];&amp;lt;/code&amp;gt; || // playheadPosition is position of the playhead while the content is being played&lt;br /&gt;
|-&lt;br /&gt;
| End of Stream || &amp;lt;code&amp;gt;[nielsenMeter end];&amp;lt;/code&amp;gt; || // Content playback is completed.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Use Case 2: Content has Advertisements ====&lt;br /&gt;
Call [[play]] with channelName JSON as below.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;json&amp;quot;&amp;gt;{&lt;br /&gt;
   &amp;quot;channelName&amp;quot;: &amp;quot;TheMovieTitle&amp;quot;&lt;br /&gt;
}&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Call [[loadMetadata]] with JSON metadata for ad as below.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;json&amp;quot;&amp;gt;{&lt;br /&gt;
   &amp;quot;type&amp;quot;: &amp;quot;preroll&amp;quot;,&lt;br /&gt;
   &amp;quot;assetid&amp;quot;: &amp;quot;ad=123&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 [[loadMetadata]] and playhead position through [[playheadPosition]].&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Call [[playheadPosition]] every two seconds until a pause / stop / another ''loadMetadata'' is called. Playhead should be passed for the entire duration of ad pod, if the ad pod details are passed as part of [[loadMetadata]].&lt;br /&gt;
&lt;br /&gt;
The sample API sequence can be used as a reference to identify the specific events that need to be called during content and ad playback.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Type !! Sample code !! Description&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | Start of stream || &amp;lt;code&amp;gt;[nielsenMeter play: channelName];&amp;lt;/code&amp;gt; || // channelName contains JSON metadata of channel/video name being played&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter loadMetadata: contentMetadataObject];&amp;lt;/code&amp;gt; || // contentMetadataObject contains the JSON metadata for the content being played&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Preroll || &amp;lt;code&amp;gt;[nielsenMeter loadMetadata: prerollMetadataObject];&amp;lt;/code&amp;gt; || // prerollMetadataObject contains the JSON metadata for the preroll ad&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter playheadPosition: position];&amp;lt;/code&amp;gt; || // position is position of the playhead while the preroll ad is being played&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter stop];&amp;lt;/code&amp;gt; || // Call stop after preroll occurs&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Content || &amp;lt;code&amp;gt;[nielsenMeter loadMetadata: contentMetadataObject];&amp;lt;/code&amp;gt; || // contentMetadataObject contains the JSON metadata for the content being played&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter playheadPosition: position];&amp;lt;/code&amp;gt; || // position is position of the playhead while the content is being played&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter stop];&amp;lt;/code&amp;gt; || // Call stop after the content is paused (ad starts)&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Midroll || &amp;lt;code&amp;gt;[nielsenMeter loadMetadata: midrollMetadataObject];&amp;lt;/code&amp;gt; || // midrollMetadataObject contains the JSON metadata for the midroll ad&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter playheadPosition: position];&amp;lt;/code&amp;gt; || // position is position of the playhead while the midroll ad is being played&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter stop];&amp;lt;/code&amp;gt; || // Call stop after midroll occurs&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Content (End of stream) || &amp;lt;code&amp;gt;[nielsenMeter loadMetadata: contentMetadataObject];&amp;lt;/code&amp;gt; || // contentMetadataObject contains the JSON metadata for the content being played&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter playheadPosition: position];&amp;lt;/code&amp;gt; || // position is position of the playhead while the content is being played&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter end];&amp;lt;/code&amp;gt; || // Called at the end of content&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Postroll || &amp;lt;code&amp;gt;[nielsenMeter loadMetadata: postrollMetadataObject];&amp;lt;/code&amp;gt; || // postrollMetadataObject contains the JSON metadata for the postroll ad&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter playheadPosition: position];&amp;lt;/code&amp;gt; || // position is position of the playhead while the postroll ad is being played&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter stop];&amp;lt;/code&amp;gt; || // Call stop after postroll occurs&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;'''Note:''' Each Ad playhead should reset or begin from 0 at ad start. When content has resumed following an ad break, playhead position must continue from where previous content segment was left off.&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Nielsen Measurement Opt-Out Implementation ==&lt;br /&gt;
Opt-out implementation for podcasts is the same as live AM/FM stream measurement. &lt;br /&gt;
&lt;br /&gt;
== Technical Guides ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! style=&amp;quot;width: 90px;&amp;quot; | Type&lt;br /&gt;
! style=&amp;quot;width: 45px;&amp;quot; |&lt;br /&gt;
! style=&amp;quot;width: 45px;&amp;quot; | OS&lt;br /&gt;
! style=&amp;quot;width: 50%;&amp;quot; | DCR Implementation Guide&lt;br /&gt;
!| SDK Documentation&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;7&amp;quot; | {{SmallIcon|SDKIcon.png|alt=SDK}}&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | {{OSIcon|VideoIcon.png|alt=Video}}&lt;br /&gt;
| {{OSIcon|macOSIcon.png|alt=iOS}}&lt;br /&gt;
| '''[[DCR Video iOS SDK]]'''&lt;br /&gt;
| [[iOS SDK API Reference]]&lt;br /&gt;
|-&lt;br /&gt;
| {{OSIcon|AndroidIcon.png|alt=Android}}&lt;br /&gt;
| '''[[DCR Video Android SDK]]'''&lt;br /&gt;
| [[Android SDK API Reference]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;width: 90px;&amp;quot; |&lt;br /&gt;
! style=&amp;quot;width: 42%;&amp;quot; | Technical Guides&lt;br /&gt;
!&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;7&amp;quot; | {{SmallIcon|DigitalIcon.png}}&lt;br /&gt;
| '''[[Digital Measurement Onboarding]]'''&lt;br /&gt;
| '''[[Digital Measurement Metadata]]'''&lt;br /&gt;
|-&lt;br /&gt;
| '''[[Digital Measurement Testing]]'''&lt;br /&gt;
| '''[[Digital Measurement Interruption Scenarios]]'''&lt;br /&gt;
|-&lt;br /&gt;
| '''[[Digital Measurement FAQ]]'''&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| '''[[Digital Pre-Certification Checklist App SDK]]'''&lt;br /&gt;
| '''[[Digital Pre-Certification Checklist Browser SDK]]'''&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>KimBritt</name></author>
	</entry>
	<entry>
		<id>https://nielsentest.mywikis.net/w/index.php?title=DCR_Podcasts_in_Digital&amp;diff=2235</id>
		<title>DCR Podcasts in Digital</title>
		<link rel="alternate" type="text/html" href="https://nielsentest.mywikis.net/w/index.php?title=DCR_Podcasts_in_Digital&amp;diff=2235"/>
		<updated>2017-12-13T15:00:41Z</updated>

		<summary type="html">&lt;p&gt;KimBritt: updated url&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Breadcrumb|}} {{Breadcrumb|Digital}} {{CurrentBreadcrumb}}&lt;br /&gt;
[[Category:Digital]]&lt;br /&gt;
&lt;br /&gt;
== Steps ==&lt;br /&gt;
This document assumes you have implemented Digital Audio with Live AM/FM stream measurement.    It outlines the new parameters you will use to implement podcast measurement with the DCR content type.  &lt;br /&gt;
&lt;br /&gt;
# Send a list of your podcasts or programs to your TAM &lt;br /&gt;
#Update the parameters you use to call the SDK play and playheadPosition. Reference the appropriate [[Changes for Podcast Measurement]]  below.&lt;br /&gt;
#Obtain Nielsen Podcast certification once your changes are complete and tested &lt;br /&gt;
#Complete a Production License with your Nielsen Account Representative&lt;br /&gt;
=== Library ===&lt;br /&gt;
Use the same library as Digital Audio, live AM/FM stream measurement.&lt;br /&gt;
&lt;br /&gt;
== Changes for Podcast Measurement ==&lt;br /&gt;
=== play ===&lt;br /&gt;
Continue to use [[play]] to pass the channel descriptor information through the channelName parameter when the user taps the '''Play''' button on the player. &lt;br /&gt;
&lt;br /&gt;
=== loadMetadata ===&lt;br /&gt;
Use [[loadMetadata]] to pass 'content' and 'ad' [[Digital Measurement Metadata]]. The CMS data must be passed as a JSON object.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;objective-c&amp;quot;&amp;gt;    – (void) loadMetadata :(id)metadata;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Refer to [[loadMetadata]] for the list of parameters to be passed in the JSON object.&lt;br /&gt;
&amp;lt;blockquote&amp;gt;'''Note:''' The [[loadMetadata]] call after the first [[play]] call must have ‘content’ details (&amp;quot;type&amp;quot;: &amp;quot;content&amp;quot;). This call should occur before any preroll ad starts playing.&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== playheadPosition for &amp;quot;content&amp;quot; ===&lt;br /&gt;
You will continue to use [[playheadPosition]] to pass the position of the playhead while the content is being played; however, you will pass the relative position from the beginning of the file.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;objective-c&amp;quot;&amp;gt;    – (void) playheadPosition: (long long) playheadPos&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Key !! Description !! Values !! Required? (Y/N) !! Example&lt;br /&gt;
|-&lt;br /&gt;
| On-Demand Audio || Position taken from beginning of the content in seconds. || Client-defined || Yes || Current player position from beginning of the content.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
''' playheadPosition Syntax Example for iOS'''&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;objective-c&amp;quot;&amp;gt;    CMTime curTime=[player currentTime];&lt;br /&gt;
    long pos=CMTimeGetSeconds(curTime);&lt;br /&gt;
    [nAppApiObject playheadPosition:pos];&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== API Call sequence ===&lt;br /&gt;
==== Use Case 1: Content has no Advertisements ====&lt;br /&gt;
Use the sample API sequence below as a reference to identify the specific events that need to be called during content playback without ads.&lt;br /&gt;
&lt;br /&gt;
Call [[play]] with channelName JSON as below.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;json&amp;quot;&amp;gt;{&lt;br /&gt;
   &amp;quot;channelName&amp;quot;: &amp;quot;TheMovieTitle&amp;quot;&lt;br /&gt;
}&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Call [[loadMetadata]] with JSON metadata for content as below.&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;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;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;
  &amp;quot;progen&amp;quot;:&amp;quot;GV&amp;quot;&lt;br /&gt;
}&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Call [[playheadPosition]] every one second until a pause / stop.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Type !! Sample code !! Description&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | Start of stream || &amp;lt;code&amp;gt;[nielsenMeter play: channelName];&amp;lt;/code&amp;gt; || // channelName contains JSON metadata of channel/video name being played&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter loadMetadata: contentMetadataObject];&amp;lt;/code&amp;gt; || // contentMetadataObject contains the JSON metadata for the content being played&lt;br /&gt;
|-&lt;br /&gt;
| Content || &amp;lt;code&amp;gt;[nielsenMeter playheadPosition: position];&amp;lt;/code&amp;gt; || // playheadPosition is position of the playhead while the content is being played&lt;br /&gt;
|-&lt;br /&gt;
| End of Stream || &amp;lt;code&amp;gt;[nielsenMeter end];&amp;lt;/code&amp;gt; || // Content playback is completed.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Use Case 2: Content has Advertisements ====&lt;br /&gt;
Call [[play]] with channelName JSON as below.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;json&amp;quot;&amp;gt;{&lt;br /&gt;
   &amp;quot;channelName&amp;quot;: &amp;quot;TheMovieTitle&amp;quot;&lt;br /&gt;
}&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Call [[loadMetadata]] with JSON metadata for ad as below.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;json&amp;quot;&amp;gt;{&lt;br /&gt;
   &amp;quot;type&amp;quot;: &amp;quot;preroll&amp;quot;,&lt;br /&gt;
   &amp;quot;assetid&amp;quot;: &amp;quot;ad=123&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 [[loadMetadata]] and playhead position through [[playheadPosition]].&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Call [[playheadPosition]] every two seconds until a pause / stop / another ''loadMetadata'' is called. Playhead should be passed for the entire duration of ad pod, if the ad pod details are passed as part of [[loadMetadata]].&lt;br /&gt;
&lt;br /&gt;
The sample API sequence can be used as a reference to identify the specific events that need to be called during content and ad playback.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Type !! Sample code !! Description&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | Start of stream || &amp;lt;code&amp;gt;[nielsenMeter play: channelName];&amp;lt;/code&amp;gt; || // channelName contains JSON metadata of channel/video name being played&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter loadMetadata: contentMetadataObject];&amp;lt;/code&amp;gt; || // contentMetadataObject contains the JSON metadata for the content being played&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Preroll || &amp;lt;code&amp;gt;[nielsenMeter loadMetadata: prerollMetadataObject];&amp;lt;/code&amp;gt; || // prerollMetadataObject contains the JSON metadata for the preroll ad&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter playheadPosition: position];&amp;lt;/code&amp;gt; || // position is position of the playhead while the preroll ad is being played&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter stop];&amp;lt;/code&amp;gt; || // Call stop after preroll occurs&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Content || &amp;lt;code&amp;gt;[nielsenMeter loadMetadata: contentMetadataObject];&amp;lt;/code&amp;gt; || // contentMetadataObject contains the JSON metadata for the content being played&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter playheadPosition: position];&amp;lt;/code&amp;gt; || // position is position of the playhead while the content is being played&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter stop];&amp;lt;/code&amp;gt; || // Call stop after the content is paused (ad starts)&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Midroll || &amp;lt;code&amp;gt;[nielsenMeter loadMetadata: midrollMetadataObject];&amp;lt;/code&amp;gt; || // midrollMetadataObject contains the JSON metadata for the midroll ad&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter playheadPosition: position];&amp;lt;/code&amp;gt; || // position is position of the playhead while the midroll ad is being played&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter stop];&amp;lt;/code&amp;gt; || // Call stop after midroll occurs&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Content (End of stream) || &amp;lt;code&amp;gt;[nielsenMeter loadMetadata: contentMetadataObject];&amp;lt;/code&amp;gt; || // contentMetadataObject contains the JSON metadata for the content being played&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter playheadPosition: position];&amp;lt;/code&amp;gt; || // position is position of the playhead while the content is being played&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter end];&amp;lt;/code&amp;gt; || // Called at the end of content&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Postroll || &amp;lt;code&amp;gt;[nielsenMeter loadMetadata: postrollMetadataObject];&amp;lt;/code&amp;gt; || // postrollMetadataObject contains the JSON metadata for the postroll ad&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter playheadPosition: position];&amp;lt;/code&amp;gt; || // position is position of the playhead while the postroll ad is being played&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter stop];&amp;lt;/code&amp;gt; || // Call stop after postroll occurs&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;'''Note:''' Each Ad playhead should reset or begin from 0 at ad start. When content has resumed following an ad break, playhead position must continue from where previous content segment was left off.&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Nielsen Measurement Opt-Out Implementation ==&lt;br /&gt;
Opt-out implementation for podcasts is the same as live AM/FM stream measurement. &lt;br /&gt;
&lt;br /&gt;
== Technical Guides ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! style=&amp;quot;width: 90px;&amp;quot; | Type&lt;br /&gt;
! style=&amp;quot;width: 45px;&amp;quot; |&lt;br /&gt;
! style=&amp;quot;width: 45px;&amp;quot; | OS&lt;br /&gt;
! style=&amp;quot;width: 50%;&amp;quot; | DCR Implementation Guide&lt;br /&gt;
!| SDK Documentation&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;7&amp;quot; | {{SmallIcon|SDKIcon.png|alt=SDK}}&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | {{OSIcon|VideoIcon.png|alt=Video}}&lt;br /&gt;
| {{OSIcon|macOSIcon.png|alt=iOS}}&lt;br /&gt;
| '''[[DCR Video iOS SDK]]'''&lt;br /&gt;
| [[iOS SDK API Reference]]&lt;br /&gt;
|-&lt;br /&gt;
| {{OSIcon|AndroidIcon.png|alt=Android}}&lt;br /&gt;
| '''[[DCR Video Android SDK]]'''&lt;br /&gt;
| [[Android SDK API Reference]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;width: 90px;&amp;quot; |&lt;br /&gt;
! style=&amp;quot;width: 42%;&amp;quot; | Technical Guides&lt;br /&gt;
!&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;7&amp;quot; | {{SmallIcon|DigitalIcon.png}}&lt;br /&gt;
| '''[[Digital Measurement Onboarding]]'''&lt;br /&gt;
| '''[[Digital Measurement Metadata]]'''&lt;br /&gt;
|-&lt;br /&gt;
| '''[[Digital Measurement Testing]]'''&lt;br /&gt;
| '''[[Digital Measurement Interruption Scenarios]]'''&lt;br /&gt;
|-&lt;br /&gt;
| '''[[Digital Measurement FAQ]]'''&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| '''[[Digital Pre-Certification Checklist App SDK]]'''&lt;br /&gt;
| '''[[Digital Pre-Certification Checklist Browser SDK]]'''&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>KimBritt</name></author>
	</entry>
	<entry>
		<id>https://nielsentest.mywikis.net/w/index.php?title=DCR_Podcasts_in_Digital&amp;diff=2234</id>
		<title>DCR Podcasts in Digital</title>
		<link rel="alternate" type="text/html" href="https://nielsentest.mywikis.net/w/index.php?title=DCR_Podcasts_in_Digital&amp;diff=2234"/>
		<updated>2017-12-13T15:00:14Z</updated>

		<summary type="html">&lt;p&gt;KimBritt: changes for podcasts&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Breadcrumb|}} {{Breadcrumb|Digital}} {{CurrentBreadcrumb}}&lt;br /&gt;
[[Category:Digital]]&lt;br /&gt;
&lt;br /&gt;
== Steps ==&lt;br /&gt;
This document assumes you have implemented Digital Audio with Live AM/FM stream measurement.    It outlines the new parameters you will use to implement podcast measurement with the DCR content type.  &lt;br /&gt;
&lt;br /&gt;
# Send a list of your podcasts or programs to your TAM &lt;br /&gt;
#Update the parameters you use to call the SDK play and playheadPosition. Reference the appropriate [[Podcasts#Changes for Podcast Measurement]]  below.&lt;br /&gt;
#Obtain Nielsen Podcast certification once your changes are complete and tested &lt;br /&gt;
#Complete a Production License with your Nielsen Account Representative&lt;br /&gt;
=== Library ===&lt;br /&gt;
Use the same library as Digital Audio, live AM/FM stream measurement.&lt;br /&gt;
&lt;br /&gt;
== Changes for Podcast Measurement ==&lt;br /&gt;
=== play ===&lt;br /&gt;
Continue to use [[play]] to pass the channel descriptor information through the channelName parameter when the user taps the '''Play''' button on the player. &lt;br /&gt;
&lt;br /&gt;
=== loadMetadata ===&lt;br /&gt;
Use [[loadMetadata]] to pass 'content' and 'ad' [[Digital Measurement Metadata]]. The CMS data must be passed as a JSON object.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;objective-c&amp;quot;&amp;gt;    – (void) loadMetadata :(id)metadata;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Refer to [[loadMetadata]] for the list of parameters to be passed in the JSON object.&lt;br /&gt;
&amp;lt;blockquote&amp;gt;'''Note:''' The [[loadMetadata]] call after the first [[play]] call must have ‘content’ details (&amp;quot;type&amp;quot;: &amp;quot;content&amp;quot;). This call should occur before any preroll ad starts playing.&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== playheadPosition for &amp;quot;content&amp;quot; ===&lt;br /&gt;
You will continue to use [[playheadPosition]] to pass the position of the playhead while the content is being played; however, you will pass the relative position from the beginning of the file.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;objective-c&amp;quot;&amp;gt;    – (void) playheadPosition: (long long) playheadPos&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Key !! Description !! Values !! Required? (Y/N) !! Example&lt;br /&gt;
|-&lt;br /&gt;
| On-Demand Audio || Position taken from beginning of the content in seconds. || Client-defined || Yes || Current player position from beginning of the content.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
''' playheadPosition Syntax Example for iOS'''&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;objective-c&amp;quot;&amp;gt;    CMTime curTime=[player currentTime];&lt;br /&gt;
    long pos=CMTimeGetSeconds(curTime);&lt;br /&gt;
    [nAppApiObject playheadPosition:pos];&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== API Call sequence ===&lt;br /&gt;
==== Use Case 1: Content has no Advertisements ====&lt;br /&gt;
Use the sample API sequence below as a reference to identify the specific events that need to be called during content playback without ads.&lt;br /&gt;
&lt;br /&gt;
Call [[play]] with channelName JSON as below.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;json&amp;quot;&amp;gt;{&lt;br /&gt;
   &amp;quot;channelName&amp;quot;: &amp;quot;TheMovieTitle&amp;quot;&lt;br /&gt;
}&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Call [[loadMetadata]] with JSON metadata for content as below.&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;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;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;
  &amp;quot;progen&amp;quot;:&amp;quot;GV&amp;quot;&lt;br /&gt;
}&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Call [[playheadPosition]] every one second until a pause / stop.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Type !! Sample code !! Description&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | Start of stream || &amp;lt;code&amp;gt;[nielsenMeter play: channelName];&amp;lt;/code&amp;gt; || // channelName contains JSON metadata of channel/video name being played&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter loadMetadata: contentMetadataObject];&amp;lt;/code&amp;gt; || // contentMetadataObject contains the JSON metadata for the content being played&lt;br /&gt;
|-&lt;br /&gt;
| Content || &amp;lt;code&amp;gt;[nielsenMeter playheadPosition: position];&amp;lt;/code&amp;gt; || // playheadPosition is position of the playhead while the content is being played&lt;br /&gt;
|-&lt;br /&gt;
| End of Stream || &amp;lt;code&amp;gt;[nielsenMeter end];&amp;lt;/code&amp;gt; || // Content playback is completed.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Use Case 2: Content has Advertisements ====&lt;br /&gt;
Call [[play]] with channelName JSON as below.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;json&amp;quot;&amp;gt;{&lt;br /&gt;
   &amp;quot;channelName&amp;quot;: &amp;quot;TheMovieTitle&amp;quot;&lt;br /&gt;
}&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Call [[loadMetadata]] with JSON metadata for ad as below.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;json&amp;quot;&amp;gt;{&lt;br /&gt;
   &amp;quot;type&amp;quot;: &amp;quot;preroll&amp;quot;,&lt;br /&gt;
   &amp;quot;assetid&amp;quot;: &amp;quot;ad=123&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 [[loadMetadata]] and playhead position through [[playheadPosition]].&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Call [[playheadPosition]] every two seconds until a pause / stop / another ''loadMetadata'' is called. Playhead should be passed for the entire duration of ad pod, if the ad pod details are passed as part of [[loadMetadata]].&lt;br /&gt;
&lt;br /&gt;
The sample API sequence can be used as a reference to identify the specific events that need to be called during content and ad playback.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Type !! Sample code !! Description&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | Start of stream || &amp;lt;code&amp;gt;[nielsenMeter play: channelName];&amp;lt;/code&amp;gt; || // channelName contains JSON metadata of channel/video name being played&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter loadMetadata: contentMetadataObject];&amp;lt;/code&amp;gt; || // contentMetadataObject contains the JSON metadata for the content being played&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Preroll || &amp;lt;code&amp;gt;[nielsenMeter loadMetadata: prerollMetadataObject];&amp;lt;/code&amp;gt; || // prerollMetadataObject contains the JSON metadata for the preroll ad&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter playheadPosition: position];&amp;lt;/code&amp;gt; || // position is position of the playhead while the preroll ad is being played&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter stop];&amp;lt;/code&amp;gt; || // Call stop after preroll occurs&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Content || &amp;lt;code&amp;gt;[nielsenMeter loadMetadata: contentMetadataObject];&amp;lt;/code&amp;gt; || // contentMetadataObject contains the JSON metadata for the content being played&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter playheadPosition: position];&amp;lt;/code&amp;gt; || // position is position of the playhead while the content is being played&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter stop];&amp;lt;/code&amp;gt; || // Call stop after the content is paused (ad starts)&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Midroll || &amp;lt;code&amp;gt;[nielsenMeter loadMetadata: midrollMetadataObject];&amp;lt;/code&amp;gt; || // midrollMetadataObject contains the JSON metadata for the midroll ad&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter playheadPosition: position];&amp;lt;/code&amp;gt; || // position is position of the playhead while the midroll ad is being played&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter stop];&amp;lt;/code&amp;gt; || // Call stop after midroll occurs&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Content (End of stream) || &amp;lt;code&amp;gt;[nielsenMeter loadMetadata: contentMetadataObject];&amp;lt;/code&amp;gt; || // contentMetadataObject contains the JSON metadata for the content being played&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter playheadPosition: position];&amp;lt;/code&amp;gt; || // position is position of the playhead while the content is being played&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter end];&amp;lt;/code&amp;gt; || // Called at the end of content&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Postroll || &amp;lt;code&amp;gt;[nielsenMeter loadMetadata: postrollMetadataObject];&amp;lt;/code&amp;gt; || // postrollMetadataObject contains the JSON metadata for the postroll ad&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter playheadPosition: position];&amp;lt;/code&amp;gt; || // position is position of the playhead while the postroll ad is being played&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter stop];&amp;lt;/code&amp;gt; || // Call stop after postroll occurs&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;'''Note:''' Each Ad playhead should reset or begin from 0 at ad start. When content has resumed following an ad break, playhead position must continue from where previous content segment was left off.&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Nielsen Measurement Opt-Out Implementation ==&lt;br /&gt;
Opt-out implementation for podcasts is the same as live AM/FM stream measurement. &lt;br /&gt;
&lt;br /&gt;
== Technical Guides ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! style=&amp;quot;width: 90px;&amp;quot; | Type&lt;br /&gt;
! style=&amp;quot;width: 45px;&amp;quot; |&lt;br /&gt;
! style=&amp;quot;width: 45px;&amp;quot; | OS&lt;br /&gt;
! style=&amp;quot;width: 50%;&amp;quot; | DCR Implementation Guide&lt;br /&gt;
!| SDK Documentation&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;7&amp;quot; | {{SmallIcon|SDKIcon.png|alt=SDK}}&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | {{OSIcon|VideoIcon.png|alt=Video}}&lt;br /&gt;
| {{OSIcon|macOSIcon.png|alt=iOS}}&lt;br /&gt;
| '''[[DCR Video iOS SDK]]'''&lt;br /&gt;
| [[iOS SDK API Reference]]&lt;br /&gt;
|-&lt;br /&gt;
| {{OSIcon|AndroidIcon.png|alt=Android}}&lt;br /&gt;
| '''[[DCR Video Android SDK]]'''&lt;br /&gt;
| [[Android SDK API Reference]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;width: 90px;&amp;quot; |&lt;br /&gt;
! style=&amp;quot;width: 42%;&amp;quot; | Technical Guides&lt;br /&gt;
!&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;7&amp;quot; | {{SmallIcon|DigitalIcon.png}}&lt;br /&gt;
| '''[[Digital Measurement Onboarding]]'''&lt;br /&gt;
| '''[[Digital Measurement Metadata]]'''&lt;br /&gt;
|-&lt;br /&gt;
| '''[[Digital Measurement Testing]]'''&lt;br /&gt;
| '''[[Digital Measurement Interruption Scenarios]]'''&lt;br /&gt;
|-&lt;br /&gt;
| '''[[Digital Measurement FAQ]]'''&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| '''[[Digital Pre-Certification Checklist App SDK]]'''&lt;br /&gt;
| '''[[Digital Pre-Certification Checklist Browser SDK]]'''&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>KimBritt</name></author>
	</entry>
	<entry>
		<id>https://nielsentest.mywikis.net/w/index.php?title=DCR_Podcasts_in_Digital&amp;diff=2233</id>
		<title>DCR Podcasts in Digital</title>
		<link rel="alternate" type="text/html" href="https://nielsentest.mywikis.net/w/index.php?title=DCR_Podcasts_in_Digital&amp;diff=2233"/>
		<updated>2017-12-13T14:59:31Z</updated>

		<summary type="html">&lt;p&gt;KimBritt: the&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Breadcrumb|}} {{Breadcrumb|Digital}} {{CurrentBreadcrumb}}&lt;br /&gt;
[[Category:Digital]]&lt;br /&gt;
&lt;br /&gt;
== Steps ==&lt;br /&gt;
This document assumes you have implemented Digital Audio with Live AM/FM stream measurement.    It outlines the new parameters you will use to implement podcast measurement with the DCR content type.  &lt;br /&gt;
&lt;br /&gt;
# Send a list of your podcasts or programs to your TAM &lt;br /&gt;
#Update the parameters you use to call the SDK play and playheadPosition. Reference the appropriate [[Podcasts#Parameters]]  below.&lt;br /&gt;
#Obtain Nielsen Podcast certification once your changes are complete and tested &lt;br /&gt;
#Complete a Production License with your Nielsen Account Representative&lt;br /&gt;
=== Library ===&lt;br /&gt;
Use the same library as Digital Audio, live AM/FM stream measurement.&lt;br /&gt;
&lt;br /&gt;
== Changes for Podcast Measurement ==&lt;br /&gt;
=== play ===&lt;br /&gt;
Continue to use [[play]] to pass the channel descriptor information through the channelName parameter when the user taps the '''Play''' button on the player. &lt;br /&gt;
&lt;br /&gt;
=== loadMetadata ===&lt;br /&gt;
Use [[loadMetadata]] to pass 'content' and 'ad' [[Digital Measurement Metadata]]. The CMS data must be passed as a JSON object.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;objective-c&amp;quot;&amp;gt;    – (void) loadMetadata :(id)metadata;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Refer to [[loadMetadata]] for the list of parameters to be passed in the JSON object.&lt;br /&gt;
&amp;lt;blockquote&amp;gt;'''Note:''' The [[loadMetadata]] call after the first [[play]] call must have ‘content’ details (&amp;quot;type&amp;quot;: &amp;quot;content&amp;quot;). This call should occur before any preroll ad starts playing.&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== playheadPosition for &amp;quot;content&amp;quot; ===&lt;br /&gt;
You will continue to use [[playheadPosition]] to pass the position of the playhead while the content is being played; however, you will pass the relative position from the beginning of the file.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;objective-c&amp;quot;&amp;gt;    – (void) playheadPosition: (long long) playheadPos&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Key !! Description !! Values !! Required? (Y/N) !! Example&lt;br /&gt;
|-&lt;br /&gt;
| On-Demand Audio || Position taken from beginning of the content in seconds. || Client-defined || Yes || Current player position from beginning of the content.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
''' playheadPosition Syntax Example for iOS'''&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;objective-c&amp;quot;&amp;gt;    CMTime curTime=[player currentTime];&lt;br /&gt;
    long pos=CMTimeGetSeconds(curTime);&lt;br /&gt;
    [nAppApiObject playheadPosition:pos];&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== API Call sequence ===&lt;br /&gt;
==== Use Case 1: Content has no Advertisements ====&lt;br /&gt;
Use the sample API sequence below as a reference to identify the specific events that need to be called during content playback without ads.&lt;br /&gt;
&lt;br /&gt;
Call [[play]] with channelName JSON as below.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;json&amp;quot;&amp;gt;{&lt;br /&gt;
   &amp;quot;channelName&amp;quot;: &amp;quot;TheMovieTitle&amp;quot;&lt;br /&gt;
}&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Call [[loadMetadata]] with JSON metadata for content as below.&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;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;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;
  &amp;quot;progen&amp;quot;:&amp;quot;GV&amp;quot;&lt;br /&gt;
}&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Call [[playheadPosition]] every one second until a pause / stop.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Type !! Sample code !! Description&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | Start of stream || &amp;lt;code&amp;gt;[nielsenMeter play: channelName];&amp;lt;/code&amp;gt; || // channelName contains JSON metadata of channel/video name being played&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter loadMetadata: contentMetadataObject];&amp;lt;/code&amp;gt; || // contentMetadataObject contains the JSON metadata for the content being played&lt;br /&gt;
|-&lt;br /&gt;
| Content || &amp;lt;code&amp;gt;[nielsenMeter playheadPosition: position];&amp;lt;/code&amp;gt; || // playheadPosition is position of the playhead while the content is being played&lt;br /&gt;
|-&lt;br /&gt;
| End of Stream || &amp;lt;code&amp;gt;[nielsenMeter end];&amp;lt;/code&amp;gt; || // Content playback is completed.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Use Case 2: Content has Advertisements ====&lt;br /&gt;
Call [[play]] with channelName JSON as below.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;json&amp;quot;&amp;gt;{&lt;br /&gt;
   &amp;quot;channelName&amp;quot;: &amp;quot;TheMovieTitle&amp;quot;&lt;br /&gt;
}&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Call [[loadMetadata]] with JSON metadata for ad as below.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;json&amp;quot;&amp;gt;{&lt;br /&gt;
   &amp;quot;type&amp;quot;: &amp;quot;preroll&amp;quot;,&lt;br /&gt;
   &amp;quot;assetid&amp;quot;: &amp;quot;ad=123&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 [[loadMetadata]] and playhead position through [[playheadPosition]].&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Call [[playheadPosition]] every two seconds until a pause / stop / another ''loadMetadata'' is called. Playhead should be passed for the entire duration of ad pod, if the ad pod details are passed as part of [[loadMetadata]].&lt;br /&gt;
&lt;br /&gt;
The sample API sequence can be used as a reference to identify the specific events that need to be called during content and ad playback.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Type !! Sample code !! Description&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | Start of stream || &amp;lt;code&amp;gt;[nielsenMeter play: channelName];&amp;lt;/code&amp;gt; || // channelName contains JSON metadata of channel/video name being played&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter loadMetadata: contentMetadataObject];&amp;lt;/code&amp;gt; || // contentMetadataObject contains the JSON metadata for the content being played&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Preroll || &amp;lt;code&amp;gt;[nielsenMeter loadMetadata: prerollMetadataObject];&amp;lt;/code&amp;gt; || // prerollMetadataObject contains the JSON metadata for the preroll ad&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter playheadPosition: position];&amp;lt;/code&amp;gt; || // position is position of the playhead while the preroll ad is being played&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter stop];&amp;lt;/code&amp;gt; || // Call stop after preroll occurs&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Content || &amp;lt;code&amp;gt;[nielsenMeter loadMetadata: contentMetadataObject];&amp;lt;/code&amp;gt; || // contentMetadataObject contains the JSON metadata for the content being played&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter playheadPosition: position];&amp;lt;/code&amp;gt; || // position is position of the playhead while the content is being played&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter stop];&amp;lt;/code&amp;gt; || // Call stop after the content is paused (ad starts)&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Midroll || &amp;lt;code&amp;gt;[nielsenMeter loadMetadata: midrollMetadataObject];&amp;lt;/code&amp;gt; || // midrollMetadataObject contains the JSON metadata for the midroll ad&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter playheadPosition: position];&amp;lt;/code&amp;gt; || // position is position of the playhead while the midroll ad is being played&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter stop];&amp;lt;/code&amp;gt; || // Call stop after midroll occurs&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Content (End of stream) || &amp;lt;code&amp;gt;[nielsenMeter loadMetadata: contentMetadataObject];&amp;lt;/code&amp;gt; || // contentMetadataObject contains the JSON metadata for the content being played&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter playheadPosition: position];&amp;lt;/code&amp;gt; || // position is position of the playhead while the content is being played&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter end];&amp;lt;/code&amp;gt; || // Called at the end of content&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Postroll || &amp;lt;code&amp;gt;[nielsenMeter loadMetadata: postrollMetadataObject];&amp;lt;/code&amp;gt; || // postrollMetadataObject contains the JSON metadata for the postroll ad&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter playheadPosition: position];&amp;lt;/code&amp;gt; || // position is position of the playhead while the postroll ad is being played&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter stop];&amp;lt;/code&amp;gt; || // Call stop after postroll occurs&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;'''Note:''' Each Ad playhead should reset or begin from 0 at ad start. When content has resumed following an ad break, playhead position must continue from where previous content segment was left off.&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Nielsen Measurement Opt-Out Implementation ==&lt;br /&gt;
Opt-out implementation for podcasts is the same as live AM/FM stream measurement. &lt;br /&gt;
&lt;br /&gt;
== Technical Guides ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! style=&amp;quot;width: 90px;&amp;quot; | Type&lt;br /&gt;
! style=&amp;quot;width: 45px;&amp;quot; |&lt;br /&gt;
! style=&amp;quot;width: 45px;&amp;quot; | OS&lt;br /&gt;
! style=&amp;quot;width: 50%;&amp;quot; | DCR Implementation Guide&lt;br /&gt;
!| SDK Documentation&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;7&amp;quot; | {{SmallIcon|SDKIcon.png|alt=SDK}}&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | {{OSIcon|VideoIcon.png|alt=Video}}&lt;br /&gt;
| {{OSIcon|macOSIcon.png|alt=iOS}}&lt;br /&gt;
| '''[[DCR Video iOS SDK]]'''&lt;br /&gt;
| [[iOS SDK API Reference]]&lt;br /&gt;
|-&lt;br /&gt;
| {{OSIcon|AndroidIcon.png|alt=Android}}&lt;br /&gt;
| '''[[DCR Video Android SDK]]'''&lt;br /&gt;
| [[Android SDK API Reference]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;width: 90px;&amp;quot; |&lt;br /&gt;
! style=&amp;quot;width: 42%;&amp;quot; | Technical Guides&lt;br /&gt;
!&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;7&amp;quot; | {{SmallIcon|DigitalIcon.png}}&lt;br /&gt;
| '''[[Digital Measurement Onboarding]]'''&lt;br /&gt;
| '''[[Digital Measurement Metadata]]'''&lt;br /&gt;
|-&lt;br /&gt;
| '''[[Digital Measurement Testing]]'''&lt;br /&gt;
| '''[[Digital Measurement Interruption Scenarios]]'''&lt;br /&gt;
|-&lt;br /&gt;
| '''[[Digital Measurement FAQ]]'''&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| '''[[Digital Pre-Certification Checklist App SDK]]'''&lt;br /&gt;
| '''[[Digital Pre-Certification Checklist Browser SDK]]'''&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>KimBritt</name></author>
	</entry>
	<entry>
		<id>https://nielsentest.mywikis.net/w/index.php?title=DCR_Podcasts_in_Digital&amp;diff=2232</id>
		<title>DCR Podcasts in Digital</title>
		<link rel="alternate" type="text/html" href="https://nielsentest.mywikis.net/w/index.php?title=DCR_Podcasts_in_Digital&amp;diff=2232"/>
		<updated>2017-12-13T14:58:24Z</updated>

		<summary type="html">&lt;p&gt;KimBritt: spelling&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Breadcrumb|}} {{Breadcrumb|Digital}} {{CurrentBreadcrumb}}&lt;br /&gt;
[[Category:Digital]]&lt;br /&gt;
&lt;br /&gt;
== Steps ==&lt;br /&gt;
This document assumes you have implemented Digital Audio with Live AM/FM stream measurement.    It outlines the new parameters you will use to implement podcast measurement with the DCR content type.  &lt;br /&gt;
&lt;br /&gt;
# Send a list of your podcasts or programs to your TAM &lt;br /&gt;
#Update the parameters you use to call the SDK play and playheadPosition. Reference the appropriate [[Podcasts#Parameters]]  below.&lt;br /&gt;
#Obtain Nielsen Podcast certification once your changes are complete and tested &lt;br /&gt;
#Complete a Production License with your Nielsen Account Representative&lt;br /&gt;
=== Library ===&lt;br /&gt;
Use the same library as Digital Audio, live AM/FM stream measurement.&lt;br /&gt;
&lt;br /&gt;
== Changes for Podcast Measurement ==&lt;br /&gt;
=== play ===&lt;br /&gt;
Continue to use [[play]] to pass the channel descriptor information through channelName parameter when the user taps the '''Play''' button on the player. &lt;br /&gt;
&lt;br /&gt;
=== loadMetadata ===&lt;br /&gt;
Use [[loadMetadata]] to pass 'content' and 'ad' [[Digital Measurement Metadata]]. The CMS data must be passed as a JSON object.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;objective-c&amp;quot;&amp;gt;    – (void) loadMetadata :(id)metadata;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Refer to [[loadMetadata]] for the list of parameters to be passed in the JSON object.&lt;br /&gt;
&amp;lt;blockquote&amp;gt;'''Note:''' The [[loadMetadata]] call after the first [[play]] call must have ‘content’ details (&amp;quot;type&amp;quot;: &amp;quot;content&amp;quot;). This call should occur before any preroll ad starts playing.&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== playheadPosition for &amp;quot;content&amp;quot; ===&lt;br /&gt;
You will continue to use [[playheadPosition]] to pass the position of the playhead while the content is being played; however, you will pass the relative position from the beginning of the file.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;objective-c&amp;quot;&amp;gt;    – (void) playheadPosition: (long long) playheadPos&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Key !! Description !! Values !! Required? (Y/N) !! Example&lt;br /&gt;
|-&lt;br /&gt;
| On-Demand Audio || Position taken from beginning of the content in seconds. || Client-defined || Yes || Current player position from beginning of the content.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
''' playheadPosition Syntax Example for iOS'''&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;objective-c&amp;quot;&amp;gt;    CMTime curTime=[player currentTime];&lt;br /&gt;
    long pos=CMTimeGetSeconds(curTime);&lt;br /&gt;
    [nAppApiObject playheadPosition:pos];&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== API Call sequence ===&lt;br /&gt;
==== Use Case 1: Content has no Advertisements ====&lt;br /&gt;
Use the sample API sequence below as a reference to identify the specific events that need to be called during content playback without ads.&lt;br /&gt;
&lt;br /&gt;
Call [[play]] with channelName JSON as below.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;json&amp;quot;&amp;gt;{&lt;br /&gt;
   &amp;quot;channelName&amp;quot;: &amp;quot;TheMovieTitle&amp;quot;&lt;br /&gt;
}&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Call [[loadMetadata]] with JSON metadata for content as below.&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;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;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;
  &amp;quot;progen&amp;quot;:&amp;quot;GV&amp;quot;&lt;br /&gt;
}&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Call [[playheadPosition]] every one second until a pause / stop.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Type !! Sample code !! Description&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | Start of stream || &amp;lt;code&amp;gt;[nielsenMeter play: channelName];&amp;lt;/code&amp;gt; || // channelName contains JSON metadata of channel/video name being played&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter loadMetadata: contentMetadataObject];&amp;lt;/code&amp;gt; || // contentMetadataObject contains the JSON metadata for the content being played&lt;br /&gt;
|-&lt;br /&gt;
| Content || &amp;lt;code&amp;gt;[nielsenMeter playheadPosition: position];&amp;lt;/code&amp;gt; || // playheadPosition is position of the playhead while the content is being played&lt;br /&gt;
|-&lt;br /&gt;
| End of Stream || &amp;lt;code&amp;gt;[nielsenMeter end];&amp;lt;/code&amp;gt; || // Content playback is completed.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Use Case 2: Content has Advertisements ====&lt;br /&gt;
Call [[play]] with channelName JSON as below.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;json&amp;quot;&amp;gt;{&lt;br /&gt;
   &amp;quot;channelName&amp;quot;: &amp;quot;TheMovieTitle&amp;quot;&lt;br /&gt;
}&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Call [[loadMetadata]] with JSON metadata for ad as below.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;json&amp;quot;&amp;gt;{&lt;br /&gt;
   &amp;quot;type&amp;quot;: &amp;quot;preroll&amp;quot;,&lt;br /&gt;
   &amp;quot;assetid&amp;quot;: &amp;quot;ad=123&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 [[loadMetadata]] and playhead position through [[playheadPosition]].&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Call [[playheadPosition]] every two seconds until a pause / stop / another ''loadMetadata'' is called. Playhead should be passed for the entire duration of ad pod, if the ad pod details are passed as part of [[loadMetadata]].&lt;br /&gt;
&lt;br /&gt;
The sample API sequence can be used as a reference to identify the specific events that need to be called during content and ad playback.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Type !! Sample code !! Description&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | Start of stream || &amp;lt;code&amp;gt;[nielsenMeter play: channelName];&amp;lt;/code&amp;gt; || // channelName contains JSON metadata of channel/video name being played&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter loadMetadata: contentMetadataObject];&amp;lt;/code&amp;gt; || // contentMetadataObject contains the JSON metadata for the content being played&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Preroll || &amp;lt;code&amp;gt;[nielsenMeter loadMetadata: prerollMetadataObject];&amp;lt;/code&amp;gt; || // prerollMetadataObject contains the JSON metadata for the preroll ad&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter playheadPosition: position];&amp;lt;/code&amp;gt; || // position is position of the playhead while the preroll ad is being played&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter stop];&amp;lt;/code&amp;gt; || // Call stop after preroll occurs&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Content || &amp;lt;code&amp;gt;[nielsenMeter loadMetadata: contentMetadataObject];&amp;lt;/code&amp;gt; || // contentMetadataObject contains the JSON metadata for the content being played&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter playheadPosition: position];&amp;lt;/code&amp;gt; || // position is position of the playhead while the content is being played&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter stop];&amp;lt;/code&amp;gt; || // Call stop after the content is paused (ad starts)&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Midroll || &amp;lt;code&amp;gt;[nielsenMeter loadMetadata: midrollMetadataObject];&amp;lt;/code&amp;gt; || // midrollMetadataObject contains the JSON metadata for the midroll ad&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter playheadPosition: position];&amp;lt;/code&amp;gt; || // position is position of the playhead while the midroll ad is being played&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter stop];&amp;lt;/code&amp;gt; || // Call stop after midroll occurs&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Content (End of stream) || &amp;lt;code&amp;gt;[nielsenMeter loadMetadata: contentMetadataObject];&amp;lt;/code&amp;gt; || // contentMetadataObject contains the JSON metadata for the content being played&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter playheadPosition: position];&amp;lt;/code&amp;gt; || // position is position of the playhead while the content is being played&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter end];&amp;lt;/code&amp;gt; || // Called at the end of content&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Postroll || &amp;lt;code&amp;gt;[nielsenMeter loadMetadata: postrollMetadataObject];&amp;lt;/code&amp;gt; || // postrollMetadataObject contains the JSON metadata for the postroll ad&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter playheadPosition: position];&amp;lt;/code&amp;gt; || // position is position of the playhead while the postroll ad is being played&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter stop];&amp;lt;/code&amp;gt; || // Call stop after postroll occurs&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;'''Note:''' Each Ad playhead should reset or begin from 0 at ad start. When content has resumed following an ad break, playhead position must continue from where previous content segment was left off.&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Nielsen Measurement Opt-Out Implementation ==&lt;br /&gt;
Opt-out implementation for podcasts is the same as live AM/FM stream measurement. &lt;br /&gt;
&lt;br /&gt;
== Technical Guides ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! style=&amp;quot;width: 90px;&amp;quot; | Type&lt;br /&gt;
! style=&amp;quot;width: 45px;&amp;quot; |&lt;br /&gt;
! style=&amp;quot;width: 45px;&amp;quot; | OS&lt;br /&gt;
! style=&amp;quot;width: 50%;&amp;quot; | DCR Implementation Guide&lt;br /&gt;
!| SDK Documentation&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;7&amp;quot; | {{SmallIcon|SDKIcon.png|alt=SDK}}&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | {{OSIcon|VideoIcon.png|alt=Video}}&lt;br /&gt;
| {{OSIcon|macOSIcon.png|alt=iOS}}&lt;br /&gt;
| '''[[DCR Video iOS SDK]]'''&lt;br /&gt;
| [[iOS SDK API Reference]]&lt;br /&gt;
|-&lt;br /&gt;
| {{OSIcon|AndroidIcon.png|alt=Android}}&lt;br /&gt;
| '''[[DCR Video Android SDK]]'''&lt;br /&gt;
| [[Android SDK API Reference]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;width: 90px;&amp;quot; |&lt;br /&gt;
! style=&amp;quot;width: 42%;&amp;quot; | Technical Guides&lt;br /&gt;
!&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;7&amp;quot; | {{SmallIcon|DigitalIcon.png}}&lt;br /&gt;
| '''[[Digital Measurement Onboarding]]'''&lt;br /&gt;
| '''[[Digital Measurement Metadata]]'''&lt;br /&gt;
|-&lt;br /&gt;
| '''[[Digital Measurement Testing]]'''&lt;br /&gt;
| '''[[Digital Measurement Interruption Scenarios]]'''&lt;br /&gt;
|-&lt;br /&gt;
| '''[[Digital Measurement FAQ]]'''&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| '''[[Digital Pre-Certification Checklist App SDK]]'''&lt;br /&gt;
| '''[[Digital Pre-Certification Checklist Browser SDK]]'''&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>KimBritt</name></author>
	</entry>
	<entry>
		<id>https://nielsentest.mywikis.net/w/index.php?title=DCR_Podcasts_in_Digital&amp;diff=2231</id>
		<title>DCR Podcasts in Digital</title>
		<link rel="alternate" type="text/html" href="https://nielsentest.mywikis.net/w/index.php?title=DCR_Podcasts_in_Digital&amp;diff=2231"/>
		<updated>2017-12-13T14:58:04Z</updated>

		<summary type="html">&lt;p&gt;KimBritt: steps&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Breadcrumb|}} {{Breadcrumb|Digital}} {{CurrentBreadcrumb}}&lt;br /&gt;
[[Category:Digital]]&lt;br /&gt;
&lt;br /&gt;
== Steps ==&lt;br /&gt;
This document assumes you have implemented Digital Audio with Live AM/FM stream measurement.    It outlines the new parameters you will use to implement podcast measurement with the DCR content type.  &lt;br /&gt;
&lt;br /&gt;
# Send a list of yoru podcasts or programs to your TAM &lt;br /&gt;
#Update the parameters you use to call the SDK play and playheadPosition. Reference the appropriate [[Podcasts#Parameters]]  below.&lt;br /&gt;
#Obtain Nielsen Podcast certification once your changes are complete and tested &lt;br /&gt;
#Complete a Production License with your Nielsen Account Representative&lt;br /&gt;
=== Library ===&lt;br /&gt;
Use the same library as Digital Audio, live AM/FM stream measurement.&lt;br /&gt;
&lt;br /&gt;
== Changes for Podcast Measurement ==&lt;br /&gt;
=== play ===&lt;br /&gt;
Continue to use [[play]] to pass the channel descriptor information through channelName parameter when the user taps the '''Play''' button on the player. &lt;br /&gt;
&lt;br /&gt;
=== loadMetadata ===&lt;br /&gt;
Use [[loadMetadata]] to pass 'content' and 'ad' [[Digital Measurement Metadata]]. The CMS data must be passed as a JSON object.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;objective-c&amp;quot;&amp;gt;    – (void) loadMetadata :(id)metadata;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Refer to [[loadMetadata]] for the list of parameters to be passed in the JSON object.&lt;br /&gt;
&amp;lt;blockquote&amp;gt;'''Note:''' The [[loadMetadata]] call after the first [[play]] call must have ‘content’ details (&amp;quot;type&amp;quot;: &amp;quot;content&amp;quot;). This call should occur before any preroll ad starts playing.&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== playheadPosition for &amp;quot;content&amp;quot; ===&lt;br /&gt;
You will continue to use [[playheadPosition]] to pass the position of the playhead while the content is being played; however, you will pass the relative position from the beginning of the file.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;objective-c&amp;quot;&amp;gt;    – (void) playheadPosition: (long long) playheadPos&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Key !! Description !! Values !! Required? (Y/N) !! Example&lt;br /&gt;
|-&lt;br /&gt;
| On-Demand Audio || Position taken from beginning of the content in seconds. || Client-defined || Yes || Current player position from beginning of the content.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
''' playheadPosition Syntax Example for iOS'''&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;objective-c&amp;quot;&amp;gt;    CMTime curTime=[player currentTime];&lt;br /&gt;
    long pos=CMTimeGetSeconds(curTime);&lt;br /&gt;
    [nAppApiObject playheadPosition:pos];&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== API Call sequence ===&lt;br /&gt;
==== Use Case 1: Content has no Advertisements ====&lt;br /&gt;
Use the sample API sequence below as a reference to identify the specific events that need to be called during content playback without ads.&lt;br /&gt;
&lt;br /&gt;
Call [[play]] with channelName JSON as below.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;json&amp;quot;&amp;gt;{&lt;br /&gt;
   &amp;quot;channelName&amp;quot;: &amp;quot;TheMovieTitle&amp;quot;&lt;br /&gt;
}&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Call [[loadMetadata]] with JSON metadata for content as below.&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;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;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;
  &amp;quot;progen&amp;quot;:&amp;quot;GV&amp;quot;&lt;br /&gt;
}&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Call [[playheadPosition]] every one second until a pause / stop.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Type !! Sample code !! Description&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | Start of stream || &amp;lt;code&amp;gt;[nielsenMeter play: channelName];&amp;lt;/code&amp;gt; || // channelName contains JSON metadata of channel/video name being played&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter loadMetadata: contentMetadataObject];&amp;lt;/code&amp;gt; || // contentMetadataObject contains the JSON metadata for the content being played&lt;br /&gt;
|-&lt;br /&gt;
| Content || &amp;lt;code&amp;gt;[nielsenMeter playheadPosition: position];&amp;lt;/code&amp;gt; || // playheadPosition is position of the playhead while the content is being played&lt;br /&gt;
|-&lt;br /&gt;
| End of Stream || &amp;lt;code&amp;gt;[nielsenMeter end];&amp;lt;/code&amp;gt; || // Content playback is completed.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Use Case 2: Content has Advertisements ====&lt;br /&gt;
Call [[play]] with channelName JSON as below.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;json&amp;quot;&amp;gt;{&lt;br /&gt;
   &amp;quot;channelName&amp;quot;: &amp;quot;TheMovieTitle&amp;quot;&lt;br /&gt;
}&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Call [[loadMetadata]] with JSON metadata for ad as below.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;json&amp;quot;&amp;gt;{&lt;br /&gt;
   &amp;quot;type&amp;quot;: &amp;quot;preroll&amp;quot;,&lt;br /&gt;
   &amp;quot;assetid&amp;quot;: &amp;quot;ad=123&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 [[loadMetadata]] and playhead position through [[playheadPosition]].&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Call [[playheadPosition]] every two seconds until a pause / stop / another ''loadMetadata'' is called. Playhead should be passed for the entire duration of ad pod, if the ad pod details are passed as part of [[loadMetadata]].&lt;br /&gt;
&lt;br /&gt;
The sample API sequence can be used as a reference to identify the specific events that need to be called during content and ad playback.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Type !! Sample code !! Description&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | Start of stream || &amp;lt;code&amp;gt;[nielsenMeter play: channelName];&amp;lt;/code&amp;gt; || // channelName contains JSON metadata of channel/video name being played&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter loadMetadata: contentMetadataObject];&amp;lt;/code&amp;gt; || // contentMetadataObject contains the JSON metadata for the content being played&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Preroll || &amp;lt;code&amp;gt;[nielsenMeter loadMetadata: prerollMetadataObject];&amp;lt;/code&amp;gt; || // prerollMetadataObject contains the JSON metadata for the preroll ad&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter playheadPosition: position];&amp;lt;/code&amp;gt; || // position is position of the playhead while the preroll ad is being played&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter stop];&amp;lt;/code&amp;gt; || // Call stop after preroll occurs&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Content || &amp;lt;code&amp;gt;[nielsenMeter loadMetadata: contentMetadataObject];&amp;lt;/code&amp;gt; || // contentMetadataObject contains the JSON metadata for the content being played&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter playheadPosition: position];&amp;lt;/code&amp;gt; || // position is position of the playhead while the content is being played&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter stop];&amp;lt;/code&amp;gt; || // Call stop after the content is paused (ad starts)&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Midroll || &amp;lt;code&amp;gt;[nielsenMeter loadMetadata: midrollMetadataObject];&amp;lt;/code&amp;gt; || // midrollMetadataObject contains the JSON metadata for the midroll ad&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter playheadPosition: position];&amp;lt;/code&amp;gt; || // position is position of the playhead while the midroll ad is being played&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter stop];&amp;lt;/code&amp;gt; || // Call stop after midroll occurs&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Content (End of stream) || &amp;lt;code&amp;gt;[nielsenMeter loadMetadata: contentMetadataObject];&amp;lt;/code&amp;gt; || // contentMetadataObject contains the JSON metadata for the content being played&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter playheadPosition: position];&amp;lt;/code&amp;gt; || // position is position of the playhead while the content is being played&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter end];&amp;lt;/code&amp;gt; || // Called at the end of content&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Postroll || &amp;lt;code&amp;gt;[nielsenMeter loadMetadata: postrollMetadataObject];&amp;lt;/code&amp;gt; || // postrollMetadataObject contains the JSON metadata for the postroll ad&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter playheadPosition: position];&amp;lt;/code&amp;gt; || // position is position of the playhead while the postroll ad is being played&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter stop];&amp;lt;/code&amp;gt; || // Call stop after postroll occurs&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;'''Note:''' Each Ad playhead should reset or begin from 0 at ad start. When content has resumed following an ad break, playhead position must continue from where previous content segment was left off.&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Nielsen Measurement Opt-Out Implementation ==&lt;br /&gt;
Opt-out implementation for podcasts is the same as live AM/FM stream measurement. &lt;br /&gt;
&lt;br /&gt;
== Technical Guides ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! style=&amp;quot;width: 90px;&amp;quot; | Type&lt;br /&gt;
! style=&amp;quot;width: 45px;&amp;quot; |&lt;br /&gt;
! style=&amp;quot;width: 45px;&amp;quot; | OS&lt;br /&gt;
! style=&amp;quot;width: 50%;&amp;quot; | DCR Implementation Guide&lt;br /&gt;
!| SDK Documentation&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;7&amp;quot; | {{SmallIcon|SDKIcon.png|alt=SDK}}&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | {{OSIcon|VideoIcon.png|alt=Video}}&lt;br /&gt;
| {{OSIcon|macOSIcon.png|alt=iOS}}&lt;br /&gt;
| '''[[DCR Video iOS SDK]]'''&lt;br /&gt;
| [[iOS SDK API Reference]]&lt;br /&gt;
|-&lt;br /&gt;
| {{OSIcon|AndroidIcon.png|alt=Android}}&lt;br /&gt;
| '''[[DCR Video Android SDK]]'''&lt;br /&gt;
| [[Android SDK API Reference]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;width: 90px;&amp;quot; |&lt;br /&gt;
! style=&amp;quot;width: 42%;&amp;quot; | Technical Guides&lt;br /&gt;
!&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;7&amp;quot; | {{SmallIcon|DigitalIcon.png}}&lt;br /&gt;
| '''[[Digital Measurement Onboarding]]'''&lt;br /&gt;
| '''[[Digital Measurement Metadata]]'''&lt;br /&gt;
|-&lt;br /&gt;
| '''[[Digital Measurement Testing]]'''&lt;br /&gt;
| '''[[Digital Measurement Interruption Scenarios]]'''&lt;br /&gt;
|-&lt;br /&gt;
| '''[[Digital Measurement FAQ]]'''&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| '''[[Digital Pre-Certification Checklist App SDK]]'''&lt;br /&gt;
| '''[[Digital Pre-Certification Checklist Browser SDK]]'''&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>KimBritt</name></author>
	</entry>
	<entry>
		<id>https://nielsentest.mywikis.net/w/index.php?title=DCR_Podcasts_in_Digital&amp;diff=2230</id>
		<title>DCR Podcasts in Digital</title>
		<link rel="alternate" type="text/html" href="https://nielsentest.mywikis.net/w/index.php?title=DCR_Podcasts_in_Digital&amp;diff=2230"/>
		<updated>2017-12-13T14:52:36Z</updated>

		<summary type="html">&lt;p&gt;KimBritt: no viewability&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Breadcrumb|}} {{Breadcrumb|Digital}} {{CurrentBreadcrumb}}&lt;br /&gt;
[[Category:Digital]]&lt;br /&gt;
&lt;br /&gt;
== Prerequisites ==&lt;br /&gt;
This document assumes you have implemented Digital Audio with Live AM/FM stream measurement.    It outlines the new parameters you will use to implement podcast measurement with the DCR content type.  &lt;br /&gt;
&lt;br /&gt;
=== Library ===&lt;br /&gt;
Use the same library as Digital Audio, live AM/FM stream measurement.&lt;br /&gt;
&lt;br /&gt;
== Changes for Podcast Measurement ==&lt;br /&gt;
=== play ===&lt;br /&gt;
Continue to use [[play]] to pass the channel descriptor information through channelName parameter when the user taps the '''Play''' button on the player. &lt;br /&gt;
&lt;br /&gt;
=== loadMetadata ===&lt;br /&gt;
Use [[loadMetadata]] to pass 'content' and 'ad' [[Digital Measurement Metadata]]. The CMS data must be passed as a JSON object.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;objective-c&amp;quot;&amp;gt;    – (void) loadMetadata :(id)metadata;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Refer to [[loadMetadata]] for the list of parameters to be passed in the JSON object.&lt;br /&gt;
&amp;lt;blockquote&amp;gt;'''Note:''' The [[loadMetadata]] call after the first [[play]] call must have ‘content’ details (&amp;quot;type&amp;quot;: &amp;quot;content&amp;quot;). This call should occur before any preroll ad starts playing.&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== playheadPosition for &amp;quot;content&amp;quot; ===&lt;br /&gt;
You will continue to use [[playheadPosition]] to pass the position of the playhead while the content is being played; however, you will pass the relative position from the beginning of the file.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;objective-c&amp;quot;&amp;gt;    – (void) playheadPosition: (long long) playheadPos&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Key !! Description !! Values !! Required? (Y/N) !! Example&lt;br /&gt;
|-&lt;br /&gt;
| On-Demand Audio || Position taken from beginning of the content in seconds. || Client-defined || Yes || Current player position from beginning of the content.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
''' playheadPosition Syntax Example for iOS'''&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;objective-c&amp;quot;&amp;gt;    CMTime curTime=[player currentTime];&lt;br /&gt;
    long pos=CMTimeGetSeconds(curTime);&lt;br /&gt;
    [nAppApiObject playheadPosition:pos];&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== API Call sequence ===&lt;br /&gt;
==== Use Case 1: Content has no Advertisements ====&lt;br /&gt;
Use the sample API sequence below as a reference to identify the specific events that need to be called during content playback without ads.&lt;br /&gt;
&lt;br /&gt;
Call [[play]] with channelName JSON as below.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;json&amp;quot;&amp;gt;{&lt;br /&gt;
   &amp;quot;channelName&amp;quot;: &amp;quot;TheMovieTitle&amp;quot;&lt;br /&gt;
}&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Call [[loadMetadata]] with JSON metadata for content as below.&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;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;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;
  &amp;quot;progen&amp;quot;:&amp;quot;GV&amp;quot;&lt;br /&gt;
}&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Call [[playheadPosition]] every one second until a pause / stop.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Type !! Sample code !! Description&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | Start of stream || &amp;lt;code&amp;gt;[nielsenMeter play: channelName];&amp;lt;/code&amp;gt; || // channelName contains JSON metadata of channel/video name being played&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter loadMetadata: contentMetadataObject];&amp;lt;/code&amp;gt; || // contentMetadataObject contains the JSON metadata for the content being played&lt;br /&gt;
|-&lt;br /&gt;
| Content || &amp;lt;code&amp;gt;[nielsenMeter playheadPosition: position];&amp;lt;/code&amp;gt; || // playheadPosition is position of the playhead while the content is being played&lt;br /&gt;
|-&lt;br /&gt;
| End of Stream || &amp;lt;code&amp;gt;[nielsenMeter end];&amp;lt;/code&amp;gt; || // Content playback is completed.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Use Case 2: Content has Advertisements ====&lt;br /&gt;
Call [[play]] with channelName JSON as below.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;json&amp;quot;&amp;gt;{&lt;br /&gt;
   &amp;quot;channelName&amp;quot;: &amp;quot;TheMovieTitle&amp;quot;&lt;br /&gt;
}&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Call [[loadMetadata]] with JSON metadata for ad as below.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;json&amp;quot;&amp;gt;{&lt;br /&gt;
   &amp;quot;type&amp;quot;: &amp;quot;preroll&amp;quot;,&lt;br /&gt;
   &amp;quot;assetid&amp;quot;: &amp;quot;ad=123&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 [[loadMetadata]] and playhead position through [[playheadPosition]].&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Call [[playheadPosition]] every two seconds until a pause / stop / another ''loadMetadata'' is called. Playhead should be passed for the entire duration of ad pod, if the ad pod details are passed as part of [[loadMetadata]].&lt;br /&gt;
&lt;br /&gt;
The sample API sequence can be used as a reference to identify the specific events that need to be called during content and ad playback.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Type !! Sample code !! Description&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | Start of stream || &amp;lt;code&amp;gt;[nielsenMeter play: channelName];&amp;lt;/code&amp;gt; || // channelName contains JSON metadata of channel/video name being played&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter loadMetadata: contentMetadataObject];&amp;lt;/code&amp;gt; || // contentMetadataObject contains the JSON metadata for the content being played&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Preroll || &amp;lt;code&amp;gt;[nielsenMeter loadMetadata: prerollMetadataObject];&amp;lt;/code&amp;gt; || // prerollMetadataObject contains the JSON metadata for the preroll ad&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter playheadPosition: position];&amp;lt;/code&amp;gt; || // position is position of the playhead while the preroll ad is being played&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter stop];&amp;lt;/code&amp;gt; || // Call stop after preroll occurs&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Content || &amp;lt;code&amp;gt;[nielsenMeter loadMetadata: contentMetadataObject];&amp;lt;/code&amp;gt; || // contentMetadataObject contains the JSON metadata for the content being played&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter playheadPosition: position];&amp;lt;/code&amp;gt; || // position is position of the playhead while the content is being played&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter stop];&amp;lt;/code&amp;gt; || // Call stop after the content is paused (ad starts)&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Midroll || &amp;lt;code&amp;gt;[nielsenMeter loadMetadata: midrollMetadataObject];&amp;lt;/code&amp;gt; || // midrollMetadataObject contains the JSON metadata for the midroll ad&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter playheadPosition: position];&amp;lt;/code&amp;gt; || // position is position of the playhead while the midroll ad is being played&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter stop];&amp;lt;/code&amp;gt; || // Call stop after midroll occurs&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Content (End of stream) || &amp;lt;code&amp;gt;[nielsenMeter loadMetadata: contentMetadataObject];&amp;lt;/code&amp;gt; || // contentMetadataObject contains the JSON metadata for the content being played&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter playheadPosition: position];&amp;lt;/code&amp;gt; || // position is position of the playhead while the content is being played&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter end];&amp;lt;/code&amp;gt; || // Called at the end of content&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Postroll || &amp;lt;code&amp;gt;[nielsenMeter loadMetadata: postrollMetadataObject];&amp;lt;/code&amp;gt; || // postrollMetadataObject contains the JSON metadata for the postroll ad&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter playheadPosition: position];&amp;lt;/code&amp;gt; || // position is position of the playhead while the postroll ad is being played&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter stop];&amp;lt;/code&amp;gt; || // Call stop after postroll occurs&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;'''Note:''' Each Ad playhead should reset or begin from 0 at ad start. When content has resumed following an ad break, playhead position must continue from where previous content segment was left off.&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Nielsen Measurement Opt-Out Implementation ==&lt;br /&gt;
Opt-out implementation for podcasts is the same as live AM/FM stream measurement. &lt;br /&gt;
&lt;br /&gt;
== Technical Guides ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! style=&amp;quot;width: 90px;&amp;quot; | Type&lt;br /&gt;
! style=&amp;quot;width: 45px;&amp;quot; |&lt;br /&gt;
! style=&amp;quot;width: 45px;&amp;quot; | OS&lt;br /&gt;
! style=&amp;quot;width: 50%;&amp;quot; | DCR Implementation Guide&lt;br /&gt;
!| SDK Documentation&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;7&amp;quot; | {{SmallIcon|SDKIcon.png|alt=SDK}}&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | {{OSIcon|VideoIcon.png|alt=Video}}&lt;br /&gt;
| {{OSIcon|macOSIcon.png|alt=iOS}}&lt;br /&gt;
| '''[[DCR Video iOS SDK]]'''&lt;br /&gt;
| [[iOS SDK API Reference]]&lt;br /&gt;
|-&lt;br /&gt;
| {{OSIcon|AndroidIcon.png|alt=Android}}&lt;br /&gt;
| '''[[DCR Video Android SDK]]'''&lt;br /&gt;
| [[Android SDK API Reference]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;width: 90px;&amp;quot; |&lt;br /&gt;
! style=&amp;quot;width: 42%;&amp;quot; | Technical Guides&lt;br /&gt;
!&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;7&amp;quot; | {{SmallIcon|DigitalIcon.png}}&lt;br /&gt;
| '''[[Digital Measurement Onboarding]]'''&lt;br /&gt;
| '''[[Digital Measurement Metadata]]'''&lt;br /&gt;
|-&lt;br /&gt;
| '''[[Digital Measurement Testing]]'''&lt;br /&gt;
| '''[[Digital Measurement Interruption Scenarios]]'''&lt;br /&gt;
|-&lt;br /&gt;
| '''[[Digital Measurement FAQ]]'''&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| '''[[Digital Pre-Certification Checklist App SDK]]'''&lt;br /&gt;
| '''[[Digital Pre-Certification Checklist Browser SDK]]'''&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>KimBritt</name></author>
	</entry>
	<entry>
		<id>https://nielsentest.mywikis.net/w/index.php?title=DCR_Podcasts_in_Digital&amp;diff=2229</id>
		<title>DCR Podcasts in Digital</title>
		<link rel="alternate" type="text/html" href="https://nielsentest.mywikis.net/w/index.php?title=DCR_Podcasts_in_Digital&amp;diff=2229"/>
		<updated>2017-12-13T14:50:31Z</updated>

		<summary type="html">&lt;p&gt;KimBritt: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Breadcrumb|}} {{Breadcrumb|Digital}} {{CurrentBreadcrumb}}&lt;br /&gt;
[[Category:Digital]]&lt;br /&gt;
&lt;br /&gt;
== Prerequisites ==&lt;br /&gt;
This document assumes you have implemented Digital Audio with Live AM/FM stream measurement.    It outlines the new parameters you will use to implement podcast measurement with the DCR content type.  &lt;br /&gt;
&lt;br /&gt;
=== Library ===&lt;br /&gt;
Use the same library as Digital Audio, live AM/FM stream measurement.&lt;br /&gt;
&lt;br /&gt;
== Changes for Podcast Measurement ==&lt;br /&gt;
=== play ===&lt;br /&gt;
Continue to use [[play]] to pass the channel descriptor information through channelName parameter when the user taps the '''Play''' button on the player. &lt;br /&gt;
&lt;br /&gt;
=== loadMetadata ===&lt;br /&gt;
Use [[loadMetadata]] to pass 'content' and 'ad' [[Digital Measurement Metadata]]. The CMS data must be passed as a JSON object.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;objective-c&amp;quot;&amp;gt;    – (void) loadMetadata :(id)metadata;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Refer to [[loadMetadata]] for the list of parameters to be passed in the JSON object.&lt;br /&gt;
&amp;lt;blockquote&amp;gt;'''Note:''' The [[loadMetadata]] call after the first [[play]] call must have ‘content’ details (&amp;quot;type&amp;quot;: &amp;quot;content&amp;quot;). This call should occur before any preroll ad starts playing.&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== playheadPosition for &amp;quot;content&amp;quot; ===&lt;br /&gt;
You will continue to use [[playheadPosition]] to pass the position of the playhead while the content is being played; however, you will pass the relative position from the beginning of the file.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;objective-c&amp;quot;&amp;gt;    – (void) playheadPosition: (long long) playheadPos&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Key !! Description !! Values !! Required? (Y/N) !! Example&lt;br /&gt;
|-&lt;br /&gt;
| On-Demand Audio || Position taken from beginning of the content in seconds. || Client-defined || Yes || Current player position from beginning of the content.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
''' playheadPosition Syntax Example for iOS'''&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;objective-c&amp;quot;&amp;gt;    CMTime curTime=[player currentTime];&lt;br /&gt;
    long pos=CMTimeGetSeconds(curTime);&lt;br /&gt;
    [nAppApiObject playheadPosition:pos];&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== API Call sequence ===&lt;br /&gt;
==== Use Case 1: Content has no Advertisements ====&lt;br /&gt;
Use the sample API sequence below as a reference to identify the specific events that need to be called during content playback without ads.&lt;br /&gt;
&lt;br /&gt;
Call [[play]] with channelName JSON as below.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;json&amp;quot;&amp;gt;{&lt;br /&gt;
   &amp;quot;channelName&amp;quot;: &amp;quot;TheMovieTitle&amp;quot;&lt;br /&gt;
}&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Call [[loadMetadata]] with JSON metadata for content as below.&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;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;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;
  &amp;quot;progen&amp;quot;:&amp;quot;GV&amp;quot;&lt;br /&gt;
}&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Call [[playheadPosition]] every one second until a pause / stop.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Type !! Sample code !! Description&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | Start of stream || &amp;lt;code&amp;gt;[nielsenMeter play: channelName];&amp;lt;/code&amp;gt; || // channelName contains JSON metadata of channel/video name being played&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter loadMetadata: contentMetadataObject];&amp;lt;/code&amp;gt; || // contentMetadataObject contains the JSON metadata for the content being played&lt;br /&gt;
|-&lt;br /&gt;
| Content || &amp;lt;code&amp;gt;[nielsenMeter playheadPosition: position];&amp;lt;/code&amp;gt; || // playheadPosition is position of the playhead while the content is being played&lt;br /&gt;
|-&lt;br /&gt;
| End of Stream || &amp;lt;code&amp;gt;[nielsenMeter end];&amp;lt;/code&amp;gt; || // Content playback is completed.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Use Case 2: Content has Advertisements ====&lt;br /&gt;
Call [[play]] with channelName JSON as below.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;json&amp;quot;&amp;gt;{&lt;br /&gt;
   &amp;quot;channelName&amp;quot;: &amp;quot;TheMovieTitle&amp;quot;&lt;br /&gt;
}&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Call [[loadMetadata]] with JSON metadata for ad as below.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;json&amp;quot;&amp;gt;{&lt;br /&gt;
   &amp;quot;type&amp;quot;: &amp;quot;preroll&amp;quot;,&lt;br /&gt;
   &amp;quot;assetid&amp;quot;: &amp;quot;ad=123&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 [[loadMetadata]] and playhead position through [[playheadPosition]].&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Call [[playheadPosition]] every two seconds until a pause / stop / another ''loadMetadata'' is called. Playhead should be passed for the entire duration of ad pod, if the ad pod details are passed as part of [[loadMetadata]].&lt;br /&gt;
&lt;br /&gt;
The sample API sequence can be used as a reference to identify the specific events that need to be called during content and ad playback.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Type !! Sample code !! Description&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | Start of stream || &amp;lt;code&amp;gt;[nielsenMeter play: channelName];&amp;lt;/code&amp;gt; || // channelName contains JSON metadata of channel/video name being played&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter loadMetadata: contentMetadataObject];&amp;lt;/code&amp;gt; || // contentMetadataObject contains the JSON metadata for the content being played&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Preroll || &amp;lt;code&amp;gt;[nielsenMeter loadMetadata: prerollMetadataObject];&amp;lt;/code&amp;gt; || // prerollMetadataObject contains the JSON metadata for the preroll ad&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter playheadPosition: position];&amp;lt;/code&amp;gt; || // position is position of the playhead while the preroll ad is being played&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter stop];&amp;lt;/code&amp;gt; || // Call stop after preroll occurs&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Content || &amp;lt;code&amp;gt;[nielsenMeter loadMetadata: contentMetadataObject];&amp;lt;/code&amp;gt; || // contentMetadataObject contains the JSON metadata for the content being played&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter playheadPosition: position];&amp;lt;/code&amp;gt; || // position is position of the playhead while the content is being played&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter stop];&amp;lt;/code&amp;gt; || // Call stop after the content is paused (ad starts)&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Midroll || &amp;lt;code&amp;gt;[nielsenMeter loadMetadata: midrollMetadataObject];&amp;lt;/code&amp;gt; || // midrollMetadataObject contains the JSON metadata for the midroll ad&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter playheadPosition: position];&amp;lt;/code&amp;gt; || // position is position of the playhead while the midroll ad is being played&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter stop];&amp;lt;/code&amp;gt; || // Call stop after midroll occurs&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Content (End of stream) || &amp;lt;code&amp;gt;[nielsenMeter loadMetadata: contentMetadataObject];&amp;lt;/code&amp;gt; || // contentMetadataObject contains the JSON metadata for the content being played&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter playheadPosition: position];&amp;lt;/code&amp;gt; || // position is position of the playhead while the content is being played&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter end];&amp;lt;/code&amp;gt; || // Called at the end of content&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Postroll || &amp;lt;code&amp;gt;[nielsenMeter loadMetadata: postrollMetadataObject];&amp;lt;/code&amp;gt; || // postrollMetadataObject contains the JSON metadata for the postroll ad&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter playheadPosition: position];&amp;lt;/code&amp;gt; || // position is position of the playhead while the postroll ad is being played&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter stop];&amp;lt;/code&amp;gt; || // Call stop after postroll occurs&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;'''Note:''' Each Ad playhead should reset or begin from 0 at ad start. When content has resumed following an ad break, playhead position must continue from where previous content segment was left off.&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== The Viewability Metric ==&lt;br /&gt;
The viewability metric introduced in the Nielsen AppSDK represents the visibility of a video in the player along a playback. If you decide to implement the Nielsen Viewability Module, the SDK will track the viewability of the targeted player/element, log the viewable percentage, and record in seconds the time the player/element was in that viewable state.  Please refer to Implementing [[Implementing Viewability with AppSDK|Viewability with AppSDK.]]&lt;br /&gt;
&lt;br /&gt;
== Interruptions during playback ==&lt;br /&gt;
As part of integrating Nielsen App SDK with the player application, the Audio / Video app developer needs to handle the following possible interruption scenarios:&lt;br /&gt;
* Pause / Play&lt;br /&gt;
* Network Loss (Wi-Fi / Airplane / Cellular)&lt;br /&gt;
* Call Interrupt (SIM or Third party Skype / Hangout call)&lt;br /&gt;
* Alarm Interrupt&lt;br /&gt;
* Content Buffering&lt;br /&gt;
* Device Lock / Unlock (Video players only, not for Audio players)&lt;br /&gt;
* App going in the Background/Foreground (Video players only, not for Audio players)&lt;br /&gt;
* Channel / Station Change Scenario&lt;br /&gt;
* Unplugging of headphone&lt;br /&gt;
In case of encountering one of the above interruptions, the player application needs to&lt;br /&gt;
* Call [[stop]] immediately (except when content is buffering) and withhold sending playhead position.&lt;br /&gt;
* Start sending pings – [[loadMetadata]] and [[playheadPosition]] for the new viewing session, once the playback resumes.&lt;br /&gt;
Please see the [[Digital Measurement FAQ]] for more details&lt;br /&gt;
&lt;br /&gt;
== Nielsen Measurement Opt-Out Implementation ==&lt;br /&gt;
Opt-out implementation for podcasts is the same as live AM/FM stream measurement. &lt;br /&gt;
&lt;br /&gt;
== Technical Guides ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! style=&amp;quot;width: 90px;&amp;quot; | Type&lt;br /&gt;
! style=&amp;quot;width: 45px;&amp;quot; |&lt;br /&gt;
! style=&amp;quot;width: 45px;&amp;quot; | OS&lt;br /&gt;
! style=&amp;quot;width: 50%;&amp;quot; | DCR Implementation Guide&lt;br /&gt;
!| SDK Documentation&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;7&amp;quot; | {{SmallIcon|SDKIcon.png|alt=SDK}}&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | {{OSIcon|VideoIcon.png|alt=Video}}&lt;br /&gt;
| {{OSIcon|macOSIcon.png|alt=iOS}}&lt;br /&gt;
| '''[[DCR Video iOS SDK]]'''&lt;br /&gt;
| [[iOS SDK API Reference]]&lt;br /&gt;
|-&lt;br /&gt;
| {{OSIcon|AndroidIcon.png|alt=Android}}&lt;br /&gt;
| '''[[DCR Video Android SDK]]'''&lt;br /&gt;
| [[Android SDK API Reference]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;width: 90px;&amp;quot; |&lt;br /&gt;
! style=&amp;quot;width: 42%;&amp;quot; | Technical Guides&lt;br /&gt;
!&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;7&amp;quot; | {{SmallIcon|DigitalIcon.png}}&lt;br /&gt;
| '''[[Digital Measurement Onboarding]]'''&lt;br /&gt;
| '''[[Digital Measurement Metadata]]'''&lt;br /&gt;
|-&lt;br /&gt;
| '''[[Digital Measurement Testing]]'''&lt;br /&gt;
| '''[[Digital Measurement Interruption Scenarios]]'''&lt;br /&gt;
|-&lt;br /&gt;
| '''[[Digital Measurement FAQ]]'''&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| '''[[Digital Pre-Certification Checklist App SDK]]'''&lt;br /&gt;
| '''[[Digital Pre-Certification Checklist Browser SDK]]'''&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>KimBritt</name></author>
	</entry>
	<entry>
		<id>https://nielsentest.mywikis.net/w/index.php?title=DCR_Podcasts_in_Digital&amp;diff=2228</id>
		<title>DCR Podcasts in Digital</title>
		<link rel="alternate" type="text/html" href="https://nielsentest.mywikis.net/w/index.php?title=DCR_Podcasts_in_Digital&amp;diff=2228"/>
		<updated>2017-12-13T14:49:20Z</updated>

		<summary type="html">&lt;p&gt;KimBritt: podcasts 2&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Breadcrumb|}} {{Breadcrumb|Digital}} {{CurrentBreadcrumb}}&lt;br /&gt;
[[Category:Digital]]&lt;br /&gt;
&lt;br /&gt;
== Prerequisites ==&lt;br /&gt;
This document assumes you have implemented Digital Audio with Live AM/FM stream measurement.    It outlines the new parameters you will use to implement podcast measurement with the DCR content type.  &lt;br /&gt;
&lt;br /&gt;
=== Library ===&lt;br /&gt;
Use the same library as Digital Audio, live AM/FM stream measurement.&lt;br /&gt;
&lt;br /&gt;
== Changes for Podcast Measurement ==&lt;br /&gt;
=== play ===&lt;br /&gt;
Continue to use [[play]] to pass the channel descriptor information through channelName parameter when the user taps the '''Play''' button on the player. &lt;br /&gt;
&lt;br /&gt;
=== loadMetadata ===&lt;br /&gt;
Use [[loadMetadata]] to pass 'content' and 'ad' [[Digital Measurement Metadata]]. The CMS data must be passed as a JSON object.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;objective-c&amp;quot;&amp;gt;    – (void) loadMetadata :(id)metadata;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Refer to [[loadMetadata]] for the list of parameters to be passed in the JSON object.&lt;br /&gt;
&amp;lt;blockquote&amp;gt;'''Note:''' The [[loadMetadata]] call after the first [[play]] call must have ‘content’ details (&amp;quot;type&amp;quot;: &amp;quot;content&amp;quot;). This call should occur before any preroll ad starts playing.&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== playheadPosition for &amp;quot;content&amp;quot; ===&lt;br /&gt;
You will continue to use [[playheadPosition]] to pass the position of the playhead while the content is being played; however, you will pass the relative position from the beginning of the file.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;objective-c&amp;quot;&amp;gt;    – (void) playheadPosition: (long long) playheadPos&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Key !! Description !! Values !! Required? (Y/N) !! Example&lt;br /&gt;
|-&lt;br /&gt;
| On-Demand Audio || Position taken from beginning of the content in seconds. || Client-defined || Yes || Current player position from beginning of the content.&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;nowiki&amp;gt;**&amp;lt;/nowiki&amp;gt;''Only one of these parameters is mandatory''&lt;br /&gt;
&lt;br /&gt;
''' playheadPosition Syntax Example for iOS'''&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;objective-c&amp;quot;&amp;gt;    CMTime curTime=[player currentTime];&lt;br /&gt;
    long pos=CMTimeGetSeconds(curTime);&lt;br /&gt;
    [nAppApiObject playheadPosition:pos];&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== API Call sequence ===&lt;br /&gt;
==== Use Case 1: Content has no Advertisements ====&lt;br /&gt;
Use the sample API sequence below as a reference to identify the specific events that need to be called during content playback without ads.&lt;br /&gt;
&lt;br /&gt;
Call [[play]] with channelName JSON as below.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;json&amp;quot;&amp;gt;{&lt;br /&gt;
   &amp;quot;channelName&amp;quot;: &amp;quot;TheMovieTitle&amp;quot;&lt;br /&gt;
}&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Call [[loadMetadata]] with JSON metadata for content as below.&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;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;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;
  &amp;quot;progen&amp;quot;:&amp;quot;GV&amp;quot;&lt;br /&gt;
}&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Call [[playheadPosition]] every one second until a pause / stop.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Type !! Sample code !! Description&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | Start of stream || &amp;lt;code&amp;gt;[nielsenMeter play: channelName];&amp;lt;/code&amp;gt; || // channelName contains JSON metadata of channel/video name being played&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter loadMetadata: contentMetadataObject];&amp;lt;/code&amp;gt; || // contentMetadataObject contains the JSON metadata for the content being played&lt;br /&gt;
|-&lt;br /&gt;
| Content || &amp;lt;code&amp;gt;[nielsenMeter playheadPosition: position];&amp;lt;/code&amp;gt; || // playheadPosition is position of the playhead while the content is being played&lt;br /&gt;
|-&lt;br /&gt;
| End of Stream || &amp;lt;code&amp;gt;[nielsenMeter end];&amp;lt;/code&amp;gt; || // Content playback is completed.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Use Case 2: Content has Advertisements ====&lt;br /&gt;
Call [[play]] with channelName JSON as below.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;json&amp;quot;&amp;gt;{&lt;br /&gt;
   &amp;quot;channelName&amp;quot;: &amp;quot;TheMovieTitle&amp;quot;&lt;br /&gt;
}&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Call [[loadMetadata]] with JSON metadata for ad as below.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;json&amp;quot;&amp;gt;{&lt;br /&gt;
   &amp;quot;type&amp;quot;: &amp;quot;preroll&amp;quot;,&lt;br /&gt;
   &amp;quot;assetid&amp;quot;: &amp;quot;ad=123&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 [[loadMetadata]] and playhead position through [[playheadPosition]].&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Call [[playheadPosition]] every two seconds until a pause / stop / another ''loadMetadata'' is called. Playhead should be passed for the entire duration of ad pod, if the ad pod details are passed as part of [[loadMetadata]].&lt;br /&gt;
&lt;br /&gt;
The sample API sequence can be used as a reference to identify the specific events that need to be called during content and ad playback.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Type !! Sample code !! Description&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | Start of stream || &amp;lt;code&amp;gt;[nielsenMeter play: channelName];&amp;lt;/code&amp;gt; || // channelName contains JSON metadata of channel/video name being played&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter loadMetadata: contentMetadataObject];&amp;lt;/code&amp;gt; || // contentMetadataObject contains the JSON metadata for the content being played&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Preroll || &amp;lt;code&amp;gt;[nielsenMeter loadMetadata: prerollMetadataObject];&amp;lt;/code&amp;gt; || // prerollMetadataObject contains the JSON metadata for the preroll ad&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter playheadPosition: position];&amp;lt;/code&amp;gt; || // position is position of the playhead while the preroll ad is being played&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter stop];&amp;lt;/code&amp;gt; || // Call stop after preroll occurs&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Content || &amp;lt;code&amp;gt;[nielsenMeter loadMetadata: contentMetadataObject];&amp;lt;/code&amp;gt; || // contentMetadataObject contains the JSON metadata for the content being played&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter playheadPosition: position];&amp;lt;/code&amp;gt; || // position is position of the playhead while the content is being played&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter stop];&amp;lt;/code&amp;gt; || // Call stop after the content is paused (ad starts)&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Midroll || &amp;lt;code&amp;gt;[nielsenMeter loadMetadata: midrollMetadataObject];&amp;lt;/code&amp;gt; || // midrollMetadataObject contains the JSON metadata for the midroll ad&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter playheadPosition: position];&amp;lt;/code&amp;gt; || // position is position of the playhead while the midroll ad is being played&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter stop];&amp;lt;/code&amp;gt; || // Call stop after midroll occurs&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Content (End of stream) || &amp;lt;code&amp;gt;[nielsenMeter loadMetadata: contentMetadataObject];&amp;lt;/code&amp;gt; || // contentMetadataObject contains the JSON metadata for the content being played&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter playheadPosition: position];&amp;lt;/code&amp;gt; || // position is position of the playhead while the content is being played&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter end];&amp;lt;/code&amp;gt; || // Called at the end of content&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Postroll || &amp;lt;code&amp;gt;[nielsenMeter loadMetadata: postrollMetadataObject];&amp;lt;/code&amp;gt; || // postrollMetadataObject contains the JSON metadata for the postroll ad&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter playheadPosition: position];&amp;lt;/code&amp;gt; || // position is position of the playhead while the postroll ad is being played&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter stop];&amp;lt;/code&amp;gt; || // Call stop after postroll occurs&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;'''Note:''' Each Ad playhead should reset or begin from 0 at ad start. When content has resumed following an ad break, playhead position must continue from where previous content segment was left off.&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== The Viewability Metric ==&lt;br /&gt;
The viewability metric introduced in the Nielsen AppSDK represents the visibility of a video in the player along a playback. If you decide to implement the Nielsen Viewability Module, the SDK will track the viewability of the targeted player/element, log the viewable percentage, and record in seconds the time the player/element was in that viewable state.  Please refer to Implementing [[Implementing Viewability with AppSDK|Viewability with AppSDK.]]&lt;br /&gt;
&lt;br /&gt;
== Interruptions during playback ==&lt;br /&gt;
As part of integrating Nielsen App SDK with the player application, the Audio / Video app developer needs to handle the following possible interruption scenarios:&lt;br /&gt;
* Pause / Play&lt;br /&gt;
* Network Loss (Wi-Fi / Airplane / Cellular)&lt;br /&gt;
* Call Interrupt (SIM or Third party Skype / Hangout call)&lt;br /&gt;
* Alarm Interrupt&lt;br /&gt;
* Content Buffering&lt;br /&gt;
* Device Lock / Unlock (Video players only, not for Audio players)&lt;br /&gt;
* App going in the Background/Foreground (Video players only, not for Audio players)&lt;br /&gt;
* Channel / Station Change Scenario&lt;br /&gt;
* Unplugging of headphone&lt;br /&gt;
In case of encountering one of the above interruptions, the player application needs to&lt;br /&gt;
* Call [[stop]] immediately (except when content is buffering) and withhold sending playhead position.&lt;br /&gt;
* Start sending pings – [[loadMetadata]] and [[playheadPosition]] for the new viewing session, once the playback resumes.&lt;br /&gt;
Please see the [[Digital Measurement FAQ]] for more details&lt;br /&gt;
&lt;br /&gt;
== Nielsen Measurement Opt-Out Implementation ==&lt;br /&gt;
Opt-out implementation for podcasts is the same as live AM/FM stream measurement. &lt;br /&gt;
&lt;br /&gt;
== Technical Guides ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! style=&amp;quot;width: 90px;&amp;quot; | Type&lt;br /&gt;
! style=&amp;quot;width: 45px;&amp;quot; |&lt;br /&gt;
! style=&amp;quot;width: 45px;&amp;quot; | OS&lt;br /&gt;
! style=&amp;quot;width: 50%;&amp;quot; | DCR Implementation Guide&lt;br /&gt;
!| SDK Documentation&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;7&amp;quot; | {{SmallIcon|SDKIcon.png|alt=SDK}}&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | {{OSIcon|VideoIcon.png|alt=Video}}&lt;br /&gt;
| {{OSIcon|macOSIcon.png|alt=iOS}}&lt;br /&gt;
| '''[[DCR Video iOS SDK]]'''&lt;br /&gt;
| [[iOS SDK API Reference]]&lt;br /&gt;
|-&lt;br /&gt;
| {{OSIcon|AndroidIcon.png|alt=Android}}&lt;br /&gt;
| '''[[DCR Video Android SDK]]'''&lt;br /&gt;
| [[Android SDK API Reference]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;width: 90px;&amp;quot; |&lt;br /&gt;
! style=&amp;quot;width: 42%;&amp;quot; | Technical Guides&lt;br /&gt;
!&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;7&amp;quot; | {{SmallIcon|DigitalIcon.png}}&lt;br /&gt;
| '''[[Digital Measurement Onboarding]]'''&lt;br /&gt;
| '''[[Digital Measurement Metadata]]'''&lt;br /&gt;
|-&lt;br /&gt;
| '''[[Digital Measurement Testing]]'''&lt;br /&gt;
| '''[[Digital Measurement Interruption Scenarios]]'''&lt;br /&gt;
|-&lt;br /&gt;
| '''[[Digital Measurement FAQ]]'''&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| '''[[Digital Pre-Certification Checklist App SDK]]'''&lt;br /&gt;
| '''[[Digital Pre-Certification Checklist Browser SDK]]'''&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>KimBritt</name></author>
	</entry>
	<entry>
		<id>https://nielsentest.mywikis.net/w/index.php?title=DCR_Podcasts_in_Digital&amp;diff=2227</id>
		<title>DCR Podcasts in Digital</title>
		<link rel="alternate" type="text/html" href="https://nielsentest.mywikis.net/w/index.php?title=DCR_Podcasts_in_Digital&amp;diff=2227"/>
		<updated>2017-12-13T14:45:53Z</updated>

		<summary type="html">&lt;p&gt;KimBritt: example on-demand&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Breadcrumb|}} {{Breadcrumb|Digital}} {{CurrentBreadcrumb}}&lt;br /&gt;
[[Category:Digital]]&lt;br /&gt;
&lt;br /&gt;
== Prerequisites ==&lt;br /&gt;
This document assumes you have implemented Digital Audio with Live AM/FM stream measurement.    It outlines the new parameters you will use to implement podcast measurement with the DCR content type.  &lt;br /&gt;
&lt;br /&gt;
=== Library ===&lt;br /&gt;
Use the same library as Digital Audio, live AM/FM stream measurement.&lt;br /&gt;
&lt;br /&gt;
== Changes for Podcast Measurement ==&lt;br /&gt;
=== play ===&lt;br /&gt;
Use [[play]] to pass the channel descriptor information through channelName parameter when the user taps the '''Play''' button on the player.&lt;br /&gt;
&lt;br /&gt;
=== loadMetadata ===&lt;br /&gt;
Use [[loadMetadata]] to pass 'content' and 'ad' [[Digital Measurement Metadata]]. The CMS data must be passed as a JSON object.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;objective-c&amp;quot;&amp;gt;    – (void) loadMetadata :(id)metadata;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Refer to [[loadMetadata]] for the list of parameters to be passed in the JSON object.&lt;br /&gt;
&amp;lt;blockquote&amp;gt;'''Note:''' The [[loadMetadata]] call after the first [[play]] call must have ‘content’ details (&amp;quot;type&amp;quot;: &amp;quot;content&amp;quot;). This call should occur before any preroll ad starts playing.&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== playheadPosition (Content) ===&lt;br /&gt;
You will continue to use [[playheadPosition]] to pass the position of the playhead while the content is being played; however, you will pass the relative position from the beginning of the file.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;objective-c&amp;quot;&amp;gt;    – (void) playheadPosition: (long long) playheadPos&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Key !! Description !! Values !! Required? (Y/N) !! Example&lt;br /&gt;
|-&lt;br /&gt;
| Video On Demand (VOD)** || Position taken from beginning of the content in seconds. || Client-defined || Yes || Current player position from beginning of the content.&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;nowiki&amp;gt;**&amp;lt;/nowiki&amp;gt;''Only one of these parameters is mandatory''&lt;br /&gt;
&lt;br /&gt;
=== On-demand Syntax ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;objective-c&amp;quot;&amp;gt;    CMTime curTime=[player currentTime];&lt;br /&gt;
    long pos=CMTimeGetSeconds(curTime);&lt;br /&gt;
    [nAppApiObject playheadPosition:pos];&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== playheadPosition (Ad) ===&lt;br /&gt;
Use [[playheadPosition]] to pass the position of the playhead while the advertisement is being played.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;objective-c&amp;quot;&amp;gt;    – (void) playheadPosition: (long long) playheadPos&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Key !! Description !! Values !! Required? (Y/N) !! Example&lt;br /&gt;
|-&lt;br /&gt;
| Ad || Position taken from beginning of the ad in seconds || Client-defined || Yes || Seconds since tart of the ad&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
'''Ad Content'''&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;objective-c&amp;quot;&amp;gt;    CMTime curTime=[adplayer currentTime];&lt;br /&gt;
    long pos=CMTimeGetSeconds(curTime);&lt;br /&gt;
    [nAppApiObject playheadPosition:pos];&amp;lt;/syntaxhighlight&amp;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;
&lt;br /&gt;
=== stop ===&lt;br /&gt;
[[stop]] must be called on the following events:&lt;br /&gt;
* At the end of ad&lt;br /&gt;
* In case of interruptions during playback like flight mode, Wi-Fi toggle, etc. &lt;br /&gt;
&lt;br /&gt;
Call [[loadMetadata]] and [[playheadPosition]] when the stream resumes. &lt;br /&gt;
&lt;br /&gt;
Call [[play]] when starting the new stream.&lt;br /&gt;
&lt;br /&gt;
=== end ===&lt;br /&gt;
[[end]] must be called on the following events: &lt;br /&gt;
*End of playback &lt;br /&gt;
*Channel change&lt;br /&gt;
&lt;br /&gt;
=== API Call sequence ===&lt;br /&gt;
==== Use Case 1: Content has no Advertisements ====&lt;br /&gt;
Use the sample API sequence below as a reference to identify the specific events that need to be called during content playback without ads.&lt;br /&gt;
&lt;br /&gt;
Call [[play]] with channelName JSON as below.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;json&amp;quot;&amp;gt;{&lt;br /&gt;
   &amp;quot;channelName&amp;quot;: &amp;quot;TheMovieTitle&amp;quot;&lt;br /&gt;
}&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Call [[loadMetadata]] with JSON metadata for content as below.&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;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;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;
  &amp;quot;progen&amp;quot;:&amp;quot;GV&amp;quot;&lt;br /&gt;
}&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Call [[playheadPosition]] every one second until a pause / stop.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Type !! Sample code !! Description&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | Start of stream || &amp;lt;code&amp;gt;[nielsenMeter play: channelName];&amp;lt;/code&amp;gt; || // channelName contains JSON metadata of channel/video name being played&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter loadMetadata: contentMetadataObject];&amp;lt;/code&amp;gt; || // contentMetadataObject contains the JSON metadata for the content being played&lt;br /&gt;
|-&lt;br /&gt;
| Content || &amp;lt;code&amp;gt;[nielsenMeter playheadPosition: position];&amp;lt;/code&amp;gt; || // playheadPosition is position of the playhead while the content is being played&lt;br /&gt;
|-&lt;br /&gt;
| End of Stream || &amp;lt;code&amp;gt;[nielsenMeter end];&amp;lt;/code&amp;gt; || // Content playback is completed.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Use Case 2: Content has Advertisements ====&lt;br /&gt;
Call [[play]] with channelName JSON as below.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;json&amp;quot;&amp;gt;{&lt;br /&gt;
   &amp;quot;channelName&amp;quot;: &amp;quot;TheMovieTitle&amp;quot;&lt;br /&gt;
}&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Call [[loadMetadata]] with JSON metadata for ad as below.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;json&amp;quot;&amp;gt;{&lt;br /&gt;
   &amp;quot;type&amp;quot;: &amp;quot;preroll&amp;quot;,&lt;br /&gt;
   &amp;quot;assetid&amp;quot;: &amp;quot;ad=123&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 [[loadMetadata]] and playhead position through [[playheadPosition]].&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Call [[playheadPosition]] every one second until a pause / stop / another ''loadMetadata'' is called. Playhead should be passed for the entire duration of ad pod, if the ad pod details are passed as part of [[loadMetadata]].&lt;br /&gt;
&lt;br /&gt;
The sample API sequence can be used as a reference to identify the specific events that need to be called during content and ad playback.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Type !! Sample code !! Description&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | Start of stream || &amp;lt;code&amp;gt;[nielsenMeter play: channelName];&amp;lt;/code&amp;gt; || // channelName contains JSON metadata of channel/video name being played&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter loadMetadata: contentMetadataObject];&amp;lt;/code&amp;gt; || // contentMetadataObject contains the JSON metadata for the content being played&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Preroll || &amp;lt;code&amp;gt;[nielsenMeter loadMetadata: prerollMetadataObject];&amp;lt;/code&amp;gt; || // prerollMetadataObject contains the JSON metadata for the preroll ad&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter playheadPosition: position];&amp;lt;/code&amp;gt; || // position is position of the playhead while the preroll ad is being played&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter stop];&amp;lt;/code&amp;gt; || // Call stop after preroll occurs&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Content || &amp;lt;code&amp;gt;[nielsenMeter loadMetadata: contentMetadataObject];&amp;lt;/code&amp;gt; || // contentMetadataObject contains the JSON metadata for the content being played&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter playheadPosition: position];&amp;lt;/code&amp;gt; || // position is position of the playhead while the content is being played&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter stop];&amp;lt;/code&amp;gt; || // Call stop after the content is paused (ad starts)&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Midroll || &amp;lt;code&amp;gt;[nielsenMeter loadMetadata: midrollMetadataObject];&amp;lt;/code&amp;gt; || // midrollMetadataObject contains the JSON metadata for the midroll ad&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter playheadPosition: position];&amp;lt;/code&amp;gt; || // position is position of the playhead while the midroll ad is being played&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter stop];&amp;lt;/code&amp;gt; || // Call stop after midroll occurs&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Content (End of stream) || &amp;lt;code&amp;gt;[nielsenMeter loadMetadata: contentMetadataObject];&amp;lt;/code&amp;gt; || // contentMetadataObject contains the JSON metadata for the content being played&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter playheadPosition: position];&amp;lt;/code&amp;gt; || // position is position of the playhead while the content is being played&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter end];&amp;lt;/code&amp;gt; || // Called at the end of content&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Postroll || &amp;lt;code&amp;gt;[nielsenMeter loadMetadata: postrollMetadataObject];&amp;lt;/code&amp;gt; || // postrollMetadataObject contains the JSON metadata for the postroll ad&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter playheadPosition: position];&amp;lt;/code&amp;gt; || // position is position of the playhead while the postroll ad is being played&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter stop];&amp;lt;/code&amp;gt; || // Call stop after postroll occurs&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;'''Note:''' Each Ad playhead should reset or begin from 0 at ad start. When content has resumed following an ad break, playhead position must continue from where previous content segment was left off.&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== The Viewability Metric ==&lt;br /&gt;
The viewability metric introduced in the Nielsen AppSDK represents the visibility of a video in the player along a playback. If you decide to implement the Nielsen Viewability Module, the SDK will track the viewability of the targeted player/element, log the viewable percentage, and record in seconds the time the player/element was in that viewable state.  Please refer to Implementing [[Implementing Viewability with AppSDK|Viewability with AppSDK.]]&lt;br /&gt;
&lt;br /&gt;
== Interruptions during playback ==&lt;br /&gt;
As part of integrating Nielsen App SDK with the player application, the Audio / Video app developer needs to handle the following possible interruption scenarios:&lt;br /&gt;
* Pause / Play&lt;br /&gt;
* Network Loss (Wi-Fi / Airplane / Cellular)&lt;br /&gt;
* Call Interrupt (SIM or Third party Skype / Hangout call)&lt;br /&gt;
* Alarm Interrupt&lt;br /&gt;
* Content Buffering&lt;br /&gt;
* Device Lock / Unlock (Video players only, not for Audio players)&lt;br /&gt;
* App going in the Background/Foreground (Video players only, not for Audio players)&lt;br /&gt;
* Channel / Station Change Scenario&lt;br /&gt;
* Unplugging of headphone&lt;br /&gt;
In case of encountering one of the above interruptions, the player application needs to&lt;br /&gt;
* Call [[stop]] immediately (except when content is buffering) and withhold sending playhead position.&lt;br /&gt;
* Start sending pings – [[loadMetadata]] and [[playheadPosition]] for the new viewing session, once the playback resumes.&lt;br /&gt;
Please see the [[Digital Measurement FAQ]] for more details&lt;br /&gt;
&lt;br /&gt;
== Nielsen Measurement Opt-Out Implementation ==&lt;br /&gt;
Opt-out implementation for podcasts is the same as live AM/FM stream measurement. &lt;br /&gt;
&lt;br /&gt;
== Technical Guides ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! style=&amp;quot;width: 90px;&amp;quot; | Type&lt;br /&gt;
! style=&amp;quot;width: 45px;&amp;quot; |&lt;br /&gt;
! style=&amp;quot;width: 45px;&amp;quot; | OS&lt;br /&gt;
! style=&amp;quot;width: 50%;&amp;quot; | DCR Implementation Guide&lt;br /&gt;
!| SDK Documentation&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;7&amp;quot; | {{SmallIcon|SDKIcon.png|alt=SDK}}&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | {{OSIcon|VideoIcon.png|alt=Video}}&lt;br /&gt;
| {{OSIcon|macOSIcon.png|alt=iOS}}&lt;br /&gt;
| '''[[DCR Video iOS SDK]]'''&lt;br /&gt;
| [[iOS SDK API Reference]]&lt;br /&gt;
|-&lt;br /&gt;
| {{OSIcon|AndroidIcon.png|alt=Android}}&lt;br /&gt;
| '''[[DCR Video Android SDK]]'''&lt;br /&gt;
| [[Android SDK API Reference]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;width: 90px;&amp;quot; |&lt;br /&gt;
! style=&amp;quot;width: 42%;&amp;quot; | Technical Guides&lt;br /&gt;
!&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;7&amp;quot; | {{SmallIcon|DigitalIcon.png}}&lt;br /&gt;
| '''[[Digital Measurement Onboarding]]'''&lt;br /&gt;
| '''[[Digital Measurement Metadata]]'''&lt;br /&gt;
|-&lt;br /&gt;
| '''[[Digital Measurement Testing]]'''&lt;br /&gt;
| '''[[Digital Measurement Interruption Scenarios]]'''&lt;br /&gt;
|-&lt;br /&gt;
| '''[[Digital Measurement FAQ]]'''&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| '''[[Digital Pre-Certification Checklist App SDK]]'''&lt;br /&gt;
| '''[[Digital Pre-Certification Checklist Browser SDK]]'''&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>KimBritt</name></author>
	</entry>
	<entry>
		<id>https://nielsentest.mywikis.net/w/index.php?title=DCR_Podcasts_in_Digital&amp;diff=2226</id>
		<title>DCR Podcasts in Digital</title>
		<link rel="alternate" type="text/html" href="https://nielsentest.mywikis.net/w/index.php?title=DCR_Podcasts_in_Digital&amp;diff=2226"/>
		<updated>2017-12-13T14:42:41Z</updated>

		<summary type="html">&lt;p&gt;KimBritt: titles&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Breadcrumb|}} {{Breadcrumb|Digital}} {{CurrentBreadcrumb}}&lt;br /&gt;
[[Category:Digital]]&lt;br /&gt;
&lt;br /&gt;
== Prerequisites ==&lt;br /&gt;
This document assumes you have implemented Digital Audio with Live AM/FM stream measurement.    It outlines the new parameters you will use to implement podcast measurement with the DCR content type.  &lt;br /&gt;
&lt;br /&gt;
=== Library ===&lt;br /&gt;
Use the same library as Digital Audio, live AM/FM stream measurement.&lt;br /&gt;
&lt;br /&gt;
== Changes for Podcast Measurement ==&lt;br /&gt;
=== play ===&lt;br /&gt;
Use [[play]] to pass the channel descriptor information through channelName parameter when the user taps the '''Play''' button on the player.&lt;br /&gt;
&lt;br /&gt;
=== loadMetadata ===&lt;br /&gt;
Use [[loadMetadata]] to pass 'content' and 'ad' [[Digital Measurement Metadata]]. The CMS data must be passed as a JSON object.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;objective-c&amp;quot;&amp;gt;    – (void) loadMetadata :(id)metadata;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Refer to [[loadMetadata]] for the list of parameters to be passed in the JSON object.&lt;br /&gt;
&amp;lt;blockquote&amp;gt;'''Note:''' The [[loadMetadata]] call after the first [[play]] call must have ‘content’ details (&amp;quot;type&amp;quot;: &amp;quot;content&amp;quot;). This call should occur before any preroll ad starts playing.&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== playheadPosition (Content) ===&lt;br /&gt;
Use [[playheadPosition]] to pass the position of the playhead while the content is being played.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;objective-c&amp;quot;&amp;gt;    – (void) playheadPosition: (long long) playheadPos&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! # !! Key !! Description !! Values !! Required? (Y/N) !! Example&lt;br /&gt;
|-&lt;br /&gt;
| 1 || Live** || UTC of the live content || Client-defined || Yes || Seconds since 1970&lt;br /&gt;
|-&lt;br /&gt;
| 2 || Video On Demand (VOD)** || Position taken from beginning of the content in seconds. || Client-defined || Yes || Current player position from beginning of the content.&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;nowiki&amp;gt;**&amp;lt;/nowiki&amp;gt;''Only one of these parameters is mandatory''&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;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;
&lt;br /&gt;
'''Live Content'''&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;objective-c&amp;quot;&amp;gt;    long long pos = [[NSDate date] timeIntervalSince1970];&lt;br /&gt;
    [nAppApiObject playheadPosition:pos];&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&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;    CMTime curTime=[player currentTime];&lt;br /&gt;
    long pos=CMTimeGetSeconds(curTime);&lt;br /&gt;
    [nAppApiObject playheadPosition:pos];&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== playheadPosition (Ad) ===&lt;br /&gt;
Use [[playheadPosition]] to pass the position of the playhead while the advertisement is being played.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;objective-c&amp;quot;&amp;gt;    – (void) playheadPosition: (long long) playheadPos&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Key !! Description !! Values !! Required? (Y/N) !! Example&lt;br /&gt;
|-&lt;br /&gt;
| Ad || Position taken from beginning of the ad in seconds || Client-defined || Yes || Seconds since tart of the ad&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
'''Ad Content'''&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;objective-c&amp;quot;&amp;gt;    CMTime curTime=[adplayer currentTime];&lt;br /&gt;
    long pos=CMTimeGetSeconds(curTime);&lt;br /&gt;
    [nAppApiObject playheadPosition:pos];&amp;lt;/syntaxhighlight&amp;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;
&lt;br /&gt;
=== stop ===&lt;br /&gt;
[[stop]] must be called on the following events:&lt;br /&gt;
* At the end of ad&lt;br /&gt;
* In case of interruptions during playback like flight mode, Wi-Fi toggle, etc. &lt;br /&gt;
&lt;br /&gt;
Call [[loadMetadata]] and [[playheadPosition]] when the stream resumes. &lt;br /&gt;
&lt;br /&gt;
Call [[play]] when starting the new stream.&lt;br /&gt;
&lt;br /&gt;
=== end ===&lt;br /&gt;
[[end]] must be called on the following events: &lt;br /&gt;
*End of playback &lt;br /&gt;
*Channel change&lt;br /&gt;
&lt;br /&gt;
=== API Call sequence ===&lt;br /&gt;
==== Use Case 1: Content has no Advertisements ====&lt;br /&gt;
Use the sample API sequence below as a reference to identify the specific events that need to be called during content playback without ads.&lt;br /&gt;
&lt;br /&gt;
Call [[play]] with channelName JSON as below.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;json&amp;quot;&amp;gt;{&lt;br /&gt;
   &amp;quot;channelName&amp;quot;: &amp;quot;TheMovieTitle&amp;quot;&lt;br /&gt;
}&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Call [[loadMetadata]] with JSON metadata for content as below.&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;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;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;
  &amp;quot;progen&amp;quot;:&amp;quot;GV&amp;quot;&lt;br /&gt;
}&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Call [[playheadPosition]] every one second until a pause / stop.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Type !! Sample code !! Description&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | Start of stream || &amp;lt;code&amp;gt;[nielsenMeter play: channelName];&amp;lt;/code&amp;gt; || // channelName contains JSON metadata of channel/video name being played&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter loadMetadata: contentMetadataObject];&amp;lt;/code&amp;gt; || // contentMetadataObject contains the JSON metadata for the content being played&lt;br /&gt;
|-&lt;br /&gt;
| Content || &amp;lt;code&amp;gt;[nielsenMeter playheadPosition: position];&amp;lt;/code&amp;gt; || // playheadPosition is position of the playhead while the content is being played&lt;br /&gt;
|-&lt;br /&gt;
| End of Stream || &amp;lt;code&amp;gt;[nielsenMeter end];&amp;lt;/code&amp;gt; || // Content playback is completed.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Use Case 2: Content has Advertisements ====&lt;br /&gt;
Call [[play]] with channelName JSON as below.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;json&amp;quot;&amp;gt;{&lt;br /&gt;
   &amp;quot;channelName&amp;quot;: &amp;quot;TheMovieTitle&amp;quot;&lt;br /&gt;
}&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Call [[loadMetadata]] with JSON metadata for ad as below.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;json&amp;quot;&amp;gt;{&lt;br /&gt;
   &amp;quot;type&amp;quot;: &amp;quot;preroll&amp;quot;,&lt;br /&gt;
   &amp;quot;assetid&amp;quot;: &amp;quot;ad=123&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 [[loadMetadata]] and playhead position through [[playheadPosition]].&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Call [[playheadPosition]] every one second until a pause / stop / another ''loadMetadata'' is called. Playhead should be passed for the entire duration of ad pod, if the ad pod details are passed as part of [[loadMetadata]].&lt;br /&gt;
&lt;br /&gt;
The sample API sequence can be used as a reference to identify the specific events that need to be called during content and ad playback.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Type !! Sample code !! Description&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | Start of stream || &amp;lt;code&amp;gt;[nielsenMeter play: channelName];&amp;lt;/code&amp;gt; || // channelName contains JSON metadata of channel/video name being played&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter loadMetadata: contentMetadataObject];&amp;lt;/code&amp;gt; || // contentMetadataObject contains the JSON metadata for the content being played&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Preroll || &amp;lt;code&amp;gt;[nielsenMeter loadMetadata: prerollMetadataObject];&amp;lt;/code&amp;gt; || // prerollMetadataObject contains the JSON metadata for the preroll ad&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter playheadPosition: position];&amp;lt;/code&amp;gt; || // position is position of the playhead while the preroll ad is being played&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter stop];&amp;lt;/code&amp;gt; || // Call stop after preroll occurs&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Content || &amp;lt;code&amp;gt;[nielsenMeter loadMetadata: contentMetadataObject];&amp;lt;/code&amp;gt; || // contentMetadataObject contains the JSON metadata for the content being played&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter playheadPosition: position];&amp;lt;/code&amp;gt; || // position is position of the playhead while the content is being played&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter stop];&amp;lt;/code&amp;gt; || // Call stop after the content is paused (ad starts)&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Midroll || &amp;lt;code&amp;gt;[nielsenMeter loadMetadata: midrollMetadataObject];&amp;lt;/code&amp;gt; || // midrollMetadataObject contains the JSON metadata for the midroll ad&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter playheadPosition: position];&amp;lt;/code&amp;gt; || // position is position of the playhead while the midroll ad is being played&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter stop];&amp;lt;/code&amp;gt; || // Call stop after midroll occurs&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Content (End of stream) || &amp;lt;code&amp;gt;[nielsenMeter loadMetadata: contentMetadataObject];&amp;lt;/code&amp;gt; || // contentMetadataObject contains the JSON metadata for the content being played&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter playheadPosition: position];&amp;lt;/code&amp;gt; || // position is position of the playhead while the content is being played&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter end];&amp;lt;/code&amp;gt; || // Called at the end of content&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Postroll || &amp;lt;code&amp;gt;[nielsenMeter loadMetadata: postrollMetadataObject];&amp;lt;/code&amp;gt; || // postrollMetadataObject contains the JSON metadata for the postroll ad&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter playheadPosition: position];&amp;lt;/code&amp;gt; || // position is position of the playhead while the postroll ad is being played&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter stop];&amp;lt;/code&amp;gt; || // Call stop after postroll occurs&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;'''Note:''' Each Ad playhead should reset or begin from 0 at ad start. When content has resumed following an ad break, playhead position must continue from where previous content segment was left off.&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== The Viewability Metric ==&lt;br /&gt;
The viewability metric introduced in the Nielsen AppSDK represents the visibility of a video in the player along a playback. If you decide to implement the Nielsen Viewability Module, the SDK will track the viewability of the targeted player/element, log the viewable percentage, and record in seconds the time the player/element was in that viewable state.  Please refer to Implementing [[Implementing Viewability with AppSDK|Viewability with AppSDK.]]&lt;br /&gt;
&lt;br /&gt;
== Interruptions during playback ==&lt;br /&gt;
As part of integrating Nielsen App SDK with the player application, the Audio / Video app developer needs to handle the following possible interruption scenarios:&lt;br /&gt;
* Pause / Play&lt;br /&gt;
* Network Loss (Wi-Fi / Airplane / Cellular)&lt;br /&gt;
* Call Interrupt (SIM or Third party Skype / Hangout call)&lt;br /&gt;
* Alarm Interrupt&lt;br /&gt;
* Content Buffering&lt;br /&gt;
* Device Lock / Unlock (Video players only, not for Audio players)&lt;br /&gt;
* App going in the Background/Foreground (Video players only, not for Audio players)&lt;br /&gt;
* Channel / Station Change Scenario&lt;br /&gt;
* Unplugging of headphone&lt;br /&gt;
In case of encountering one of the above interruptions, the player application needs to&lt;br /&gt;
* Call [[stop]] immediately (except when content is buffering) and withhold sending playhead position.&lt;br /&gt;
* Start sending pings – [[loadMetadata]] and [[playheadPosition]] for the new viewing session, once the playback resumes.&lt;br /&gt;
Please see the [[Digital Measurement FAQ]] for more details&lt;br /&gt;
&lt;br /&gt;
== Nielsen Measurement Opt-Out Implementation ==&lt;br /&gt;
Opt-out implementation for podcasts is the same as live AM/FM stream measurement. &lt;br /&gt;
&lt;br /&gt;
== Technical Guides ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! style=&amp;quot;width: 90px;&amp;quot; | Type&lt;br /&gt;
! style=&amp;quot;width: 45px;&amp;quot; |&lt;br /&gt;
! style=&amp;quot;width: 45px;&amp;quot; | OS&lt;br /&gt;
! style=&amp;quot;width: 50%;&amp;quot; | DCR Implementation Guide&lt;br /&gt;
!| SDK Documentation&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;7&amp;quot; | {{SmallIcon|SDKIcon.png|alt=SDK}}&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | {{OSIcon|VideoIcon.png|alt=Video}}&lt;br /&gt;
| {{OSIcon|macOSIcon.png|alt=iOS}}&lt;br /&gt;
| '''[[DCR Video iOS SDK]]'''&lt;br /&gt;
| [[iOS SDK API Reference]]&lt;br /&gt;
|-&lt;br /&gt;
| {{OSIcon|AndroidIcon.png|alt=Android}}&lt;br /&gt;
| '''[[DCR Video Android SDK]]'''&lt;br /&gt;
| [[Android SDK API Reference]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;width: 90px;&amp;quot; |&lt;br /&gt;
! style=&amp;quot;width: 42%;&amp;quot; | Technical Guides&lt;br /&gt;
!&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;7&amp;quot; | {{SmallIcon|DigitalIcon.png}}&lt;br /&gt;
| '''[[Digital Measurement Onboarding]]'''&lt;br /&gt;
| '''[[Digital Measurement Metadata]]'''&lt;br /&gt;
|-&lt;br /&gt;
| '''[[Digital Measurement Testing]]'''&lt;br /&gt;
| '''[[Digital Measurement Interruption Scenarios]]'''&lt;br /&gt;
|-&lt;br /&gt;
| '''[[Digital Measurement FAQ]]'''&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| '''[[Digital Pre-Certification Checklist App SDK]]'''&lt;br /&gt;
| '''[[Digital Pre-Certification Checklist Browser SDK]]'''&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>KimBritt</name></author>
	</entry>
	<entry>
		<id>https://nielsentest.mywikis.net/w/index.php?title=DCR_Podcasts_in_Digital&amp;diff=2225</id>
		<title>DCR Podcasts in Digital</title>
		<link rel="alternate" type="text/html" href="https://nielsentest.mywikis.net/w/index.php?title=DCR_Podcasts_in_Digital&amp;diff=2225"/>
		<updated>2017-12-13T14:41:14Z</updated>

		<summary type="html">&lt;p&gt;KimBritt: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Breadcrumb|}} {{Breadcrumb|Digital}} {{CurrentBreadcrumb}}&lt;br /&gt;
[[Category:Digital]]&lt;br /&gt;
&lt;br /&gt;
== Prerequisites ==&lt;br /&gt;
This document assumes you have implemented Digital Audio with Live AM/FM stream measurement.    It outlines the new parameters you will use to implement podcast measurement with the DCR content type.  &lt;br /&gt;
&lt;br /&gt;
=== Library ===&lt;br /&gt;
Use the same library as Digital Audio, live AM/FM stream measurement.&lt;br /&gt;
&lt;br /&gt;
== Initialize SDK ==&lt;br /&gt;
Initialize App SDK as soon as the application is launched. Refer to [[iOS SDK API Reference#Initialization|iOS SDK API Reference - Initialization]] for details on initializing an AppSDK object and the parameters required.&lt;br /&gt;
&lt;br /&gt;
== Configure API calls ==&lt;br /&gt;
=== play ===&lt;br /&gt;
Use [[play]] to pass the channel descriptor information through channelName parameter when the user taps the '''Play''' button on the player.&lt;br /&gt;
&lt;br /&gt;
=== loadMetadata ===&lt;br /&gt;
Use [[loadMetadata]] to pass 'content' and 'ad' [[Digital Measurement Metadata]]. The CMS data must be passed as a JSON object.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;objective-c&amp;quot;&amp;gt;    – (void) loadMetadata :(id)metadata;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Refer to [[loadMetadata]] for the list of parameters to be passed in the JSON object.&lt;br /&gt;
&amp;lt;blockquote&amp;gt;'''Note:''' The [[loadMetadata]] call after the first [[play]] call must have ‘content’ details (&amp;quot;type&amp;quot;: &amp;quot;content&amp;quot;). This call should occur before any preroll ad starts playing.&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== playheadPosition (Content) ===&lt;br /&gt;
Use [[playheadPosition]] to pass the position of the playhead while the content is being played.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;objective-c&amp;quot;&amp;gt;    – (void) playheadPosition: (long long) playheadPos&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! # !! Key !! Description !! Values !! Required? (Y/N) !! Example&lt;br /&gt;
|-&lt;br /&gt;
| 1 || Live** || UTC of the live content || Client-defined || Yes || Seconds since 1970&lt;br /&gt;
|-&lt;br /&gt;
| 2 || Video On Demand (VOD)** || Position taken from beginning of the content in seconds. || Client-defined || Yes || Current player position from beginning of the content.&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;nowiki&amp;gt;**&amp;lt;/nowiki&amp;gt;''Only one of these parameters is mandatory''&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;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;
&lt;br /&gt;
'''Live Content'''&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;objective-c&amp;quot;&amp;gt;    long long pos = [[NSDate date] timeIntervalSince1970];&lt;br /&gt;
    [nAppApiObject playheadPosition:pos];&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&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;    CMTime curTime=[player currentTime];&lt;br /&gt;
    long pos=CMTimeGetSeconds(curTime);&lt;br /&gt;
    [nAppApiObject playheadPosition:pos];&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== playheadPosition (Ad) ===&lt;br /&gt;
Use [[playheadPosition]] to pass the position of the playhead while the advertisement is being played.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;objective-c&amp;quot;&amp;gt;    – (void) playheadPosition: (long long) playheadPos&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Key !! Description !! Values !! Required? (Y/N) !! Example&lt;br /&gt;
|-&lt;br /&gt;
| Ad || Position taken from beginning of the ad in seconds || Client-defined || Yes || Seconds since tart of the ad&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
'''Ad Content'''&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;objective-c&amp;quot;&amp;gt;    CMTime curTime=[adplayer currentTime];&lt;br /&gt;
    long pos=CMTimeGetSeconds(curTime);&lt;br /&gt;
    [nAppApiObject playheadPosition:pos];&amp;lt;/syntaxhighlight&amp;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;
&lt;br /&gt;
=== stop ===&lt;br /&gt;
[[stop]] must be called on the following events:&lt;br /&gt;
* At the end of ad&lt;br /&gt;
* In case of interruptions during playback like flight mode, Wi-Fi toggle, etc. &lt;br /&gt;
&lt;br /&gt;
Call [[loadMetadata]] and [[playheadPosition]] when the stream resumes. &lt;br /&gt;
&lt;br /&gt;
Call [[play]] when starting the new stream.&lt;br /&gt;
&lt;br /&gt;
=== end ===&lt;br /&gt;
[[end]] must be called on the following events: &lt;br /&gt;
*End of playback &lt;br /&gt;
*Channel change&lt;br /&gt;
&lt;br /&gt;
=== API Call sequence ===&lt;br /&gt;
==== Use Case 1: Content has no Advertisements ====&lt;br /&gt;
Use the sample API sequence below as a reference to identify the specific events that need to be called during content playback without ads.&lt;br /&gt;
&lt;br /&gt;
Call [[play]] with channelName JSON as below.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;json&amp;quot;&amp;gt;{&lt;br /&gt;
   &amp;quot;channelName&amp;quot;: &amp;quot;TheMovieTitle&amp;quot;&lt;br /&gt;
}&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Call [[loadMetadata]] with JSON metadata for content as below.&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;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;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;
  &amp;quot;progen&amp;quot;:&amp;quot;GV&amp;quot;&lt;br /&gt;
}&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Call [[playheadPosition]] every one second until a pause / stop.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Type !! Sample code !! Description&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | Start of stream || &amp;lt;code&amp;gt;[nielsenMeter play: channelName];&amp;lt;/code&amp;gt; || // channelName contains JSON metadata of channel/video name being played&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter loadMetadata: contentMetadataObject];&amp;lt;/code&amp;gt; || // contentMetadataObject contains the JSON metadata for the content being played&lt;br /&gt;
|-&lt;br /&gt;
| Content || &amp;lt;code&amp;gt;[nielsenMeter playheadPosition: position];&amp;lt;/code&amp;gt; || // playheadPosition is position of the playhead while the content is being played&lt;br /&gt;
|-&lt;br /&gt;
| End of Stream || &amp;lt;code&amp;gt;[nielsenMeter end];&amp;lt;/code&amp;gt; || // Content playback is completed.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Use Case 2: Content has Advertisements ====&lt;br /&gt;
Call [[play]] with channelName JSON as below.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;json&amp;quot;&amp;gt;{&lt;br /&gt;
   &amp;quot;channelName&amp;quot;: &amp;quot;TheMovieTitle&amp;quot;&lt;br /&gt;
}&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Call [[loadMetadata]] with JSON metadata for ad as below.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;json&amp;quot;&amp;gt;{&lt;br /&gt;
   &amp;quot;type&amp;quot;: &amp;quot;preroll&amp;quot;,&lt;br /&gt;
   &amp;quot;assetid&amp;quot;: &amp;quot;ad=123&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 [[loadMetadata]] and playhead position through [[playheadPosition]].&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Call [[playheadPosition]] every one second until a pause / stop / another ''loadMetadata'' is called. Playhead should be passed for the entire duration of ad pod, if the ad pod details are passed as part of [[loadMetadata]].&lt;br /&gt;
&lt;br /&gt;
The sample API sequence can be used as a reference to identify the specific events that need to be called during content and ad playback.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Type !! Sample code !! Description&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | Start of stream || &amp;lt;code&amp;gt;[nielsenMeter play: channelName];&amp;lt;/code&amp;gt; || // channelName contains JSON metadata of channel/video name being played&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter loadMetadata: contentMetadataObject];&amp;lt;/code&amp;gt; || // contentMetadataObject contains the JSON metadata for the content being played&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Preroll || &amp;lt;code&amp;gt;[nielsenMeter loadMetadata: prerollMetadataObject];&amp;lt;/code&amp;gt; || // prerollMetadataObject contains the JSON metadata for the preroll ad&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter playheadPosition: position];&amp;lt;/code&amp;gt; || // position is position of the playhead while the preroll ad is being played&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter stop];&amp;lt;/code&amp;gt; || // Call stop after preroll occurs&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Content || &amp;lt;code&amp;gt;[nielsenMeter loadMetadata: contentMetadataObject];&amp;lt;/code&amp;gt; || // contentMetadataObject contains the JSON metadata for the content being played&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter playheadPosition: position];&amp;lt;/code&amp;gt; || // position is position of the playhead while the content is being played&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter stop];&amp;lt;/code&amp;gt; || // Call stop after the content is paused (ad starts)&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Midroll || &amp;lt;code&amp;gt;[nielsenMeter loadMetadata: midrollMetadataObject];&amp;lt;/code&amp;gt; || // midrollMetadataObject contains the JSON metadata for the midroll ad&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter playheadPosition: position];&amp;lt;/code&amp;gt; || // position is position of the playhead while the midroll ad is being played&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter stop];&amp;lt;/code&amp;gt; || // Call stop after midroll occurs&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Content (End of stream) || &amp;lt;code&amp;gt;[nielsenMeter loadMetadata: contentMetadataObject];&amp;lt;/code&amp;gt; || // contentMetadataObject contains the JSON metadata for the content being played&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter playheadPosition: position];&amp;lt;/code&amp;gt; || // position is position of the playhead while the content is being played&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter end];&amp;lt;/code&amp;gt; || // Called at the end of content&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Postroll || &amp;lt;code&amp;gt;[nielsenMeter loadMetadata: postrollMetadataObject];&amp;lt;/code&amp;gt; || // postrollMetadataObject contains the JSON metadata for the postroll ad&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter playheadPosition: position];&amp;lt;/code&amp;gt; || // position is position of the playhead while the postroll ad is being played&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter stop];&amp;lt;/code&amp;gt; || // Call stop after postroll occurs&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;'''Note:''' Each Ad playhead should reset or begin from 0 at ad start. When content has resumed following an ad break, playhead position must continue from where previous content segment was left off.&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== The Viewability Metric ==&lt;br /&gt;
The viewability metric introduced in the Nielsen AppSDK represents the visibility of a video in the player along a playback. If you decide to implement the Nielsen Viewability Module, the SDK will track the viewability of the targeted player/element, log the viewable percentage, and record in seconds the time the player/element was in that viewable state.  Please refer to Implementing [[Implementing Viewability with AppSDK|Viewability with AppSDK.]]&lt;br /&gt;
&lt;br /&gt;
== Interruptions during playback ==&lt;br /&gt;
As part of integrating Nielsen App SDK with the player application, the Audio / Video app developer needs to handle the following possible interruption scenarios:&lt;br /&gt;
* Pause / Play&lt;br /&gt;
* Network Loss (Wi-Fi / Airplane / Cellular)&lt;br /&gt;
* Call Interrupt (SIM or Third party Skype / Hangout call)&lt;br /&gt;
* Alarm Interrupt&lt;br /&gt;
* Content Buffering&lt;br /&gt;
* Device Lock / Unlock (Video players only, not for Audio players)&lt;br /&gt;
* App going in the Background/Foreground (Video players only, not for Audio players)&lt;br /&gt;
* Channel / Station Change Scenario&lt;br /&gt;
* Unplugging of headphone&lt;br /&gt;
In case of encountering one of the above interruptions, the player application needs to&lt;br /&gt;
* Call [[stop]] immediately (except when content is buffering) and withhold sending playhead position.&lt;br /&gt;
* Start sending pings – [[loadMetadata]] and [[playheadPosition]] for the new viewing session, once the playback resumes.&lt;br /&gt;
Please see the [[Digital Measurement FAQ]] for more details&lt;br /&gt;
&lt;br /&gt;
== Nielsen Measurement Opt-Out Implementation ==&lt;br /&gt;
Opt-out implementation for podcasts is the same as live AM/FM stream measurement. &lt;br /&gt;
&lt;br /&gt;
== Technical Guides ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! style=&amp;quot;width: 90px;&amp;quot; | Type&lt;br /&gt;
! style=&amp;quot;width: 45px;&amp;quot; |&lt;br /&gt;
! style=&amp;quot;width: 45px;&amp;quot; | OS&lt;br /&gt;
! style=&amp;quot;width: 50%;&amp;quot; | DCR Implementation Guide&lt;br /&gt;
!| SDK Documentation&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;7&amp;quot; | {{SmallIcon|SDKIcon.png|alt=SDK}}&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | {{OSIcon|VideoIcon.png|alt=Video}}&lt;br /&gt;
| {{OSIcon|macOSIcon.png|alt=iOS}}&lt;br /&gt;
| '''[[DCR Video iOS SDK]]'''&lt;br /&gt;
| [[iOS SDK API Reference]]&lt;br /&gt;
|-&lt;br /&gt;
| {{OSIcon|AndroidIcon.png|alt=Android}}&lt;br /&gt;
| '''[[DCR Video Android SDK]]'''&lt;br /&gt;
| [[Android SDK API Reference]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;width: 90px;&amp;quot; |&lt;br /&gt;
! style=&amp;quot;width: 42%;&amp;quot; | Technical Guides&lt;br /&gt;
!&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;7&amp;quot; | {{SmallIcon|DigitalIcon.png}}&lt;br /&gt;
| '''[[Digital Measurement Onboarding]]'''&lt;br /&gt;
| '''[[Digital Measurement Metadata]]'''&lt;br /&gt;
|-&lt;br /&gt;
| '''[[Digital Measurement Testing]]'''&lt;br /&gt;
| '''[[Digital Measurement Interruption Scenarios]]'''&lt;br /&gt;
|-&lt;br /&gt;
| '''[[Digital Measurement FAQ]]'''&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| '''[[Digital Pre-Certification Checklist App SDK]]'''&lt;br /&gt;
| '''[[Digital Pre-Certification Checklist Browser SDK]]'''&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>KimBritt</name></author>
	</entry>
	<entry>
		<id>https://nielsentest.mywikis.net/w/index.php?title=DCR_Podcasts_in_Digital&amp;diff=2224</id>
		<title>DCR Podcasts in Digital</title>
		<link rel="alternate" type="text/html" href="https://nielsentest.mywikis.net/w/index.php?title=DCR_Podcasts_in_Digital&amp;diff=2224"/>
		<updated>2017-12-13T14:38:56Z</updated>

		<summary type="html">&lt;p&gt;KimBritt: /* Prerequisites */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Breadcrumb|}} {{Breadcrumb|Digital}} {{CurrentBreadcrumb}}&lt;br /&gt;
[[Category:Digital]]&lt;br /&gt;
&lt;br /&gt;
== Prerequisites ==&lt;br /&gt;
This document assumes you have implemented Digital Audio with Live AM/FM stream measurement.&lt;br /&gt;
&lt;br /&gt;
== Import Library ==&lt;br /&gt;
Refer to [[iOS SDK API Reference#Importing Frameworks|iOS SDK API Reference - Importing Frameworks]] for information on importing libraries.&lt;br /&gt;
* The latest version of App SDK allows instantiating multiple instances of App SDK object and can be used simultaneously without any issues.&lt;br /&gt;
&lt;br /&gt;
== Initialize SDK ==&lt;br /&gt;
Initialize App SDK as soon as the application is launched. Refer to [[iOS SDK API Reference#Initialization|iOS SDK API Reference - Initialization]] for details on initializing an AppSDK object and the parameters required.&lt;br /&gt;
&lt;br /&gt;
== Configure API calls ==&lt;br /&gt;
=== play ===&lt;br /&gt;
Use [[play]] to pass the channel descriptor information through channelName parameter when the user taps the '''Play''' button on the player.&lt;br /&gt;
&lt;br /&gt;
=== loadMetadata ===&lt;br /&gt;
Use [[loadMetadata]] to pass 'content' and 'ad' [[Digital Measurement Metadata]]. The CMS data must be passed as a JSON object.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;objective-c&amp;quot;&amp;gt;    – (void) loadMetadata :(id)metadata;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Refer to [[loadMetadata]] for the list of parameters to be passed in the JSON object.&lt;br /&gt;
&amp;lt;blockquote&amp;gt;'''Note:''' The [[loadMetadata]] call after the first [[play]] call must have ‘content’ details (&amp;quot;type&amp;quot;: &amp;quot;content&amp;quot;). This call should occur before any preroll ad starts playing.&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== playheadPosition (Content) ===&lt;br /&gt;
Use [[playheadPosition]] to pass the position of the playhead while the content is being played.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;objective-c&amp;quot;&amp;gt;    – (void) playheadPosition: (long long) playheadPos&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! # !! Key !! Description !! Values !! Required? (Y/N) !! Example&lt;br /&gt;
|-&lt;br /&gt;
| 1 || Live** || UTC of the live content || Client-defined || Yes || Seconds since 1970&lt;br /&gt;
|-&lt;br /&gt;
| 2 || Video On Demand (VOD)** || Position taken from beginning of the content in seconds. || Client-defined || Yes || Current player position from beginning of the content.&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;nowiki&amp;gt;**&amp;lt;/nowiki&amp;gt;''Only one of these parameters is mandatory''&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;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;
&lt;br /&gt;
'''Live Content'''&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;objective-c&amp;quot;&amp;gt;    long long pos = [[NSDate date] timeIntervalSince1970];&lt;br /&gt;
    [nAppApiObject playheadPosition:pos];&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&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;    CMTime curTime=[player currentTime];&lt;br /&gt;
    long pos=CMTimeGetSeconds(curTime);&lt;br /&gt;
    [nAppApiObject playheadPosition:pos];&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== playheadPosition (Ad) ===&lt;br /&gt;
Use [[playheadPosition]] to pass the position of the playhead while the advertisement is being played.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;objective-c&amp;quot;&amp;gt;    – (void) playheadPosition: (long long) playheadPos&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Key !! Description !! Values !! Required? (Y/N) !! Example&lt;br /&gt;
|-&lt;br /&gt;
| Ad || Position taken from beginning of the ad in seconds || Client-defined || Yes || Seconds since tart of the ad&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
'''Ad Content'''&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;objective-c&amp;quot;&amp;gt;    CMTime curTime=[adplayer currentTime];&lt;br /&gt;
    long pos=CMTimeGetSeconds(curTime);&lt;br /&gt;
    [nAppApiObject playheadPosition:pos];&amp;lt;/syntaxhighlight&amp;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;
&lt;br /&gt;
=== stop ===&lt;br /&gt;
[[stop]] must be called on the following events:&lt;br /&gt;
* At the end of ad&lt;br /&gt;
* In case of interruptions during playback like flight mode, Wi-Fi toggle, etc. &lt;br /&gt;
&lt;br /&gt;
Call [[loadMetadata]] and [[playheadPosition]] when the stream resumes. &lt;br /&gt;
&lt;br /&gt;
Call [[play]] when starting the new stream.&lt;br /&gt;
&lt;br /&gt;
=== end ===&lt;br /&gt;
[[end]] must be called on the following events: &lt;br /&gt;
*End of playback &lt;br /&gt;
*Channel change&lt;br /&gt;
&lt;br /&gt;
=== API Call sequence ===&lt;br /&gt;
==== Use Case 1: Content has no Advertisements ====&lt;br /&gt;
Use the sample API sequence below as a reference to identify the specific events that need to be called during content playback without ads.&lt;br /&gt;
&lt;br /&gt;
Call [[play]] with channelName JSON as below.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;json&amp;quot;&amp;gt;{&lt;br /&gt;
   &amp;quot;channelName&amp;quot;: &amp;quot;TheMovieTitle&amp;quot;&lt;br /&gt;
}&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Call [[loadMetadata]] with JSON metadata for content as below.&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;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;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;
  &amp;quot;progen&amp;quot;:&amp;quot;GV&amp;quot;&lt;br /&gt;
}&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Call [[playheadPosition]] every one second until a pause / stop.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Type !! Sample code !! Description&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | Start of stream || &amp;lt;code&amp;gt;[nielsenMeter play: channelName];&amp;lt;/code&amp;gt; || // channelName contains JSON metadata of channel/video name being played&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter loadMetadata: contentMetadataObject];&amp;lt;/code&amp;gt; || // contentMetadataObject contains the JSON metadata for the content being played&lt;br /&gt;
|-&lt;br /&gt;
| Content || &amp;lt;code&amp;gt;[nielsenMeter playheadPosition: position];&amp;lt;/code&amp;gt; || // playheadPosition is position of the playhead while the content is being played&lt;br /&gt;
|-&lt;br /&gt;
| End of Stream || &amp;lt;code&amp;gt;[nielsenMeter end];&amp;lt;/code&amp;gt; || // Content playback is completed.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Use Case 2: Content has Advertisements ====&lt;br /&gt;
Call [[play]] with channelName JSON as below.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;json&amp;quot;&amp;gt;{&lt;br /&gt;
   &amp;quot;channelName&amp;quot;: &amp;quot;TheMovieTitle&amp;quot;&lt;br /&gt;
}&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Call [[loadMetadata]] with JSON metadata for ad as below.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;json&amp;quot;&amp;gt;{&lt;br /&gt;
   &amp;quot;type&amp;quot;: &amp;quot;preroll&amp;quot;,&lt;br /&gt;
   &amp;quot;assetid&amp;quot;: &amp;quot;ad=123&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 [[loadMetadata]] and playhead position through [[playheadPosition]].&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Call [[playheadPosition]] every one second until a pause / stop / another ''loadMetadata'' is called. Playhead should be passed for the entire duration of ad pod, if the ad pod details are passed as part of [[loadMetadata]].&lt;br /&gt;
&lt;br /&gt;
The sample API sequence can be used as a reference to identify the specific events that need to be called during content and ad playback.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Type !! Sample code !! Description&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | Start of stream || &amp;lt;code&amp;gt;[nielsenMeter play: channelName];&amp;lt;/code&amp;gt; || // channelName contains JSON metadata of channel/video name being played&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter loadMetadata: contentMetadataObject];&amp;lt;/code&amp;gt; || // contentMetadataObject contains the JSON metadata for the content being played&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Preroll || &amp;lt;code&amp;gt;[nielsenMeter loadMetadata: prerollMetadataObject];&amp;lt;/code&amp;gt; || // prerollMetadataObject contains the JSON metadata for the preroll ad&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter playheadPosition: position];&amp;lt;/code&amp;gt; || // position is position of the playhead while the preroll ad is being played&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter stop];&amp;lt;/code&amp;gt; || // Call stop after preroll occurs&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Content || &amp;lt;code&amp;gt;[nielsenMeter loadMetadata: contentMetadataObject];&amp;lt;/code&amp;gt; || // contentMetadataObject contains the JSON metadata for the content being played&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter playheadPosition: position];&amp;lt;/code&amp;gt; || // position is position of the playhead while the content is being played&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter stop];&amp;lt;/code&amp;gt; || // Call stop after the content is paused (ad starts)&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Midroll || &amp;lt;code&amp;gt;[nielsenMeter loadMetadata: midrollMetadataObject];&amp;lt;/code&amp;gt; || // midrollMetadataObject contains the JSON metadata for the midroll ad&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter playheadPosition: position];&amp;lt;/code&amp;gt; || // position is position of the playhead while the midroll ad is being played&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter stop];&amp;lt;/code&amp;gt; || // Call stop after midroll occurs&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Content (End of stream) || &amp;lt;code&amp;gt;[nielsenMeter loadMetadata: contentMetadataObject];&amp;lt;/code&amp;gt; || // contentMetadataObject contains the JSON metadata for the content being played&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter playheadPosition: position];&amp;lt;/code&amp;gt; || // position is position of the playhead while the content is being played&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter end];&amp;lt;/code&amp;gt; || // Called at the end of content&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Postroll || &amp;lt;code&amp;gt;[nielsenMeter loadMetadata: postrollMetadataObject];&amp;lt;/code&amp;gt; || // postrollMetadataObject contains the JSON metadata for the postroll ad&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter playheadPosition: position];&amp;lt;/code&amp;gt; || // position is position of the playhead while the postroll ad is being played&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter stop];&amp;lt;/code&amp;gt; || // Call stop after postroll occurs&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;'''Note:''' Each Ad playhead should reset or begin from 0 at ad start. When content has resumed following an ad break, playhead position must continue from where previous content segment was left off.&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== The Viewability Metric ==&lt;br /&gt;
The viewability metric introduced in the Nielsen AppSDK represents the visibility of a video in the player along a playback. If you decide to implement the Nielsen Viewability Module, the SDK will track the viewability of the targeted player/element, log the viewable percentage, and record in seconds the time the player/element was in that viewable state.  Please refer to Implementing [[Implementing Viewability with AppSDK|Viewability with AppSDK.]]&lt;br /&gt;
&lt;br /&gt;
== Interruptions during playback ==&lt;br /&gt;
As part of integrating Nielsen App SDK with the player application, the Audio / Video app developer needs to handle the following possible interruption scenarios:&lt;br /&gt;
* Pause / Play&lt;br /&gt;
* Network Loss (Wi-Fi / Airplane / Cellular)&lt;br /&gt;
* Call Interrupt (SIM or Third party Skype / Hangout call)&lt;br /&gt;
* Alarm Interrupt&lt;br /&gt;
* Content Buffering&lt;br /&gt;
* Device Lock / Unlock (Video players only, not for Audio players)&lt;br /&gt;
* App going in the Background/Foreground (Video players only, not for Audio players)&lt;br /&gt;
* Channel / Station Change Scenario&lt;br /&gt;
* Unplugging of headphone&lt;br /&gt;
In case of encountering one of the above interruptions, the player application needs to&lt;br /&gt;
* Call [[stop]] immediately (except when content is buffering) and withhold sending playhead position.&lt;br /&gt;
* Start sending pings – [[loadMetadata]] and [[playheadPosition]] for the new viewing session, once the playback resumes.&lt;br /&gt;
Please see the [[Digital Measurement FAQ]] for more details&lt;br /&gt;
&lt;br /&gt;
== Nielsen Measurement Opt-Out Implementation ==&lt;br /&gt;
Opt-out implementation for podcasts is the same as live AM/FM stream measurement. &lt;br /&gt;
&lt;br /&gt;
== Technical Guides ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! style=&amp;quot;width: 90px;&amp;quot; | Type&lt;br /&gt;
! style=&amp;quot;width: 45px;&amp;quot; |&lt;br /&gt;
! style=&amp;quot;width: 45px;&amp;quot; | OS&lt;br /&gt;
! style=&amp;quot;width: 50%;&amp;quot; | DCR Implementation Guide&lt;br /&gt;
!| SDK Documentation&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;7&amp;quot; | {{SmallIcon|SDKIcon.png|alt=SDK}}&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | {{OSIcon|VideoIcon.png|alt=Video}}&lt;br /&gt;
| {{OSIcon|macOSIcon.png|alt=iOS}}&lt;br /&gt;
| '''[[DCR Video iOS SDK]]'''&lt;br /&gt;
| [[iOS SDK API Reference]]&lt;br /&gt;
|-&lt;br /&gt;
| {{OSIcon|AndroidIcon.png|alt=Android}}&lt;br /&gt;
| '''[[DCR Video Android SDK]]'''&lt;br /&gt;
| [[Android SDK API Reference]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;width: 90px;&amp;quot; |&lt;br /&gt;
! style=&amp;quot;width: 42%;&amp;quot; | Technical Guides&lt;br /&gt;
!&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;7&amp;quot; | {{SmallIcon|DigitalIcon.png}}&lt;br /&gt;
| '''[[Digital Measurement Onboarding]]'''&lt;br /&gt;
| '''[[Digital Measurement Metadata]]'''&lt;br /&gt;
|-&lt;br /&gt;
| '''[[Digital Measurement Testing]]'''&lt;br /&gt;
| '''[[Digital Measurement Interruption Scenarios]]'''&lt;br /&gt;
|-&lt;br /&gt;
| '''[[Digital Measurement FAQ]]'''&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| '''[[Digital Pre-Certification Checklist App SDK]]'''&lt;br /&gt;
| '''[[Digital Pre-Certification Checklist Browser SDK]]'''&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>KimBritt</name></author>
	</entry>
	<entry>
		<id>https://nielsentest.mywikis.net/w/index.php?title=DCR_Podcasts_in_Digital&amp;diff=2223</id>
		<title>DCR Podcasts in Digital</title>
		<link rel="alternate" type="text/html" href="https://nielsentest.mywikis.net/w/index.php?title=DCR_Podcasts_in_Digital&amp;diff=2223"/>
		<updated>2017-12-13T14:38:04Z</updated>

		<summary type="html">&lt;p&gt;KimBritt: /* Technical Guides */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Breadcrumb|}} {{Breadcrumb|Digital}} {{CurrentBreadcrumb}}&lt;br /&gt;
[[Category:Digital]]&lt;br /&gt;
&lt;br /&gt;
== Prerequisites ==&lt;br /&gt;
To start using the App SDK, the following details are required:&lt;br /&gt;
* '''App ID (appid):''' Unique ID assigned to the player/site and configured by product.&lt;br /&gt;
* '''sfcode:''' Unique identifier for the environment that the SDK should point to.&lt;br /&gt;
* '''Nielsen SDK''' and '''Sample Player''': A part of the downloaded package&lt;br /&gt;
If you do not have any of these pre-requisites or if you have any questions, please contact our SDK sales support team.&lt;br /&gt;
Refer to [[Digital Measurement Onboarding]] guide for information on how to get a Nielsen App SDK and appid.&lt;br /&gt;
&lt;br /&gt;
== Import Library ==&lt;br /&gt;
Refer to [[iOS SDK API Reference#Importing Frameworks|iOS SDK API Reference - Importing Frameworks]] for information on importing libraries.&lt;br /&gt;
* The latest version of App SDK allows instantiating multiple instances of App SDK object and can be used simultaneously without any issues.&lt;br /&gt;
&lt;br /&gt;
== Initialize SDK ==&lt;br /&gt;
Initialize App SDK as soon as the application is launched. Refer to [[iOS SDK API Reference#Initialization|iOS SDK API Reference - Initialization]] for details on initializing an AppSDK object and the parameters required.&lt;br /&gt;
&lt;br /&gt;
== Configure API calls ==&lt;br /&gt;
=== play ===&lt;br /&gt;
Use [[play]] to pass the channel descriptor information through channelName parameter when the user taps the '''Play''' button on the player.&lt;br /&gt;
&lt;br /&gt;
=== loadMetadata ===&lt;br /&gt;
Use [[loadMetadata]] to pass 'content' and 'ad' [[Digital Measurement Metadata]]. The CMS data must be passed as a JSON object.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;objective-c&amp;quot;&amp;gt;    – (void) loadMetadata :(id)metadata;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Refer to [[loadMetadata]] for the list of parameters to be passed in the JSON object.&lt;br /&gt;
&amp;lt;blockquote&amp;gt;'''Note:''' The [[loadMetadata]] call after the first [[play]] call must have ‘content’ details (&amp;quot;type&amp;quot;: &amp;quot;content&amp;quot;). This call should occur before any preroll ad starts playing.&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== playheadPosition (Content) ===&lt;br /&gt;
Use [[playheadPosition]] to pass the position of the playhead while the content is being played.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;objective-c&amp;quot;&amp;gt;    – (void) playheadPosition: (long long) playheadPos&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! # !! Key !! Description !! Values !! Required? (Y/N) !! Example&lt;br /&gt;
|-&lt;br /&gt;
| 1 || Live** || UTC of the live content || Client-defined || Yes || Seconds since 1970&lt;br /&gt;
|-&lt;br /&gt;
| 2 || Video On Demand (VOD)** || Position taken from beginning of the content in seconds. || Client-defined || Yes || Current player position from beginning of the content.&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;nowiki&amp;gt;**&amp;lt;/nowiki&amp;gt;''Only one of these parameters is mandatory''&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;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;
&lt;br /&gt;
'''Live Content'''&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;objective-c&amp;quot;&amp;gt;    long long pos = [[NSDate date] timeIntervalSince1970];&lt;br /&gt;
    [nAppApiObject playheadPosition:pos];&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&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;    CMTime curTime=[player currentTime];&lt;br /&gt;
    long pos=CMTimeGetSeconds(curTime);&lt;br /&gt;
    [nAppApiObject playheadPosition:pos];&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== playheadPosition (Ad) ===&lt;br /&gt;
Use [[playheadPosition]] to pass the position of the playhead while the advertisement is being played.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;objective-c&amp;quot;&amp;gt;    – (void) playheadPosition: (long long) playheadPos&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Key !! Description !! Values !! Required? (Y/N) !! Example&lt;br /&gt;
|-&lt;br /&gt;
| Ad || Position taken from beginning of the ad in seconds || Client-defined || Yes || Seconds since tart of the ad&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
'''Ad Content'''&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;objective-c&amp;quot;&amp;gt;    CMTime curTime=[adplayer currentTime];&lt;br /&gt;
    long pos=CMTimeGetSeconds(curTime);&lt;br /&gt;
    [nAppApiObject playheadPosition:pos];&amp;lt;/syntaxhighlight&amp;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;
&lt;br /&gt;
=== stop ===&lt;br /&gt;
[[stop]] must be called on the following events:&lt;br /&gt;
* At the end of ad&lt;br /&gt;
* In case of interruptions during playback like flight mode, Wi-Fi toggle, etc. &lt;br /&gt;
&lt;br /&gt;
Call [[loadMetadata]] and [[playheadPosition]] when the stream resumes. &lt;br /&gt;
&lt;br /&gt;
Call [[play]] when starting the new stream.&lt;br /&gt;
&lt;br /&gt;
=== end ===&lt;br /&gt;
[[end]] must be called on the following events: &lt;br /&gt;
*End of playback &lt;br /&gt;
*Channel change&lt;br /&gt;
&lt;br /&gt;
=== API Call sequence ===&lt;br /&gt;
==== Use Case 1: Content has no Advertisements ====&lt;br /&gt;
Use the sample API sequence below as a reference to identify the specific events that need to be called during content playback without ads.&lt;br /&gt;
&lt;br /&gt;
Call [[play]] with channelName JSON as below.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;json&amp;quot;&amp;gt;{&lt;br /&gt;
   &amp;quot;channelName&amp;quot;: &amp;quot;TheMovieTitle&amp;quot;&lt;br /&gt;
}&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Call [[loadMetadata]] with JSON metadata for content as below.&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;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;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;
  &amp;quot;progen&amp;quot;:&amp;quot;GV&amp;quot;&lt;br /&gt;
}&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Call [[playheadPosition]] every one second until a pause / stop.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Type !! Sample code !! Description&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | Start of stream || &amp;lt;code&amp;gt;[nielsenMeter play: channelName];&amp;lt;/code&amp;gt; || // channelName contains JSON metadata of channel/video name being played&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter loadMetadata: contentMetadataObject];&amp;lt;/code&amp;gt; || // contentMetadataObject contains the JSON metadata for the content being played&lt;br /&gt;
|-&lt;br /&gt;
| Content || &amp;lt;code&amp;gt;[nielsenMeter playheadPosition: position];&amp;lt;/code&amp;gt; || // playheadPosition is position of the playhead while the content is being played&lt;br /&gt;
|-&lt;br /&gt;
| End of Stream || &amp;lt;code&amp;gt;[nielsenMeter end];&amp;lt;/code&amp;gt; || // Content playback is completed.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Use Case 2: Content has Advertisements ====&lt;br /&gt;
Call [[play]] with channelName JSON as below.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;json&amp;quot;&amp;gt;{&lt;br /&gt;
   &amp;quot;channelName&amp;quot;: &amp;quot;TheMovieTitle&amp;quot;&lt;br /&gt;
}&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Call [[loadMetadata]] with JSON metadata for ad as below.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;json&amp;quot;&amp;gt;{&lt;br /&gt;
   &amp;quot;type&amp;quot;: &amp;quot;preroll&amp;quot;,&lt;br /&gt;
   &amp;quot;assetid&amp;quot;: &amp;quot;ad=123&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 [[loadMetadata]] and playhead position through [[playheadPosition]].&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Call [[playheadPosition]] every one second until a pause / stop / another ''loadMetadata'' is called. Playhead should be passed for the entire duration of ad pod, if the ad pod details are passed as part of [[loadMetadata]].&lt;br /&gt;
&lt;br /&gt;
The sample API sequence can be used as a reference to identify the specific events that need to be called during content and ad playback.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Type !! Sample code !! Description&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | Start of stream || &amp;lt;code&amp;gt;[nielsenMeter play: channelName];&amp;lt;/code&amp;gt; || // channelName contains JSON metadata of channel/video name being played&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter loadMetadata: contentMetadataObject];&amp;lt;/code&amp;gt; || // contentMetadataObject contains the JSON metadata for the content being played&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Preroll || &amp;lt;code&amp;gt;[nielsenMeter loadMetadata: prerollMetadataObject];&amp;lt;/code&amp;gt; || // prerollMetadataObject contains the JSON metadata for the preroll ad&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter playheadPosition: position];&amp;lt;/code&amp;gt; || // position is position of the playhead while the preroll ad is being played&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter stop];&amp;lt;/code&amp;gt; || // Call stop after preroll occurs&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Content || &amp;lt;code&amp;gt;[nielsenMeter loadMetadata: contentMetadataObject];&amp;lt;/code&amp;gt; || // contentMetadataObject contains the JSON metadata for the content being played&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter playheadPosition: position];&amp;lt;/code&amp;gt; || // position is position of the playhead while the content is being played&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter stop];&amp;lt;/code&amp;gt; || // Call stop after the content is paused (ad starts)&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Midroll || &amp;lt;code&amp;gt;[nielsenMeter loadMetadata: midrollMetadataObject];&amp;lt;/code&amp;gt; || // midrollMetadataObject contains the JSON metadata for the midroll ad&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter playheadPosition: position];&amp;lt;/code&amp;gt; || // position is position of the playhead while the midroll ad is being played&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter stop];&amp;lt;/code&amp;gt; || // Call stop after midroll occurs&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Content (End of stream) || &amp;lt;code&amp;gt;[nielsenMeter loadMetadata: contentMetadataObject];&amp;lt;/code&amp;gt; || // contentMetadataObject contains the JSON metadata for the content being played&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter playheadPosition: position];&amp;lt;/code&amp;gt; || // position is position of the playhead while the content is being played&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter end];&amp;lt;/code&amp;gt; || // Called at the end of content&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Postroll || &amp;lt;code&amp;gt;[nielsenMeter loadMetadata: postrollMetadataObject];&amp;lt;/code&amp;gt; || // postrollMetadataObject contains the JSON metadata for the postroll ad&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter playheadPosition: position];&amp;lt;/code&amp;gt; || // position is position of the playhead while the postroll ad is being played&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter stop];&amp;lt;/code&amp;gt; || // Call stop after postroll occurs&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;'''Note:''' Each Ad playhead should reset or begin from 0 at ad start. When content has resumed following an ad break, playhead position must continue from where previous content segment was left off.&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== The Viewability Metric ==&lt;br /&gt;
The viewability metric introduced in the Nielsen AppSDK represents the visibility of a video in the player along a playback. If you decide to implement the Nielsen Viewability Module, the SDK will track the viewability of the targeted player/element, log the viewable percentage, and record in seconds the time the player/element was in that viewable state.  Please refer to Implementing [[Implementing Viewability with AppSDK|Viewability with AppSDK.]]&lt;br /&gt;
&lt;br /&gt;
== Interruptions during playback ==&lt;br /&gt;
As part of integrating Nielsen App SDK with the player application, the Audio / Video app developer needs to handle the following possible interruption scenarios:&lt;br /&gt;
* Pause / Play&lt;br /&gt;
* Network Loss (Wi-Fi / Airplane / Cellular)&lt;br /&gt;
* Call Interrupt (SIM or Third party Skype / Hangout call)&lt;br /&gt;
* Alarm Interrupt&lt;br /&gt;
* Content Buffering&lt;br /&gt;
* Device Lock / Unlock (Video players only, not for Audio players)&lt;br /&gt;
* App going in the Background/Foreground (Video players only, not for Audio players)&lt;br /&gt;
* Channel / Station Change Scenario&lt;br /&gt;
* Unplugging of headphone&lt;br /&gt;
In case of encountering one of the above interruptions, the player application needs to&lt;br /&gt;
* Call [[stop]] immediately (except when content is buffering) and withhold sending playhead position.&lt;br /&gt;
* Start sending pings – [[loadMetadata]] and [[playheadPosition]] for the new viewing session, once the playback resumes.&lt;br /&gt;
Please see the [[Digital Measurement FAQ]] for more details&lt;br /&gt;
&lt;br /&gt;
== Nielsen Measurement Opt-Out Implementation ==&lt;br /&gt;
Opt-out implementation for podcasts is the same as live AM/FM stream measurement. &lt;br /&gt;
&lt;br /&gt;
== Technical Guides ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! style=&amp;quot;width: 90px;&amp;quot; | Type&lt;br /&gt;
! style=&amp;quot;width: 45px;&amp;quot; |&lt;br /&gt;
! style=&amp;quot;width: 45px;&amp;quot; | OS&lt;br /&gt;
! style=&amp;quot;width: 50%;&amp;quot; | DCR Implementation Guide&lt;br /&gt;
!| SDK Documentation&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;7&amp;quot; | {{SmallIcon|SDKIcon.png|alt=SDK}}&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | {{OSIcon|VideoIcon.png|alt=Video}}&lt;br /&gt;
| {{OSIcon|macOSIcon.png|alt=iOS}}&lt;br /&gt;
| '''[[DCR Video iOS SDK]]'''&lt;br /&gt;
| [[iOS SDK API Reference]]&lt;br /&gt;
|-&lt;br /&gt;
| {{OSIcon|AndroidIcon.png|alt=Android}}&lt;br /&gt;
| '''[[DCR Video Android SDK]]'''&lt;br /&gt;
| [[Android SDK API Reference]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;width: 90px;&amp;quot; |&lt;br /&gt;
! style=&amp;quot;width: 42%;&amp;quot; | Technical Guides&lt;br /&gt;
!&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;7&amp;quot; | {{SmallIcon|DigitalIcon.png}}&lt;br /&gt;
| '''[[Digital Measurement Onboarding]]'''&lt;br /&gt;
| '''[[Digital Measurement Metadata]]'''&lt;br /&gt;
|-&lt;br /&gt;
| '''[[Digital Measurement Testing]]'''&lt;br /&gt;
| '''[[Digital Measurement Interruption Scenarios]]'''&lt;br /&gt;
|-&lt;br /&gt;
| '''[[Digital Measurement FAQ]]'''&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| '''[[Digital Pre-Certification Checklist App SDK]]'''&lt;br /&gt;
| '''[[Digital Pre-Certification Checklist Browser SDK]]'''&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>KimBritt</name></author>
	</entry>
	<entry>
		<id>https://nielsentest.mywikis.net/w/index.php?title=DCR_Podcasts_in_Digital&amp;diff=2222</id>
		<title>DCR Podcasts in Digital</title>
		<link rel="alternate" type="text/html" href="https://nielsentest.mywikis.net/w/index.php?title=DCR_Podcasts_in_Digital&amp;diff=2222"/>
		<updated>2017-12-13T14:37:24Z</updated>

		<summary type="html">&lt;p&gt;KimBritt: /* SDK - Video */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Breadcrumb|}} {{Breadcrumb|Digital}} {{CurrentBreadcrumb}}&lt;br /&gt;
[[Category:Digital]]&lt;br /&gt;
&lt;br /&gt;
== Prerequisites ==&lt;br /&gt;
To start using the App SDK, the following details are required:&lt;br /&gt;
* '''App ID (appid):''' Unique ID assigned to the player/site and configured by product.&lt;br /&gt;
* '''sfcode:''' Unique identifier for the environment that the SDK should point to.&lt;br /&gt;
* '''Nielsen SDK''' and '''Sample Player''': A part of the downloaded package&lt;br /&gt;
If you do not have any of these pre-requisites or if you have any questions, please contact our SDK sales support team.&lt;br /&gt;
Refer to [[Digital Measurement Onboarding]] guide for information on how to get a Nielsen App SDK and appid.&lt;br /&gt;
&lt;br /&gt;
== Import Library ==&lt;br /&gt;
Refer to [[iOS SDK API Reference#Importing Frameworks|iOS SDK API Reference - Importing Frameworks]] for information on importing libraries.&lt;br /&gt;
* The latest version of App SDK allows instantiating multiple instances of App SDK object and can be used simultaneously without any issues.&lt;br /&gt;
&lt;br /&gt;
== Initialize SDK ==&lt;br /&gt;
Initialize App SDK as soon as the application is launched. Refer to [[iOS SDK API Reference#Initialization|iOS SDK API Reference - Initialization]] for details on initializing an AppSDK object and the parameters required.&lt;br /&gt;
&lt;br /&gt;
== Configure API calls ==&lt;br /&gt;
=== play ===&lt;br /&gt;
Use [[play]] to pass the channel descriptor information through channelName parameter when the user taps the '''Play''' button on the player.&lt;br /&gt;
&lt;br /&gt;
=== loadMetadata ===&lt;br /&gt;
Use [[loadMetadata]] to pass 'content' and 'ad' [[Digital Measurement Metadata]]. The CMS data must be passed as a JSON object.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;objective-c&amp;quot;&amp;gt;    – (void) loadMetadata :(id)metadata;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Refer to [[loadMetadata]] for the list of parameters to be passed in the JSON object.&lt;br /&gt;
&amp;lt;blockquote&amp;gt;'''Note:''' The [[loadMetadata]] call after the first [[play]] call must have ‘content’ details (&amp;quot;type&amp;quot;: &amp;quot;content&amp;quot;). This call should occur before any preroll ad starts playing.&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== playheadPosition (Content) ===&lt;br /&gt;
Use [[playheadPosition]] to pass the position of the playhead while the content is being played.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;objective-c&amp;quot;&amp;gt;    – (void) playheadPosition: (long long) playheadPos&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! # !! Key !! Description !! Values !! Required? (Y/N) !! Example&lt;br /&gt;
|-&lt;br /&gt;
| 1 || Live** || UTC of the live content || Client-defined || Yes || Seconds since 1970&lt;br /&gt;
|-&lt;br /&gt;
| 2 || Video On Demand (VOD)** || Position taken from beginning of the content in seconds. || Client-defined || Yes || Current player position from beginning of the content.&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;nowiki&amp;gt;**&amp;lt;/nowiki&amp;gt;''Only one of these parameters is mandatory''&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;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;
&lt;br /&gt;
'''Live Content'''&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;objective-c&amp;quot;&amp;gt;    long long pos = [[NSDate date] timeIntervalSince1970];&lt;br /&gt;
    [nAppApiObject playheadPosition:pos];&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&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;    CMTime curTime=[player currentTime];&lt;br /&gt;
    long pos=CMTimeGetSeconds(curTime);&lt;br /&gt;
    [nAppApiObject playheadPosition:pos];&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== playheadPosition (Ad) ===&lt;br /&gt;
Use [[playheadPosition]] to pass the position of the playhead while the advertisement is being played.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;objective-c&amp;quot;&amp;gt;    – (void) playheadPosition: (long long) playheadPos&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Key !! Description !! Values !! Required? (Y/N) !! Example&lt;br /&gt;
|-&lt;br /&gt;
| Ad || Position taken from beginning of the ad in seconds || Client-defined || Yes || Seconds since tart of the ad&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
'''Ad Content'''&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;objective-c&amp;quot;&amp;gt;    CMTime curTime=[adplayer currentTime];&lt;br /&gt;
    long pos=CMTimeGetSeconds(curTime);&lt;br /&gt;
    [nAppApiObject playheadPosition:pos];&amp;lt;/syntaxhighlight&amp;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;
&lt;br /&gt;
=== stop ===&lt;br /&gt;
[[stop]] must be called on the following events:&lt;br /&gt;
* At the end of ad&lt;br /&gt;
* In case of interruptions during playback like flight mode, Wi-Fi toggle, etc. &lt;br /&gt;
&lt;br /&gt;
Call [[loadMetadata]] and [[playheadPosition]] when the stream resumes. &lt;br /&gt;
&lt;br /&gt;
Call [[play]] when starting the new stream.&lt;br /&gt;
&lt;br /&gt;
=== end ===&lt;br /&gt;
[[end]] must be called on the following events: &lt;br /&gt;
*End of playback &lt;br /&gt;
*Channel change&lt;br /&gt;
&lt;br /&gt;
=== API Call sequence ===&lt;br /&gt;
==== Use Case 1: Content has no Advertisements ====&lt;br /&gt;
Use the sample API sequence below as a reference to identify the specific events that need to be called during content playback without ads.&lt;br /&gt;
&lt;br /&gt;
Call [[play]] with channelName JSON as below.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;json&amp;quot;&amp;gt;{&lt;br /&gt;
   &amp;quot;channelName&amp;quot;: &amp;quot;TheMovieTitle&amp;quot;&lt;br /&gt;
}&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Call [[loadMetadata]] with JSON metadata for content as below.&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;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;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;
  &amp;quot;progen&amp;quot;:&amp;quot;GV&amp;quot;&lt;br /&gt;
}&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Call [[playheadPosition]] every one second until a pause / stop.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Type !! Sample code !! Description&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | Start of stream || &amp;lt;code&amp;gt;[nielsenMeter play: channelName];&amp;lt;/code&amp;gt; || // channelName contains JSON metadata of channel/video name being played&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter loadMetadata: contentMetadataObject];&amp;lt;/code&amp;gt; || // contentMetadataObject contains the JSON metadata for the content being played&lt;br /&gt;
|-&lt;br /&gt;
| Content || &amp;lt;code&amp;gt;[nielsenMeter playheadPosition: position];&amp;lt;/code&amp;gt; || // playheadPosition is position of the playhead while the content is being played&lt;br /&gt;
|-&lt;br /&gt;
| End of Stream || &amp;lt;code&amp;gt;[nielsenMeter end];&amp;lt;/code&amp;gt; || // Content playback is completed.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Use Case 2: Content has Advertisements ====&lt;br /&gt;
Call [[play]] with channelName JSON as below.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;json&amp;quot;&amp;gt;{&lt;br /&gt;
   &amp;quot;channelName&amp;quot;: &amp;quot;TheMovieTitle&amp;quot;&lt;br /&gt;
}&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Call [[loadMetadata]] with JSON metadata for ad as below.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;json&amp;quot;&amp;gt;{&lt;br /&gt;
   &amp;quot;type&amp;quot;: &amp;quot;preroll&amp;quot;,&lt;br /&gt;
   &amp;quot;assetid&amp;quot;: &amp;quot;ad=123&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 [[loadMetadata]] and playhead position through [[playheadPosition]].&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Call [[playheadPosition]] every one second until a pause / stop / another ''loadMetadata'' is called. Playhead should be passed for the entire duration of ad pod, if the ad pod details are passed as part of [[loadMetadata]].&lt;br /&gt;
&lt;br /&gt;
The sample API sequence can be used as a reference to identify the specific events that need to be called during content and ad playback.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Type !! Sample code !! Description&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | Start of stream || &amp;lt;code&amp;gt;[nielsenMeter play: channelName];&amp;lt;/code&amp;gt; || // channelName contains JSON metadata of channel/video name being played&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter loadMetadata: contentMetadataObject];&amp;lt;/code&amp;gt; || // contentMetadataObject contains the JSON metadata for the content being played&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Preroll || &amp;lt;code&amp;gt;[nielsenMeter loadMetadata: prerollMetadataObject];&amp;lt;/code&amp;gt; || // prerollMetadataObject contains the JSON metadata for the preroll ad&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter playheadPosition: position];&amp;lt;/code&amp;gt; || // position is position of the playhead while the preroll ad is being played&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter stop];&amp;lt;/code&amp;gt; || // Call stop after preroll occurs&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Content || &amp;lt;code&amp;gt;[nielsenMeter loadMetadata: contentMetadataObject];&amp;lt;/code&amp;gt; || // contentMetadataObject contains the JSON metadata for the content being played&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter playheadPosition: position];&amp;lt;/code&amp;gt; || // position is position of the playhead while the content is being played&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter stop];&amp;lt;/code&amp;gt; || // Call stop after the content is paused (ad starts)&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Midroll || &amp;lt;code&amp;gt;[nielsenMeter loadMetadata: midrollMetadataObject];&amp;lt;/code&amp;gt; || // midrollMetadataObject contains the JSON metadata for the midroll ad&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter playheadPosition: position];&amp;lt;/code&amp;gt; || // position is position of the playhead while the midroll ad is being played&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter stop];&amp;lt;/code&amp;gt; || // Call stop after midroll occurs&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Content (End of stream) || &amp;lt;code&amp;gt;[nielsenMeter loadMetadata: contentMetadataObject];&amp;lt;/code&amp;gt; || // contentMetadataObject contains the JSON metadata for the content being played&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter playheadPosition: position];&amp;lt;/code&amp;gt; || // position is position of the playhead while the content is being played&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter end];&amp;lt;/code&amp;gt; || // Called at the end of content&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Postroll || &amp;lt;code&amp;gt;[nielsenMeter loadMetadata: postrollMetadataObject];&amp;lt;/code&amp;gt; || // postrollMetadataObject contains the JSON metadata for the postroll ad&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter playheadPosition: position];&amp;lt;/code&amp;gt; || // position is position of the playhead while the postroll ad is being played&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter stop];&amp;lt;/code&amp;gt; || // Call stop after postroll occurs&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;'''Note:''' Each Ad playhead should reset or begin from 0 at ad start. When content has resumed following an ad break, playhead position must continue from where previous content segment was left off.&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== The Viewability Metric ==&lt;br /&gt;
The viewability metric introduced in the Nielsen AppSDK represents the visibility of a video in the player along a playback. If you decide to implement the Nielsen Viewability Module, the SDK will track the viewability of the targeted player/element, log the viewable percentage, and record in seconds the time the player/element was in that viewable state.  Please refer to Implementing [[Implementing Viewability with AppSDK|Viewability with AppSDK.]]&lt;br /&gt;
&lt;br /&gt;
== Interruptions during playback ==&lt;br /&gt;
As part of integrating Nielsen App SDK with the player application, the Audio / Video app developer needs to handle the following possible interruption scenarios:&lt;br /&gt;
* Pause / Play&lt;br /&gt;
* Network Loss (Wi-Fi / Airplane / Cellular)&lt;br /&gt;
* Call Interrupt (SIM or Third party Skype / Hangout call)&lt;br /&gt;
* Alarm Interrupt&lt;br /&gt;
* Content Buffering&lt;br /&gt;
* Device Lock / Unlock (Video players only, not for Audio players)&lt;br /&gt;
* App going in the Background/Foreground (Video players only, not for Audio players)&lt;br /&gt;
* Channel / Station Change Scenario&lt;br /&gt;
* Unplugging of headphone&lt;br /&gt;
In case of encountering one of the above interruptions, the player application needs to&lt;br /&gt;
* Call [[stop]] immediately (except when content is buffering) and withhold sending playhead position.&lt;br /&gt;
* Start sending pings – [[loadMetadata]] and [[playheadPosition]] for the new viewing session, once the playback resumes.&lt;br /&gt;
Please see the [[Digital Measurement FAQ]] for more details&lt;br /&gt;
&lt;br /&gt;
== Nielsen Measurement Opt-Out Implementation ==&lt;br /&gt;
Opt-out implementation for podcasts is the same as live AM/FM stream measurement. &lt;br /&gt;
&lt;br /&gt;
== Technical Guides ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;width: 90px;&amp;quot; |&lt;br /&gt;
! style=&amp;quot;width: 42%;&amp;quot; | Technical Guides&lt;br /&gt;
!&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;7&amp;quot; | {{SmallIcon|DigitalIcon.png}}&lt;br /&gt;
| '''[[Digital Measurement Onboarding]]'''&lt;br /&gt;
| '''[[Digital Measurement Metadata]]'''&lt;br /&gt;
|-&lt;br /&gt;
| '''[[Digital Measurement Testing]]'''&lt;br /&gt;
| '''[[Digital Measurement Interruption Scenarios]]'''&lt;br /&gt;
|-&lt;br /&gt;
| '''[[Digital Measurement FAQ]]'''&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| '''[[Digital Pre-Certification Checklist App SDK]]'''&lt;br /&gt;
| '''[[Digital Pre-Certification Checklist Browser SDK]]'''&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! style=&amp;quot;width: 90px;&amp;quot; | Type&lt;br /&gt;
! style=&amp;quot;width: 45px;&amp;quot; |&lt;br /&gt;
! style=&amp;quot;width: 45px;&amp;quot; | OS&lt;br /&gt;
! style=&amp;quot;width: 50%;&amp;quot; | DCR Implementation Guide&lt;br /&gt;
!| SDK Documentation&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;7&amp;quot; | {{SmallIcon|SDKIcon.png|alt=SDK}}&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | {{OSIcon|VideoIcon.png|alt=Video}}&lt;br /&gt;
| {{OSIcon|macOSIcon.png|alt=iOS}}&lt;br /&gt;
| '''[[DCR Video iOS SDK]]'''&lt;br /&gt;
| [[iOS SDK API Reference]]&lt;br /&gt;
|-&lt;br /&gt;
| {{OSIcon|AndroidIcon.png|alt=Android}}&lt;br /&gt;
| '''[[DCR Video Android SDK]]'''&lt;br /&gt;
| [[Android SDK API Reference]]&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>KimBritt</name></author>
	</entry>
</feed>