<?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=AmySockanathan</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=AmySockanathan"/>
	<link rel="alternate" type="text/html" href="https://nielsentest.mywikis.net/wiki/Special:Contributions/AmySockanathan"/>
	<updated>2026-06-17T15:00:30Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.39.5</generator>
	<entry>
		<id>https://nielsentest.mywikis.net/w/index.php?title=SDK_Integration_Assistance_%26_Diagnostic_Tool_(IADT)&amp;diff=7050</id>
		<title>SDK Integration Assistance &amp; Diagnostic Tool (IADT)</title>
		<link rel="alternate" type="text/html" href="https://nielsentest.mywikis.net/w/index.php?title=SDK_Integration_Assistance_%26_Diagnostic_Tool_(IADT)&amp;diff=7050"/>
		<updated>2026-06-09T20:35:48Z</updated>

		<summary type="html">&lt;p&gt;AmySockanathan: Initial changes to the SDK IADT page&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== {{Breadcrumb|}} {{Breadcrumb|Digital}} {{CurrentBreadcrumb}} ==&lt;br /&gt;
&lt;br /&gt;
== SDK Integration Assistance &amp;amp; Diagnostic Tool ==&lt;br /&gt;
The SDK Integration Assistance &amp;amp; Diagnostic Tool (IADT) is a step-by-step integration wizard and an integration validation tool. This tool support DCR static, DCR video and DTVR products. It can be used for integration of apps on Android and iOS platforms and web pages on browsers.&lt;br /&gt;
&lt;br /&gt;
After you have read and agreed to the Nielsen SDK license agreement, you can download the tool from [https://github.com/NielsenDigitalSDK/sdk-diagnostic-tool?tab=readme-ov-file here].&lt;br /&gt;
[[Category:Digital]]&lt;/div&gt;</summary>
		<author><name>AmySockanathan</name></author>
	</entry>
	<entry>
		<id>https://nielsentest.mywikis.net/w/index.php?title=SDK_Integration_Assistance_%26_Diagnostic_Tool_(IADT)&amp;diff=7049</id>
		<title>SDK Integration Assistance &amp; Diagnostic Tool (IADT)</title>
		<link rel="alternate" type="text/html" href="https://nielsentest.mywikis.net/w/index.php?title=SDK_Integration_Assistance_%26_Diagnostic_Tool_(IADT)&amp;diff=7049"/>
		<updated>2026-06-09T20:26:59Z</updated>

		<summary type="html">&lt;p&gt;AmySockanathan: Create the page for the SDK Integration Assistance &amp;amp; Diagnostic Tool&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Breadcrumb|}} {{Breadcrumb|Digital}} {{CurrentBreadcrumb}}&lt;br /&gt;
[[Category:Digital]]&lt;br /&gt;
SDK Integration Assistance &amp;amp; Diagnostic Tool&lt;/div&gt;</summary>
		<author><name>AmySockanathan</name></author>
	</entry>
	<entry>
		<id>https://nielsentest.mywikis.net/w/index.php?title=US_DCR_%26_DTVR&amp;diff=7048</id>
		<title>US DCR &amp; DTVR</title>
		<link rel="alternate" type="text/html" href="https://nielsentest.mywikis.net/w/index.php?title=US_DCR_%26_DTVR&amp;diff=7048"/>
		<updated>2026-06-09T20:24:14Z</updated>

		<summary type="html">&lt;p&gt;AmySockanathan: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Breadcrumb|}} {{Breadcrumb|Digital}} {{CurrentBreadcrumb}}&lt;br /&gt;
[[Category:Digital]]&lt;br /&gt;
{{CategoryIcon|DCR.png|US Digital Content Ratings (DCR) &amp;amp; Digital in TV Ratings (DTVR)}}&lt;br /&gt;
&lt;br /&gt;
__NOTOC__&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! colspan=&amp;quot;3&amp;quot;| Start Here&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;7&amp;quot; | {{SmallIcon|thePlatformIcon.png}}&lt;br /&gt;
| '''Step-By-Step SDK Integration Guides ([[BSDK Step By Step|Browser]], [[Android Step By Step|Android]], [[iOS Step By Step|iOS]])'''&lt;br /&gt;
| '''API Reference Tables ([[Browser_SDK_API_Table|Browser]], [[Android_SDK_API_Table|Android]], [[iOS_SDK_API_Table|iOS]])'''&lt;br /&gt;
|-&lt;br /&gt;
| '''[[DCR_vs_DTVR|DCR vs. DTVR Implementation - Key Differences]]'''&lt;br /&gt;
| '''Product Information - [https://markets.nielsen.com/us/en/solutions/capabilities/digital-content-ratings/ DCR], [https://www.nielsen.com/solutions/audience-measurement/national-tv/ DTVR]'''&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! colspan=&amp;quot;3&amp;quot;| General Reference&lt;br /&gt;
|-&lt;br /&gt;
| '''[[Digital Measurement Onboarding]]'''&lt;br /&gt;
| '''[[Digital Measurement Metadata]]'''&lt;br /&gt;
| '''[[Digital Measurement Testing]]'''&lt;br /&gt;
|-&lt;br /&gt;
| '''[[Digital Measurement Interruption Scenarios]]'''&lt;br /&gt;
| '''[[Digital Measurement FAQ]]'''&lt;br /&gt;
| '''SDK Release Notes - [[Browser_SDK_Release_Notes|Browser]], [[Android_SDK_Release_Notes|Android]], [[iOS_SDK_Release_Notes|iOS]], [[TVOS_SDK_Release_Notes|TVOS]], [[DOMless SDK Release Notes|Domless]]'''&lt;br /&gt;
|-&lt;br /&gt;
| '''[[Digital Pre-Certification Checklist App SDK]]'''&lt;br /&gt;
| '''[[Digital Pre-Certification Checklist Browser SDK]]'''&lt;br /&gt;
| '''[[Digital Measurement Persistent Identifiers]]'''&lt;br /&gt;
|-&lt;br /&gt;
|[[Dual Instances of SDK|'''Dual Instances of SDK''']]&lt;br /&gt;
|'''[[SDK Integration Assistance &amp;amp; Diagnostic Tool (IADT)]]'''&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== SEI ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
| colspan=&amp;quot;3&amp;quot; |Single Endpoint Integration (SEI) - log-file based data transaction mechanism&lt;br /&gt;
|-&lt;br /&gt;
!Type&lt;br /&gt;
!&lt;br /&gt;
!Implementation Guide&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;5&amp;quot; |{{SmallIcon|DigitalIcon.png}}&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;5&amp;quot; |{{OSIcon|VideoIcon.png|alt=Video}}&lt;br /&gt;
|'''[[Digital Measurement SEI Streaming Content Viewing]]'''&lt;br /&gt;
|-&lt;br /&gt;
|'''[[Digital Measurement Content Asset Metadata]]'''&lt;br /&gt;
|-&lt;br /&gt;
|'''[[Digital Measurement Content Audit Beacon]]'''&lt;br /&gt;
|-&lt;br /&gt;
|'''[[Digital Measurement SEI Audio File]](Only for DTVR)'''&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== SDK - Video ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
| colspan=&amp;quot;6&amp;quot; | Maintaining an existing ''DCR'' or ''DTVR'' App integration? Continue to reference the API you're already using with the guides below.&lt;br /&gt;
|-&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: 30%;&amp;quot; | DCR Implementation Guide&lt;br /&gt;
! style=&amp;quot;width: 25%;&amp;quot; | DTVR Implementation Guide&lt;br /&gt;
!| SDK Documentation&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;8&amp;quot; | {{SmallIcon|SDKIcon.png|alt=SDK}}&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;4&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;
| '''[[DTVR 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;
| '''[[DTVR Android SDK]]'''&lt;br /&gt;
| [[Android SDK API Reference]]&lt;br /&gt;
|-&lt;br /&gt;
| {{OSIcon|BrowserIcon.png|alt=Browser}}&lt;br /&gt;
| '''[[DCR Video Browser SDK]]'''&lt;br /&gt;
| '''[[DTVR Browser SDK]]'''&lt;br /&gt;
| [[Browser SDK API Reference]]&lt;br /&gt;
|-&lt;br /&gt;
| {{OSIcon|BrowserIcon.png|alt=Browser}}&lt;br /&gt;
| '''[[DCR Video Domless SDK]]'''&lt;br /&gt;
| '''[[DTVR Domless SDK]]'''&lt;br /&gt;
| [[Domless SDK API Reference]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== SDK - Static ==&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: 55%;&amp;quot; | DCR Implementation Guide&lt;br /&gt;
!| SDK Documentation&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;9&amp;quot; | {{SmallIcon|SDKIcon.png|alt=SDK}}&lt;br /&gt;
| rowspan=&amp;quot;9&amp;quot; | {{OSIcon|StaticIcon.png|alt=Static Content}}&lt;br /&gt;
| {{OSIcon|macOSIcon.png|alt=iOS}}&lt;br /&gt;
| '''[[DCR Static iOS SDK]]'''&lt;br /&gt;
| [[iOS SDK API Reference]]&lt;br /&gt;
|-&lt;br /&gt;
| {{OSIcon|AndroidIcon.png|alt=Android}}&lt;br /&gt;
| '''[[DCR Static Android SDK]]'''&lt;br /&gt;
| [[Android SDK API Reference]]&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | {{OSIcon|BrowserIcon.png|alt=Browser}}&lt;br /&gt;
| '''[[DCR Static Browser SDK]]'''&lt;br /&gt;
| rowspan=&amp;quot;5&amp;quot; | [[Browser SDK API Reference]]&lt;br /&gt;
|-&lt;br /&gt;
| '''[[DCR Static Lite Browser SDK]]'''&lt;br /&gt;
|-&lt;br /&gt;
|  {{OSIcon|GoogleTagManagerIcon.png|alt=Google Tag Manager}}&lt;br /&gt;
| '''[[DCR Static Google Tag Manager]]'''&lt;br /&gt;
|-&lt;br /&gt;
|  {{OSIcon|FacebookIcon.png|alt=Facebook Instant Articles}}&lt;br /&gt;
| '''[[DCR Static Facebook Instant Articles Browser SDK]]'''&lt;br /&gt;
|-&lt;br /&gt;
|  {{OSIcon|Tealium_Icon.png|alt=Tealium}}&lt;br /&gt;
| '''[[DCR Static Tealium]]'''&lt;br /&gt;
|-&lt;br /&gt;
|  {{OSIcon|AMPIcon.png|alt=Google AMP}}&lt;br /&gt;
| '''[[DCR Static Google AMP Cloud API]]'''&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
|{{OSIcon|BrowserIcon.png|alt=Browser}}&lt;br /&gt;
|'''[[DCR Static Domless SDK]]'''&lt;br /&gt;
|[[Domless SDK API Reference]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Xamarin ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
| colspan=&amp;quot;6&amp;quot; | Xamarin Integration Guides (Xamarin support is part of [[Special:Downloads|Nielsen's AppSDK V8]] and above.)&lt;br /&gt;
|-&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;
!| Implementation Guide&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;8&amp;quot; | {{SmallIcon|SDKIcon.png|alt=SDK}}&lt;br /&gt;
|-&lt;br /&gt;
|  {{OSIcon|VideoIcon.png|alt=Video}}&lt;br /&gt;
| {{OSIcon|APIIcon.png|alt=Xamarin}}&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | '''[[DCR_%26_DTVR_Xamarin_Integration|DCR &amp;amp; DTVR Xamarin Integration]]'''&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Cloud API ==&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;
!| DCR Implementation Guide&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | {{SmallIcon|CloudAPIIcon.png|alt=Cloud API}} &lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; |&lt;br /&gt;
{{OSIcon|VideoIcon.png|alt=Video}}&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
{{OSIcon|StaticIcon.png|alt=Static Content}}&lt;br /&gt;
| {{OSIcon|APIIcon.png|alt=Cloud API}}&lt;br /&gt;
| '''[[DCR Video &amp;amp; Static Cloud API ]]''' &lt;br /&gt;
|-&lt;br /&gt;
| {{OSIcon|APIIcon.png|alt=Cloud API}}&lt;br /&gt;
| '''[[DCR Video &amp;amp; Static Mobile Cloud API ]]'''&lt;br /&gt;
|-&lt;br /&gt;
| {{OSIcon|RokuIcon.png|alt=Roku}}&lt;br /&gt;
| '''[[DCR Video &amp;amp; Static Roku Cloud API]]'''&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Adobe Launch Extensions ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
| colspan=&amp;quot;6&amp;quot; | Leverage Launch by Adobe? The guides below describe how to integrate DCR and DTVR with Nielsen's Adobe Launch extension&lt;br /&gt;
|-&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;
!| Implementation Guide&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;8&amp;quot; | {{SmallIcon|SDKIcon.png|alt=SDK}}&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | '''[[Digital Measurement Onboarding Adobe ]]'''&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 &amp;amp; DTVR iOS Adobe Launch Extension]]'''&lt;br /&gt;
|-&lt;br /&gt;
| {{OSIcon|AndroidIcon.png|alt=Android}}&lt;br /&gt;
| '''[[DCR &amp;amp; DTVR Android Adobe Launch Extension]]'''&lt;br /&gt;
|-&lt;br /&gt;
| {{OSIcon|BrowserIcon.png|alt=Browser}}&lt;br /&gt;
| '''[[DCR &amp;amp; DTVR Browser Adobe Launch Extension]]'''&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== SmartTV Integrations ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
| colspan=&amp;quot;6&amp;quot; | The guides below describe how to integrate DCR and DTVR with Smart tv's&lt;br /&gt;
|-&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;
! | Implementation Guide&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;9&amp;quot; | {{SmallIcon|SDKIcon.png|alt=SDK}}&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | {{OSIcon|VideoIcon.png|alt=Video}}&lt;br /&gt;
| {{OSIcon|BrowserIcon.png|alt=Browser}}&lt;br /&gt;
| '''[[TizenTv]]'''&lt;br /&gt;
|-&lt;br /&gt;
| {{OSIcon|BrowserIcon.png|alt=Browser}}&lt;br /&gt;
| '''[[webOS]]'''&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|{{OSIcon|AndroidIcon.png|alt=Android}}&lt;br /&gt;
|'''[[AndroidTV]]'''&lt;br /&gt;
|&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>AmySockanathan</name></author>
	</entry>
	<entry>
		<id>https://nielsentest.mywikis.net/w/index.php?title=US_DCR_%26_DTVR&amp;diff=7047</id>
		<title>US DCR &amp; DTVR</title>
		<link rel="alternate" type="text/html" href="https://nielsentest.mywikis.net/w/index.php?title=US_DCR_%26_DTVR&amp;diff=7047"/>
		<updated>2026-06-09T20:23:08Z</updated>

		<summary type="html">&lt;p&gt;AmySockanathan: Add SDK Integration Assistance &amp;amp; Diagnostic Tool&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Breadcrumb|}} {{Breadcrumb|Digital}} {{CurrentBreadcrumb}}&lt;br /&gt;
[[Category:Digital]]&lt;br /&gt;
{{CategoryIcon|DCR.png|US Digital Content Ratings (DCR) &amp;amp; Digital in TV Ratings (DTVR)}}&lt;br /&gt;
&lt;br /&gt;
__NOTOC__&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! colspan=&amp;quot;3&amp;quot;| Start Here&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;7&amp;quot; | {{SmallIcon|thePlatformIcon.png}}&lt;br /&gt;
| '''Step-By-Step SDK Integration Guides ([[BSDK Step By Step|Browser]], [[Android Step By Step|Android]], [[iOS Step By Step|iOS]])'''&lt;br /&gt;
| '''API Reference Tables ([[Browser_SDK_API_Table|Browser]], [[Android_SDK_API_Table|Android]], [[iOS_SDK_API_Table|iOS]])'''&lt;br /&gt;
|-&lt;br /&gt;
| '''[[DCR_vs_DTVR|DCR vs. DTVR Implementation - Key Differences]]'''&lt;br /&gt;
| '''Product Information - [https://markets.nielsen.com/us/en/solutions/capabilities/digital-content-ratings/ DCR], [https://www.nielsen.com/solutions/audience-measurement/national-tv/ DTVR]'''&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! colspan=&amp;quot;3&amp;quot;| General Reference&lt;br /&gt;
|-&lt;br /&gt;
| '''[[Digital Measurement Onboarding]]'''&lt;br /&gt;
| '''[[Digital Measurement Metadata]]'''&lt;br /&gt;
| '''[[Digital Measurement Testing]]'''&lt;br /&gt;
|-&lt;br /&gt;
| '''[[Digital Measurement Interruption Scenarios]]'''&lt;br /&gt;
| '''[[Digital Measurement FAQ]]'''&lt;br /&gt;
| '''SDK Release Notes - [[Browser_SDK_Release_Notes|Browser]], [[Android_SDK_Release_Notes|Android]], [[iOS_SDK_Release_Notes|iOS]], [[TVOS_SDK_Release_Notes|TVOS]], [[DOMless SDK Release Notes|Domless]]'''&lt;br /&gt;
|-&lt;br /&gt;
| '''[[Digital Pre-Certification Checklist App SDK]]'''&lt;br /&gt;
| '''[[Digital Pre-Certification Checklist Browser SDK]]'''&lt;br /&gt;
| '''[[Digital Measurement Persistent Identifiers]]'''&lt;br /&gt;
|-&lt;br /&gt;
|[[Dual Instances of SDK|'''Dual Instances of SDK''']]&lt;br /&gt;
|'''SDK Integration Assistance &amp;amp; Diagnostic Tool (IADT)'''&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== SEI ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
| colspan=&amp;quot;3&amp;quot; |Single Endpoint Integration (SEI) - log-file based data transaction mechanism&lt;br /&gt;
|-&lt;br /&gt;
!Type&lt;br /&gt;
!&lt;br /&gt;
!Implementation Guide&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;5&amp;quot; |{{SmallIcon|DigitalIcon.png}}&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;5&amp;quot; |{{OSIcon|VideoIcon.png|alt=Video}}&lt;br /&gt;
|'''[[Digital Measurement SEI Streaming Content Viewing]]'''&lt;br /&gt;
|-&lt;br /&gt;
|'''[[Digital Measurement Content Asset Metadata]]'''&lt;br /&gt;
|-&lt;br /&gt;
|'''[[Digital Measurement Content Audit Beacon]]'''&lt;br /&gt;
|-&lt;br /&gt;
|'''[[Digital Measurement SEI Audio File]](Only for DTVR)'''&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== SDK - Video ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
| colspan=&amp;quot;6&amp;quot; | Maintaining an existing ''DCR'' or ''DTVR'' App integration? Continue to reference the API you're already using with the guides below.&lt;br /&gt;
|-&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: 30%;&amp;quot; | DCR Implementation Guide&lt;br /&gt;
! style=&amp;quot;width: 25%;&amp;quot; | DTVR Implementation Guide&lt;br /&gt;
!| SDK Documentation&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;8&amp;quot; | {{SmallIcon|SDKIcon.png|alt=SDK}}&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;4&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;
| '''[[DTVR 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;
| '''[[DTVR Android SDK]]'''&lt;br /&gt;
| [[Android SDK API Reference]]&lt;br /&gt;
|-&lt;br /&gt;
| {{OSIcon|BrowserIcon.png|alt=Browser}}&lt;br /&gt;
| '''[[DCR Video Browser SDK]]'''&lt;br /&gt;
| '''[[DTVR Browser SDK]]'''&lt;br /&gt;
| [[Browser SDK API Reference]]&lt;br /&gt;
|-&lt;br /&gt;
| {{OSIcon|BrowserIcon.png|alt=Browser}}&lt;br /&gt;
| '''[[DCR Video Domless SDK]]'''&lt;br /&gt;
| '''[[DTVR Domless SDK]]'''&lt;br /&gt;
| [[Domless SDK API Reference]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== SDK - Static ==&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: 55%;&amp;quot; | DCR Implementation Guide&lt;br /&gt;
!| SDK Documentation&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;9&amp;quot; | {{SmallIcon|SDKIcon.png|alt=SDK}}&lt;br /&gt;
| rowspan=&amp;quot;9&amp;quot; | {{OSIcon|StaticIcon.png|alt=Static Content}}&lt;br /&gt;
| {{OSIcon|macOSIcon.png|alt=iOS}}&lt;br /&gt;
| '''[[DCR Static iOS SDK]]'''&lt;br /&gt;
| [[iOS SDK API Reference]]&lt;br /&gt;
|-&lt;br /&gt;
| {{OSIcon|AndroidIcon.png|alt=Android}}&lt;br /&gt;
| '''[[DCR Static Android SDK]]'''&lt;br /&gt;
| [[Android SDK API Reference]]&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | {{OSIcon|BrowserIcon.png|alt=Browser}}&lt;br /&gt;
| '''[[DCR Static Browser SDK]]'''&lt;br /&gt;
| rowspan=&amp;quot;5&amp;quot; | [[Browser SDK API Reference]]&lt;br /&gt;
|-&lt;br /&gt;
| '''[[DCR Static Lite Browser SDK]]'''&lt;br /&gt;
|-&lt;br /&gt;
|  {{OSIcon|GoogleTagManagerIcon.png|alt=Google Tag Manager}}&lt;br /&gt;
| '''[[DCR Static Google Tag Manager]]'''&lt;br /&gt;
|-&lt;br /&gt;
|  {{OSIcon|FacebookIcon.png|alt=Facebook Instant Articles}}&lt;br /&gt;
| '''[[DCR Static Facebook Instant Articles Browser SDK]]'''&lt;br /&gt;
|-&lt;br /&gt;
|  {{OSIcon|Tealium_Icon.png|alt=Tealium}}&lt;br /&gt;
| '''[[DCR Static Tealium]]'''&lt;br /&gt;
|-&lt;br /&gt;
|  {{OSIcon|AMPIcon.png|alt=Google AMP}}&lt;br /&gt;
| '''[[DCR Static Google AMP Cloud API]]'''&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
|{{OSIcon|BrowserIcon.png|alt=Browser}}&lt;br /&gt;
|'''[[DCR Static Domless SDK]]'''&lt;br /&gt;
|[[Domless SDK API Reference]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Xamarin ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
| colspan=&amp;quot;6&amp;quot; | Xamarin Integration Guides (Xamarin support is part of [[Special:Downloads|Nielsen's AppSDK V8]] and above.)&lt;br /&gt;
|-&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;
!| Implementation Guide&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;8&amp;quot; | {{SmallIcon|SDKIcon.png|alt=SDK}}&lt;br /&gt;
|-&lt;br /&gt;
|  {{OSIcon|VideoIcon.png|alt=Video}}&lt;br /&gt;
| {{OSIcon|APIIcon.png|alt=Xamarin}}&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | '''[[DCR_%26_DTVR_Xamarin_Integration|DCR &amp;amp; DTVR Xamarin Integration]]'''&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Cloud API ==&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;
!| DCR Implementation Guide&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | {{SmallIcon|CloudAPIIcon.png|alt=Cloud API}} &lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; |&lt;br /&gt;
{{OSIcon|VideoIcon.png|alt=Video}}&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
{{OSIcon|StaticIcon.png|alt=Static Content}}&lt;br /&gt;
| {{OSIcon|APIIcon.png|alt=Cloud API}}&lt;br /&gt;
| '''[[DCR Video &amp;amp; Static Cloud API ]]''' &lt;br /&gt;
|-&lt;br /&gt;
| {{OSIcon|APIIcon.png|alt=Cloud API}}&lt;br /&gt;
| '''[[DCR Video &amp;amp; Static Mobile Cloud API ]]'''&lt;br /&gt;
|-&lt;br /&gt;
| {{OSIcon|RokuIcon.png|alt=Roku}}&lt;br /&gt;
| '''[[DCR Video &amp;amp; Static Roku Cloud API]]'''&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Adobe Launch Extensions ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
| colspan=&amp;quot;6&amp;quot; | Leverage Launch by Adobe? The guides below describe how to integrate DCR and DTVR with Nielsen's Adobe Launch extension&lt;br /&gt;
|-&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;
!| Implementation Guide&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;8&amp;quot; | {{SmallIcon|SDKIcon.png|alt=SDK}}&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | '''[[Digital Measurement Onboarding Adobe ]]'''&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 &amp;amp; DTVR iOS Adobe Launch Extension]]'''&lt;br /&gt;
|-&lt;br /&gt;
| {{OSIcon|AndroidIcon.png|alt=Android}}&lt;br /&gt;
| '''[[DCR &amp;amp; DTVR Android Adobe Launch Extension]]'''&lt;br /&gt;
|-&lt;br /&gt;
| {{OSIcon|BrowserIcon.png|alt=Browser}}&lt;br /&gt;
| '''[[DCR &amp;amp; DTVR Browser Adobe Launch Extension]]'''&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== SmartTV Integrations ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
| colspan=&amp;quot;6&amp;quot; | The guides below describe how to integrate DCR and DTVR with Smart tv's&lt;br /&gt;
|-&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;
! | Implementation Guide&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;9&amp;quot; | {{SmallIcon|SDKIcon.png|alt=SDK}}&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | {{OSIcon|VideoIcon.png|alt=Video}}&lt;br /&gt;
| {{OSIcon|BrowserIcon.png|alt=Browser}}&lt;br /&gt;
| '''[[TizenTv]]'''&lt;br /&gt;
|-&lt;br /&gt;
| {{OSIcon|BrowserIcon.png|alt=Browser}}&lt;br /&gt;
| '''[[webOS]]'''&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|{{OSIcon|AndroidIcon.png|alt=Android}}&lt;br /&gt;
|'''[[AndroidTV]]'''&lt;br /&gt;
|&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>AmySockanathan</name></author>
	</entry>
	<entry>
		<id>https://nielsentest.mywikis.net/w/index.php?title=Dual_Instances_of_SDK&amp;diff=7046</id>
		<title>Dual Instances of SDK</title>
		<link rel="alternate" type="text/html" href="https://nielsentest.mywikis.net/w/index.php?title=Dual_Instances_of_SDK&amp;diff=7046"/>
		<updated>2026-06-09T20:20:06Z</updated>

		<summary type="html">&lt;p&gt;AmySockanathan: Align the multiple instance page content with Production.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Breadcrumb|}} {{Breadcrumb|Digital}} {{Breadcrumb|DCR &amp;amp; DTVR}}  {{CurrentBreadcrumb}}&lt;br /&gt;
[[Category:Digital]]&lt;br /&gt;
&lt;br /&gt;
== Multiple SDK Instances ==&lt;br /&gt;
&lt;br /&gt;
=== SDK Initialization ===&lt;br /&gt;
&lt;br /&gt;
==== App SDK ====&lt;br /&gt;
The latest version of the Nielsen App SDK allows instantiating multiple instances of the SDK object, which can be used simultaneously without any issue. The sharedInstance API that creates a singleton object was deprecated prior to version 5.1.1. (Version 4.0 for Android)&lt;br /&gt;
&lt;br /&gt;
A maximum of four SDK instances per appid are supported.&lt;br /&gt;
When four SDK instances exist, you must destroy an old instance before creating a new one.&lt;br /&gt;
&lt;br /&gt;
==== Browser SDK ====&lt;br /&gt;
The Browser SDK allows instantiating multiple instances of the object, which can be used simultaneously without any problems, however they must be instantiated with their own unique instance names. There is no maximum number of instances that is enforced in the browser.&lt;br /&gt;
&lt;br /&gt;
=== App SDK Examples ===&lt;br /&gt;
&lt;br /&gt;
==== Example using Swift ====&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;In this example we create a swift file called NielsenInit where I store our SDK Initialization code.  The example uses 2 APPIDS to keep everything organized.  &lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;swift&amp;quot;&amp;gt;&lt;br /&gt;
 self.nielsenStaticApi = NielsenInit.createStaticNielsenApi(delegate: self)&lt;br /&gt;
 self.nielsenApi = NielsenInit.createNielsenApi(delegate: self)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;Here are the methods in the NielsenInit class.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;swift&amp;quot;&amp;gt;&lt;br /&gt;
class NielsenInit : NSObject {&lt;br /&gt;
&lt;br /&gt;
    class func createNielsenApi(delegate: NielsenAppApiDelegate) -&amp;gt; NielsenAppApi?{&lt;br /&gt;
        let appInformation:[String: String] = [          &lt;br /&gt;
&lt;br /&gt;
            &amp;quot;appid&amp;quot;: &amp;quot;PDA7D5EE6-B1B8-4123-9277-2A788BC65XXX&amp;quot;,&lt;br /&gt;
            &amp;quot;appname&amp;quot;: &amp;quot;Standard SDK Swift Sample&amp;quot;,&lt;br /&gt;
            &amp;quot;appversion&amp;quot;: &amp;quot;1.0&amp;quot;,&lt;br /&gt;
            &amp;quot;sfcode&amp;quot;: &amp;quot;dcr&amp;quot;,&lt;br /&gt;
            &amp;quot;nol_devDebug&amp;quot;: &amp;quot;INFO&amp;quot;&lt;br /&gt;
        ]     &lt;br /&gt;
        return NielsenAppApi(appInfo:appInformation, delegate:delegate)&lt;br /&gt;
    }  &lt;br /&gt;
&lt;br /&gt;
    class func createStaticNielsenApi(delegate: NielsenAppApiDelegate) -&amp;gt; NielsenAppApi?{&lt;br /&gt;
 &lt;br /&gt;
        let appInformation:[String: String] = [&lt;br /&gt;
&lt;br /&gt;
            &amp;quot;appid&amp;quot;: &amp;quot;PE4A57F64-878D-4D69-8EFB-4E87C27BXXXX&amp;quot;,&lt;br /&gt;
            &amp;quot;appname&amp;quot;: &amp;quot;Standard SDK Swift Sample&amp;quot;,&lt;br /&gt;
            &amp;quot;appversion&amp;quot;: &amp;quot;1.0&amp;quot;,&lt;br /&gt;
            &amp;quot;sfcode&amp;quot;: &amp;quot;dcr&amp;quot;,&lt;br /&gt;
            &amp;quot;nol_devDebug&amp;quot;: &amp;quot;INFO&amp;quot;&lt;br /&gt;
        ]&lt;br /&gt;
        return NielsenAppApi(appInfo:appInformation, delegate:delegate)&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;We then load up the Static and Content metadata in our sample:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;swift&amp;quot;&amp;gt;&lt;br /&gt;
    func loadStatic() -&amp;gt; [String : Any] {&lt;br /&gt;
        //Loading Static data&lt;br /&gt;
        let staticData =&lt;br /&gt;
        [&lt;br /&gt;
            &amp;quot;type&amp;quot;: &amp;quot;static&amp;quot;,&lt;br /&gt;
            &amp;quot;section&amp;quot;: &amp;quot;siteSection&amp;quot;,&lt;br /&gt;
            &amp;quot;segA&amp;quot;: &amp;quot;segmentA&amp;quot;,&lt;br /&gt;
            &amp;quot;segB&amp;quot;: &amp;quot;segmentB&amp;quot;,&lt;br /&gt;
            &amp;quot;segC&amp;quot;: &amp;quot;segmentC&amp;quot;&lt;br /&gt;
        ]&lt;br /&gt;
        return staticData&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    func loadContent() -&amp;gt; [String : Any] {&lt;br /&gt;
        //Loading Content data&lt;br /&gt;
        url = NSURL(string: &amp;quot;http://www.nielseninternet.com/NielsenConsumer/prog_index.m3u8&amp;quot;)&lt;br /&gt;
        let content = [&lt;br /&gt;
            &amp;quot;type&amp;quot;:&amp;quot;content&amp;quot;,&lt;br /&gt;
            &amp;quot;assetid&amp;quot;:&amp;quot;C77664&amp;quot;,&lt;br /&gt;
            &amp;quot;length&amp;quot;:&amp;quot;3600&amp;quot;,&lt;br /&gt;
            &amp;quot;program&amp;quot;:&amp;quot;MyProgram&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;segmentC&amp;quot;,&lt;br /&gt;
            &amp;quot;title&amp;quot;:&amp;quot;S2,E3&amp;quot;,&lt;br /&gt;
            &amp;quot;section&amp;quot;:&amp;quot;cloudApi_app&amp;quot;,&lt;br /&gt;
            &amp;quot;airdate&amp;quot;:&amp;quot;20180221 10:00:00&amp;quot;,&lt;br /&gt;
            &amp;quot;isfullepisode&amp;quot;:&amp;quot;y&amp;quot;,&lt;br /&gt;
            &amp;quot;adloadtype&amp;quot;:&amp;quot;2&amp;quot;,&lt;br /&gt;
            &amp;quot;channelName&amp;quot;:&amp;quot;My Channel 1&amp;quot;,&lt;br /&gt;
            &amp;quot;pipMode&amp;quot;:&amp;quot;false&amp;quot; ] as [String : Any]&lt;br /&gt;
&lt;br /&gt;
        return content&lt;br /&gt;
    }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;In AppDelegate, we initialize the 1st instance of the SDK for Static Measurement when the App launches.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;swift&amp;quot;&amp;gt;&lt;br /&gt;
    func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -&amp;gt; Bool {&lt;br /&gt;
        // Override point for customization after application launch.&lt;br /&gt;
&lt;br /&gt;
        //Getting the instance of NielsenApi&lt;br /&gt;
        self.nielsenStaticApi = NielsenInit.createStaticNielsenApi(delegate: self)&lt;br /&gt;
        sdkMethods = SDKMethods()&lt;br /&gt;
        self.data = sdkMethods.loadStatic()&lt;br /&gt;
        self.nielsenStaticApi.loadMetadata(self.data)&lt;br /&gt;
        return true&lt;br /&gt;
    }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;Now for the Player Instance, we initialize in the ViewController, but only after the View has loaded:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;swift&amp;quot;&amp;gt;&lt;br /&gt;
    override func viewDidLoad() {&lt;br /&gt;
        super.viewDidLoad()&lt;br /&gt;
        self.view.backgroundColor = UIColor(patternImage: UIImage(named: &amp;quot;new_ios_bg.png&amp;quot;)!)&lt;br /&gt;
        //In NielsenInit class we are initialising the NielsenApi.&lt;br /&gt;
&lt;br /&gt;
        //Getting the instance of NielsenApi&lt;br /&gt;
        self.nielsencontentApi = NielsenInit.createNielsenApi(delegate: self)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Now you can just call them separately:&lt;br /&gt;
&lt;br /&gt;
For example, App goes into the background:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;swift&amp;quot;&amp;gt;&lt;br /&gt;
    func applicationDidEnterBackground(_ application: UIApplication) {&lt;br /&gt;
&lt;br /&gt;
        // Use this method to release shared resources, save user data, invalidate timers, and store enough application state information to restore your application to its current state in case it is terminated later.&lt;br /&gt;
&lt;br /&gt;
        // If your application supports background execution, this method is called instead of applicationWillTerminate: when the user quits.&lt;br /&gt;
        self.nielsenStaticApi.loadMetadata(self.data)&lt;br /&gt;
    }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;Or sending the playhead position to the second instance:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;swift&amp;quot;&amp;gt;&lt;br /&gt;
nielsencontentApi.play(sdkMethods.loadChannelInfo())          &lt;br /&gt;
self.nielsencontentApi?.playheadPosition(pos);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Example using Android Studio ====&lt;br /&gt;
[https://engineeringportal.nielsen.com/w/downloads/digital/sampleapplications/SimplePlayerStandardWithStaticAndroidSDK.zip Download Project Files]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;The below is an example of Initializing two instances of the Nielsen SDK.  One for Static Measurement, and the other for Video Measurement.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=java&amp;gt;&lt;br /&gt;
public class NielsenInit {&lt;br /&gt;
&lt;br /&gt;
    private AppSdk mAppSdk = null;&lt;br /&gt;
    private AppSdk mStaticAppSdk = null;&lt;br /&gt;
&lt;br /&gt;
    public AppSdk initAppSdk(Context mContext, IAppNotifier appNotifier){&lt;br /&gt;
        try {&lt;br /&gt;
            //Initialising the NielsenAppSDK class by passing app information which returns the instance of AppSdk.&lt;br /&gt;
&lt;br /&gt;
            JSONObject appInformation = new JSONObject()&lt;br /&gt;
&lt;br /&gt;
                    .put(&amp;quot;appid&amp;quot;, &amp;quot;PDA7D5EE6-B1B8-4123-9277-2A788BC65XXX&amp;quot;)&lt;br /&gt;
                    .put(&amp;quot;appversion&amp;quot;, &amp;quot;1.0&amp;quot;)&lt;br /&gt;
                    .put(&amp;quot;sfcode&amp;quot;, &amp;quot;dcr&amp;quot;)&lt;br /&gt;
                    .put(&amp;quot;nol_devDebug&amp;quot;, &amp;quot;INFO&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
            mAppSdk = new AppSdk(mContext, appInformation, appNotifier);&lt;br /&gt;
        } catch (JSONException e) {&lt;br /&gt;
            e.printStackTrace();&lt;br /&gt;
        }&lt;br /&gt;
        return mAppSdk;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    public AppSdk initStaticAppSdk(Context mContext, IAppNotifier appNotifier){&lt;br /&gt;
        try {&lt;br /&gt;
            //Initialising the NielsenAppSDK class by passing app information which returns the instance of AppSdk.&lt;br /&gt;
&lt;br /&gt;
            JSONObject appInformation = new JSONObject()&lt;br /&gt;
&lt;br /&gt;
                    .put(&amp;quot;appid&amp;quot;, &amp;quot;PE4A57F64-878D-4D69-8EFB-4E87C27BAXXX&amp;quot;)&lt;br /&gt;
                    .put(&amp;quot;appversion&amp;quot;, &amp;quot;1.0&amp;quot;)&lt;br /&gt;
                    .put(&amp;quot;sfcode&amp;quot;, &amp;quot;dcr&amp;quot;)&lt;br /&gt;
                    .put(&amp;quot;nol_devDebug&amp;quot;, &amp;quot;INFO&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
            mStaticAppSdk = new AppSdk(mContext, appInformation, appNotifier);&lt;br /&gt;
        } catch (JSONException e) {&lt;br /&gt;
            e.printStackTrace();&lt;br /&gt;
        }&lt;br /&gt;
        return mStaticAppSdk;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=java&amp;gt;&lt;br /&gt;
        NielsenInit nielsenInit = new NielsenInit();&lt;br /&gt;
&lt;br /&gt;
        //3rd parameter &amp;quot;this&amp;quot; referes to IAppNotifier interface which is needed to initialise NielsenSDK.&lt;br /&gt;
        staticAppSdk = nielsenInit.initStaticAppSdk(MyApplication.getContext(), this);&lt;br /&gt;
        data = sdkMethods.loadStaticData();&lt;br /&gt;
&lt;br /&gt;
  if(this.b == 0) {&lt;br /&gt;
                        AppLaunchMeasurementManager.appInBackground(app.getApplicationContext());&lt;br /&gt;
                        staticAppSdk.loadMetadata(data);&lt;br /&gt;
                        Log.d(&amp;quot;SdkBgFgDetectionUtility&amp;quot;, &amp;quot;App going to background&amp;quot;);&lt;br /&gt;
                    }&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=java&amp;gt;&lt;br /&gt;
        //Getting the instance of NielsenSDK.&lt;br /&gt;
        NielsenInit nielsenInit = new NielsenInit();&lt;br /&gt;
&lt;br /&gt;
        //3rd parameter &amp;quot;this&amp;quot; referes to IAppNotifier interface which is needed to initialise NielsenSDK.&lt;br /&gt;
        appSdk = nielsenInit.initAppSdk(getApplicationContext(), this);&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Browser SDK Examples ===&lt;br /&gt;
The below examples will make use of the same AppId, however using different AppIds will work as well. The principles below follow the same initialization rules as a single instance and simply require a unique instance name and variable name with which the returned instance is assigned. &lt;br /&gt;
&lt;br /&gt;
For more information around the possible parameters that can be passed as well as deeper descriptions for the API calls, please refer to our API documentation here: [[Browser SDK API Reference]]&lt;br /&gt;
&lt;br /&gt;
==== Example of 2 instances on the same page ====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
//Add Static Queue Snippet&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
    !function (e, n) {&lt;br /&gt;
      function t(e) {&lt;br /&gt;
        return &amp;quot;object&amp;quot; == typeof e ? JSON.parse(JSON.stringify(e)) : e&lt;br /&gt;
      }&lt;br /&gt;
      e[n] = e[n] ||&lt;br /&gt;
      {&lt;br /&gt;
        nlsQ: function (o, r, c) {&lt;br /&gt;
          var s = e.document,&lt;br /&gt;
            a = s.createElement(&amp;quot;script&amp;quot;);&lt;br /&gt;
          a.async = 1,&lt;br /&gt;
            a.src = (&amp;quot;http:&amp;quot; === e.location.protocol ? &amp;quot;http:&amp;quot; : &amp;quot;https:&amp;quot;) + &amp;quot;//cdn-gl.imrworldwide.com/conf/&amp;quot; + o + &amp;quot;.js#name=&amp;quot; + r + &amp;quot;&amp;amp;ns=&amp;quot; + n;&lt;br /&gt;
          var i = s.getElementsByTagName(&amp;quot;script&amp;quot;)[0];&lt;br /&gt;
          return i.parentNode.insertBefore(a, i),&lt;br /&gt;
            e[n][r] = e[n][r] || {&lt;br /&gt;
              g: c || {},&lt;br /&gt;
              ggPM: function (o, c, s, a, i) { e[n][r].q = e[n][r].q || []; try { var l = t([o, c, s, a, i]); e[n][r].q.push(l) } catch (e) { console &amp;amp;&amp;amp; console.log &amp;amp;&amp;amp; console.log(&amp;quot;Error: Cannot register event in Nielsen SDK queue.&amp;quot;) } },&lt;br /&gt;
              trackEvent: function (o) { e[n][r].te = e[n][r].te || []; try { var c = t(o); e[n][r].te.push(c) } catch (e) { console &amp;amp;&amp;amp; console.log &amp;amp;&amp;amp; console.log(&amp;quot;Error: Cannot register event in Nielsen SDK queue.&amp;quot;) } }&lt;br /&gt;
            },&lt;br /&gt;
            e[n][r]&lt;br /&gt;
        }&lt;br /&gt;
      }&lt;br /&gt;
    }(window, &amp;quot;NOLBUNDLE&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
    //Create SDK Instance(s)&lt;br /&gt;
    // Notice the unique instance name given to each instance below and the unique variable name for each instance&lt;br /&gt;
    var nSdkInstanceLive = NOLBUNDLE.nlsQ(&amp;quot;XXXXXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXX&amp;quot;, &amp;quot;instanceLive&amp;quot;, {&lt;br /&gt;
        nol_sdkDebug: 'debug',&lt;br /&gt;
        optout: 'false'&lt;br /&gt;
    });&lt;br /&gt;
&lt;br /&gt;
    var nSdkInstanceVod = NOLBUNDLE.nlsQ(&amp;quot;XXXXXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXX&amp;quot;, &amp;quot;instanceVod&amp;quot;, {&lt;br /&gt;
        nol_sdkDebug: 'debug',&lt;br /&gt;
        optout: 'false'&lt;br /&gt;
    });&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Example of 2 instances using a parent page and iFrame ====&lt;br /&gt;
&lt;br /&gt;
===== Parent Page (index.html) =====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;html&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!DOCTYPE html&amp;gt;&lt;br /&gt;
&amp;lt;html lang=&amp;quot;en&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;head&amp;gt;&lt;br /&gt;
  &amp;lt;meta charset=&amp;quot;UTF-8&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;meta name=&amp;quot;viewport&amp;quot; content=&amp;quot;width=device-width, initial-scale=1.0&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;meta http-equiv=&amp;quot;X-UA-Compatible&amp;quot; content=&amp;quot;ie=edge&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;title&amp;gt;DCR Static/DCR Video&amp;lt;/title&amp;gt;&lt;br /&gt;
  &amp;lt;script&amp;gt;&lt;br /&gt;
    /* NLSQUEUE build v*/&lt;br /&gt;
    !function(e,n){&lt;br /&gt;
    function t(e){&lt;br /&gt;
      return&amp;quot;object&amp;quot;==typeof e?JSON.parse(JSON.stringify(e)):e&lt;br /&gt;
    }&lt;br /&gt;
    e[n]=e[n]||&lt;br /&gt;
    {&lt;br /&gt;
      nlsQ:function(o,r,c){&lt;br /&gt;
        var s=e.document,&lt;br /&gt;
        a=s.createElement(&amp;quot;script&amp;quot;);&lt;br /&gt;
        a.async=1,&lt;br /&gt;
        a.src=(&amp;quot;http:&amp;quot;===e.location.protocol?&amp;quot;http:&amp;quot;:&amp;quot;https:&amp;quot;)+&amp;quot;//cdn-gl.imrworldwide.com/conf/&amp;quot;+o+&amp;quot;.js#name=&amp;quot;+r+&amp;quot;&amp;amp;ns=&amp;quot;+n;&lt;br /&gt;
        var i=s.getElementsByTagName(&amp;quot;script&amp;quot;)[0];&lt;br /&gt;
        return i.parentNode.insertBefore(a,i),&lt;br /&gt;
        e[n][r]=e[n][r]||{g:c||{},&lt;br /&gt;
        ggPM:function(o,c,s,a,i){e[n][r].q=e[n][r].q||[];try{var l=t([o,c,s,a,i]);e[n][r].q.push(l)}catch(e){console&amp;amp;&amp;amp;console.log&amp;amp;&amp;amp;console.log(&amp;quot;Error: Cannot register event in Nielsen SDK queue.&amp;quot;)}},&lt;br /&gt;
        trackEvent:function(o){e[n][r].te=e[n][r].te||[];try{var c=t(o);e[n][r].te.push(c)}catch(e){console&amp;amp;&amp;amp;console.log&amp;amp;&amp;amp;console.log(&amp;quot;Error: Cannot register event in Nielsen SDK queue.&amp;quot;)}}},&lt;br /&gt;
        e[n][r]&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
  }(window,&amp;quot;NOLBUNDLE&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
    // SDK Initialization&lt;br /&gt;
    var nSdkInstance = NOLBUNDLE.nlsQ(&amp;quot;XXXXXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXX&amp;quot;, &amp;quot;staticPage&amp;quot;, {&lt;br /&gt;
      nol_sdkDebug: 'debug',&lt;br /&gt;
    });&lt;br /&gt;
&lt;br /&gt;
    // Static Metadata &lt;br /&gt;
    var staticMetadata = {&lt;br /&gt;
      assetid: 'staticTestPage',&lt;br /&gt;
      type: 'static'&lt;br /&gt;
    };&lt;br /&gt;
&lt;br /&gt;
    // Event 'staticstart' call&lt;br /&gt;
    nSdkInstance.ggPM(14, staticMetadata);&lt;br /&gt;
  &amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;/head&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;body&amp;gt;&lt;br /&gt;
  &amp;lt;h1&amp;gt;DCR Static on Parent/DCR Video in iFrame&amp;lt;/h1&amp;gt;&lt;br /&gt;
  &amp;lt;p&amp;gt;Static measurement is current on parent page when window is in focus&amp;lt;/p&amp;gt;&lt;br /&gt;
  &amp;lt;iframe src=&amp;quot;./dcr-video.html&amp;quot; frameborder=&amp;quot;0&amp;quot; width=&amp;quot;650&amp;quot; height=&amp;quot;500&amp;quot; style=&amp;quot;background-color: rgb(42, 217, 248);&amp;quot; id=&amp;quot;video-iframe&amp;quot;&amp;gt;&amp;lt;/iframe&amp;gt;&lt;br /&gt;
&amp;lt;/body&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Nested iFrame Referenced on Parent Page (dcr-video.html) =====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;html&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!DOCTYPE html&amp;gt;&lt;br /&gt;
&amp;lt;html lang=&amp;quot;en&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;head&amp;gt;&lt;br /&gt;
    &amp;lt;meta charset=&amp;quot;UTF-8&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;meta name=&amp;quot;viewport&amp;quot; content=&amp;quot;width=device-width, initial-scale=1.0&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;meta http-equiv=&amp;quot;X-UA-Compatible&amp;quot; content=&amp;quot;ie=edge&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;title&amp;gt;iFrame Same Source&amp;lt;/title&amp;gt;&lt;br /&gt;
    &amp;lt;script&amp;gt;&lt;br /&gt;
    /* NLSQUEUE build v*/&lt;br /&gt;
    !function(e,n){&lt;br /&gt;
      function t(e){&lt;br /&gt;
        return&amp;quot;object&amp;quot;==typeof e?JSON.parse(JSON.stringify(e)):e&lt;br /&gt;
      }&lt;br /&gt;
      e[n]=e[n]||&lt;br /&gt;
      {&lt;br /&gt;
        nlsQ:function(o,r,c){&lt;br /&gt;
          var s=e.document,&lt;br /&gt;
          a=s.createElement(&amp;quot;script&amp;quot;);&lt;br /&gt;
          a.async=1,&lt;br /&gt;
          a.src=(&amp;quot;http:&amp;quot;===e.location.protocol?&amp;quot;http:&amp;quot;:&amp;quot;https:&amp;quot;)+&amp;quot;//cdn-gl.imrworldwide.com/conf/&amp;quot;+o+&amp;quot;.js#name=&amp;quot;+r+&amp;quot;&amp;amp;ns=&amp;quot;+n;&lt;br /&gt;
          var i=s.getElementsByTagName(&amp;quot;script&amp;quot;)[0];&lt;br /&gt;
          return i.parentNode.insertBefore(a,i),&lt;br /&gt;
          e[n][r]=e[n][r]||{g:c||{},&lt;br /&gt;
          ggPM:function(o,c,s,a,i){e[n][r].q=e[n][r].q||[];try{var l=t([o,c,s,a,i]);e[n][r].q.push(l)}catch(e){console&amp;amp;&amp;amp;console.log&amp;amp;&amp;amp;console.log(&amp;quot;Error: Cannot register event in Nielsen SDK queue.&amp;quot;)}},&lt;br /&gt;
          trackEvent:function(o){e[n][r].te=e[n][r].te||[];try{var c=t(o);e[n][r].te.push(c)}catch(e){console&amp;amp;&amp;amp;console.log&amp;amp;&amp;amp;console.log(&amp;quot;Error: Cannot register event in Nielsen SDK queue.&amp;quot;)}}},&lt;br /&gt;
          e[n][r]&lt;br /&gt;
        }&lt;br /&gt;
      }&lt;br /&gt;
    }(window,&amp;quot;NOLBUNDLE&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
    // SDK Initialization&lt;br /&gt;
    var nSdkInstance = NOLBUNDLE.nlsQ(&amp;quot;XXXXXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXX&amp;quot;, &amp;quot;videoPlayer&amp;quot;, {&lt;br /&gt;
      nol_sdkDebug: 'debug',&lt;br /&gt;
    });&lt;br /&gt;
&lt;br /&gt;
    var contentMetadata = {&lt;br /&gt;
        type: &amp;quot;content&amp;quot;,&lt;br /&gt;
        length: &amp;quot;300&amp;quot;,&lt;br /&gt;
        title: &amp;quot;Skydiving Across Europe&amp;quot;,&lt;br /&gt;
        program: &amp;quot;latacg&amp;quot;,&lt;br /&gt;
        censuscategory: &amp;quot;Enlisted&amp;quot;,&lt;br /&gt;
        assetid: &amp;quot;204558915992&amp;quot;,&lt;br /&gt;
        section: &amp;quot;ProgramAsset8&amp;quot;,&lt;br /&gt;
        tv: &amp;quot;true&amp;quot;,&lt;br /&gt;
        adModel: &amp;quot;0&amp;quot;,&lt;br /&gt;
        dataSrc: &amp;quot;cms&amp;quot;,&lt;br /&gt;
        segA: &amp;quot;S07E04:NBC&amp;quot;,&lt;br /&gt;
        segB: &amp;quot;teams&amp;quot;,&lt;br /&gt;
        segC:&amp;quot;AtlanataFalcons&amp;quot;,&lt;br /&gt;
      }&lt;br /&gt;
  &amp;lt;/script&amp;gt;&lt;br /&gt;
  &amp;lt;/head&amp;gt;&lt;br /&gt;
  &amp;lt;body&amp;gt;&lt;br /&gt;
    &amp;lt;p&amp;gt;I'm iframe SDK DCR Video measurement, DCR static measurement should continue when clicking &amp;quot;play&amp;quot; on video&amp;lt;/p&amp;gt;&lt;br /&gt;
    &amp;lt;main&amp;gt;&lt;br /&gt;
      &amp;lt;video&lt;br /&gt;
      controls&lt;br /&gt;
      src=&amp;quot;https://archive.org/download/BigBuckBunny_124/Content/big_buck_bunny_720p_surround.mp4&amp;quot;&lt;br /&gt;
      poster=&amp;quot;https://peach.blender.org/wp-content/uploads/title_anouncement.jpg?x11217&amp;quot;&lt;br /&gt;
      width=&amp;quot;620&amp;quot;&amp;gt;&lt;br /&gt;
      Sorry, your browser doesn't support embedded videos, but don't worry, you can&lt;br /&gt;
      &amp;lt;a href=&amp;quot;https://archive.org/details/BigBuckBunny_124&amp;quot;&amp;gt;download it&amp;lt;/a&amp;gt;&lt;br /&gt;
      and watch it with your favorite video player!&lt;br /&gt;
    &amp;lt;/video&amp;gt;&lt;br /&gt;
    &amp;lt;/main&amp;gt;&lt;br /&gt;
    &amp;lt;script src=&amp;quot;../player.js&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
  &amp;lt;/body&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>AmySockanathan</name></author>
	</entry>
	<entry>
		<id>https://nielsentest.mywikis.net/w/index.php?title=US_DCR_%26_DTVR&amp;diff=7045</id>
		<title>US DCR &amp; DTVR</title>
		<link rel="alternate" type="text/html" href="https://nielsentest.mywikis.net/w/index.php?title=US_DCR_%26_DTVR&amp;diff=7045"/>
		<updated>2026-06-09T19:46:42Z</updated>

		<summary type="html">&lt;p&gt;AmySockanathan: Align the staging documentation with production&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Breadcrumb|}} {{Breadcrumb|Digital}} {{CurrentBreadcrumb}}&lt;br /&gt;
[[Category:Digital]]&lt;br /&gt;
{{CategoryIcon|DCR.png|US Digital Content Ratings (DCR) &amp;amp; Digital in TV Ratings (DTVR)}}&lt;br /&gt;
&lt;br /&gt;
__NOTOC__&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! colspan=&amp;quot;3&amp;quot;| Start Here&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;7&amp;quot; | {{SmallIcon|thePlatformIcon.png}}&lt;br /&gt;
| '''Step-By-Step SDK Integration Guides ([[BSDK Step By Step|Browser]], [[Android Step By Step|Android]], [[iOS Step By Step|iOS]])'''&lt;br /&gt;
| '''API Reference Tables ([[Browser_SDK_API_Table|Browser]], [[Android_SDK_API_Table|Android]], [[iOS_SDK_API_Table|iOS]])'''&lt;br /&gt;
|-&lt;br /&gt;
| '''[[DCR_vs_DTVR|DCR vs. DTVR Implementation - Key Differences]]'''&lt;br /&gt;
| '''Product Information - [https://markets.nielsen.com/us/en/solutions/capabilities/digital-content-ratings/ DCR], [https://www.nielsen.com/solutions/audience-measurement/national-tv/ DTVR]'''&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! colspan=&amp;quot;3&amp;quot;| General Reference&lt;br /&gt;
|-&lt;br /&gt;
| '''[[Digital Measurement Onboarding]]'''&lt;br /&gt;
| '''[[Digital Measurement Metadata]]'''&lt;br /&gt;
| '''[[Digital Measurement Testing]]'''&lt;br /&gt;
|-&lt;br /&gt;
| '''[[Digital Measurement Interruption Scenarios]]'''&lt;br /&gt;
| '''[[Digital Measurement FAQ]]'''&lt;br /&gt;
| '''SDK Release Notes - [[Browser_SDK_Release_Notes|Browser]], [[Android_SDK_Release_Notes|Android]], [[iOS_SDK_Release_Notes|iOS]], [[TVOS_SDK_Release_Notes|TVOS]], [[DOMless SDK Release Notes|Domless]]'''&lt;br /&gt;
|-&lt;br /&gt;
| '''[[Digital Pre-Certification Checklist App SDK]]'''&lt;br /&gt;
| '''[[Digital Pre-Certification Checklist Browser SDK]]'''&lt;br /&gt;
| '''[[Digital Measurement Persistent Identifiers]]'''&lt;br /&gt;
|-&lt;br /&gt;
|[[Dual Instances of SDK|'''Dual Instances of SDK''']]&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== SEI ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
| colspan=&amp;quot;3&amp;quot; |Single Endpoint Integration (SEI) - log-file based data transaction mechanism&lt;br /&gt;
|-&lt;br /&gt;
!Type&lt;br /&gt;
!&lt;br /&gt;
!Implementation Guide&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;5&amp;quot; |{{SmallIcon|DigitalIcon.png}}&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;5&amp;quot; |{{OSIcon|VideoIcon.png|alt=Video}}&lt;br /&gt;
|'''[[Digital Measurement SEI Streaming Content Viewing]]'''&lt;br /&gt;
|-&lt;br /&gt;
|'''[[Digital Measurement Content Asset Metadata]]'''&lt;br /&gt;
|-&lt;br /&gt;
|'''[[Digital Measurement Content Audit Beacon]]'''&lt;br /&gt;
|-&lt;br /&gt;
|'''[[Digital Measurement SEI Audio File]](Only for DTVR)'''&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== SDK - Video ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
| colspan=&amp;quot;6&amp;quot; | Maintaining an existing ''DCR'' or ''DTVR'' App integration? Continue to reference the API you're already using with the guides below.&lt;br /&gt;
|-&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: 30%;&amp;quot; | DCR Implementation Guide&lt;br /&gt;
! style=&amp;quot;width: 25%;&amp;quot; | DTVR Implementation Guide&lt;br /&gt;
!| SDK Documentation&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;8&amp;quot; | {{SmallIcon|SDKIcon.png|alt=SDK}}&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;4&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;
| '''[[DTVR 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;
| '''[[DTVR Android SDK]]'''&lt;br /&gt;
| [[Android SDK API Reference]]&lt;br /&gt;
|-&lt;br /&gt;
| {{OSIcon|BrowserIcon.png|alt=Browser}}&lt;br /&gt;
| '''[[DCR Video Browser SDK]]'''&lt;br /&gt;
| '''[[DTVR Browser SDK]]'''&lt;br /&gt;
| [[Browser SDK API Reference]]&lt;br /&gt;
|-&lt;br /&gt;
| {{OSIcon|BrowserIcon.png|alt=Browser}}&lt;br /&gt;
| '''[[DCR Video Domless SDK]]'''&lt;br /&gt;
| '''[[DTVR Domless SDK]]'''&lt;br /&gt;
| [[Domless SDK API Reference]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== SDK - Static ==&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: 55%;&amp;quot; | DCR Implementation Guide&lt;br /&gt;
!| SDK Documentation&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;9&amp;quot; | {{SmallIcon|SDKIcon.png|alt=SDK}}&lt;br /&gt;
| rowspan=&amp;quot;9&amp;quot; | {{OSIcon|StaticIcon.png|alt=Static Content}}&lt;br /&gt;
| {{OSIcon|macOSIcon.png|alt=iOS}}&lt;br /&gt;
| '''[[DCR Static iOS SDK]]'''&lt;br /&gt;
| [[iOS SDK API Reference]]&lt;br /&gt;
|-&lt;br /&gt;
| {{OSIcon|AndroidIcon.png|alt=Android}}&lt;br /&gt;
| '''[[DCR Static Android SDK]]'''&lt;br /&gt;
| [[Android SDK API Reference]]&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | {{OSIcon|BrowserIcon.png|alt=Browser}}&lt;br /&gt;
| '''[[DCR Static Browser SDK]]'''&lt;br /&gt;
| rowspan=&amp;quot;5&amp;quot; | [[Browser SDK API Reference]]&lt;br /&gt;
|-&lt;br /&gt;
| '''[[DCR Static Lite Browser SDK]]'''&lt;br /&gt;
|-&lt;br /&gt;
|  {{OSIcon|GoogleTagManagerIcon.png|alt=Google Tag Manager}}&lt;br /&gt;
| '''[[DCR Static Google Tag Manager]]'''&lt;br /&gt;
|-&lt;br /&gt;
|  {{OSIcon|FacebookIcon.png|alt=Facebook Instant Articles}}&lt;br /&gt;
| '''[[DCR Static Facebook Instant Articles Browser SDK]]'''&lt;br /&gt;
|-&lt;br /&gt;
|  {{OSIcon|Tealium_Icon.png|alt=Tealium}}&lt;br /&gt;
| '''[[DCR Static Tealium]]'''&lt;br /&gt;
|-&lt;br /&gt;
|  {{OSIcon|AMPIcon.png|alt=Google AMP}}&lt;br /&gt;
| '''[[DCR Static Google AMP Cloud API]]'''&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
|{{OSIcon|BrowserIcon.png|alt=Browser}}&lt;br /&gt;
|'''[[DCR Static Domless SDK]]'''&lt;br /&gt;
|[[Domless SDK API Reference]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Xamarin ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
| colspan=&amp;quot;6&amp;quot; | Xamarin Integration Guides (Xamarin support is part of [[Special:Downloads|Nielsen's AppSDK V8]] and above.)&lt;br /&gt;
|-&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;
!| Implementation Guide&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;8&amp;quot; | {{SmallIcon|SDKIcon.png|alt=SDK}}&lt;br /&gt;
|-&lt;br /&gt;
|  {{OSIcon|VideoIcon.png|alt=Video}}&lt;br /&gt;
| {{OSIcon|APIIcon.png|alt=Xamarin}}&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | '''[[DCR_%26_DTVR_Xamarin_Integration|DCR &amp;amp; DTVR Xamarin Integration]]'''&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Cloud API ==&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;
!| DCR Implementation Guide&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | {{SmallIcon|CloudAPIIcon.png|alt=Cloud API}} &lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; |&lt;br /&gt;
{{OSIcon|VideoIcon.png|alt=Video}}&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
{{OSIcon|StaticIcon.png|alt=Static Content}}&lt;br /&gt;
| {{OSIcon|APIIcon.png|alt=Cloud API}}&lt;br /&gt;
| '''[[DCR Video &amp;amp; Static Cloud API ]]''' &lt;br /&gt;
|-&lt;br /&gt;
| {{OSIcon|APIIcon.png|alt=Cloud API}}&lt;br /&gt;
| '''[[DCR Video &amp;amp; Static Mobile Cloud API ]]'''&lt;br /&gt;
|-&lt;br /&gt;
| {{OSIcon|RokuIcon.png|alt=Roku}}&lt;br /&gt;
| '''[[DCR Video &amp;amp; Static Roku Cloud API]]'''&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Adobe Launch Extensions ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
| colspan=&amp;quot;6&amp;quot; | Leverage Launch by Adobe? The guides below describe how to integrate DCR and DTVR with Nielsen's Adobe Launch extension&lt;br /&gt;
|-&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;
!| Implementation Guide&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;8&amp;quot; | {{SmallIcon|SDKIcon.png|alt=SDK}}&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | '''[[Digital Measurement Onboarding Adobe ]]'''&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 &amp;amp; DTVR iOS Adobe Launch Extension]]'''&lt;br /&gt;
|-&lt;br /&gt;
| {{OSIcon|AndroidIcon.png|alt=Android}}&lt;br /&gt;
| '''[[DCR &amp;amp; DTVR Android Adobe Launch Extension]]'''&lt;br /&gt;
|-&lt;br /&gt;
| {{OSIcon|BrowserIcon.png|alt=Browser}}&lt;br /&gt;
| '''[[DCR &amp;amp; DTVR Browser Adobe Launch Extension]]'''&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== SmartTV Integrations ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
| colspan=&amp;quot;6&amp;quot; | The guides below describe how to integrate DCR and DTVR with Smart tv's&lt;br /&gt;
|-&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;
! | Implementation Guide&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;9&amp;quot; | {{SmallIcon|SDKIcon.png|alt=SDK}}&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | {{OSIcon|VideoIcon.png|alt=Video}}&lt;br /&gt;
| {{OSIcon|BrowserIcon.png|alt=Browser}}&lt;br /&gt;
| '''[[TizenTv]]'''&lt;br /&gt;
|-&lt;br /&gt;
| {{OSIcon|BrowserIcon.png|alt=Browser}}&lt;br /&gt;
| '''[[webOS]]'''&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|{{OSIcon|AndroidIcon.png|alt=Android}}&lt;br /&gt;
|'''[[AndroidTV]]'''&lt;br /&gt;
|&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>AmySockanathan</name></author>
	</entry>
	<entry>
		<id>https://nielsentest.mywikis.net/w/index.php?title=MediaWiki:Privacy&amp;diff=7041</id>
		<title>MediaWiki:Privacy</title>
		<link rel="alternate" type="text/html" href="https://nielsentest.mywikis.net/w/index.php?title=MediaWiki:Privacy&amp;diff=7041"/>
		<updated>2026-05-15T20:47:22Z</updated>

		<summary type="html">&lt;p&gt;AmySockanathan: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Privacy Notice&lt;/div&gt;</summary>
		<author><name>AmySockanathan</name></author>
	</entry>
	<entry>
		<id>https://nielsentest.mywikis.net/w/index.php?title=MediaWiki:Privacypage&amp;diff=7040</id>
		<title>MediaWiki:Privacypage</title>
		<link rel="alternate" type="text/html" href="https://nielsentest.mywikis.net/w/index.php?title=MediaWiki:Privacypage&amp;diff=7040"/>
		<updated>2026-05-15T20:47:03Z</updated>

		<summary type="html">&lt;p&gt;AmySockanathan: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Project:Privacy Notice&lt;/div&gt;</summary>
		<author><name>AmySockanathan</name></author>
	</entry>
	<entry>
		<id>https://nielsentest.mywikis.net/w/index.php?title=MediaWiki:Privacypage&amp;diff=7039</id>
		<title>MediaWiki:Privacypage</title>
		<link rel="alternate" type="text/html" href="https://nielsentest.mywikis.net/w/index.php?title=MediaWiki:Privacypage&amp;diff=7039"/>
		<updated>2026-05-15T20:30:58Z</updated>

		<summary type="html">&lt;p&gt;AmySockanathan: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;!-- Project:Privacy Notice --&amp;gt;&lt;br /&gt;
[https://www.nielsen.com/legal/privacy-principles/website-privacy-statement/ Privacy policy]&lt;/div&gt;</summary>
		<author><name>AmySockanathan</name></author>
	</entry>
	<entry>
		<id>https://nielsentest.mywikis.net/w/index.php?title=MediaWiki:Privacypage&amp;diff=7038</id>
		<title>MediaWiki:Privacypage</title>
		<link rel="alternate" type="text/html" href="https://nielsentest.mywikis.net/w/index.php?title=MediaWiki:Privacypage&amp;diff=7038"/>
		<updated>2026-05-15T20:29:34Z</updated>

		<summary type="html">&lt;p&gt;AmySockanathan: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;!-- Project:Privacy Notice --&amp;gt;&lt;br /&gt;
[https://www.nielsen.com/legal/privacy-principles/website-privacy-statement/ Privacy Notice]&lt;/div&gt;</summary>
		<author><name>AmySockanathan</name></author>
	</entry>
	<entry>
		<id>https://nielsentest.mywikis.net/w/index.php?title=MediaWiki:Privacypage&amp;diff=7037</id>
		<title>MediaWiki:Privacypage</title>
		<link rel="alternate" type="text/html" href="https://nielsentest.mywikis.net/w/index.php?title=MediaWiki:Privacypage&amp;diff=7037"/>
		<updated>2026-05-15T20:28:30Z</updated>

		<summary type="html">&lt;p&gt;AmySockanathan: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;!-- Project:Privacy Notice --&amp;gt;&lt;br /&gt;
[https://www.nielsen.com/legal/privacy-principles/website-privacy-statement/]&lt;/div&gt;</summary>
		<author><name>AmySockanathan</name></author>
	</entry>
	<entry>
		<id>https://nielsentest.mywikis.net/w/index.php?title=MediaWiki:Privacy&amp;diff=7036</id>
		<title>MediaWiki:Privacy</title>
		<link rel="alternate" type="text/html" href="https://nielsentest.mywikis.net/w/index.php?title=MediaWiki:Privacy&amp;diff=7036"/>
		<updated>2026-05-15T20:26:36Z</updated>

		<summary type="html">&lt;p&gt;AmySockanathan: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Privacy policy&lt;/div&gt;</summary>
		<author><name>AmySockanathan</name></author>
	</entry>
	<entry>
		<id>https://nielsentest.mywikis.net/w/index.php?title=MediaWiki:Privacy&amp;diff=7035</id>
		<title>MediaWiki:Privacy</title>
		<link rel="alternate" type="text/html" href="https://nielsentest.mywikis.net/w/index.php?title=MediaWiki:Privacy&amp;diff=7035"/>
		<updated>2026-05-15T20:20:26Z</updated>

		<summary type="html">&lt;p&gt;AmySockanathan: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Privacy Notice&lt;/div&gt;</summary>
		<author><name>AmySockanathan</name></author>
	</entry>
	<entry>
		<id>https://nielsentest.mywikis.net/w/index.php?title=MediaWiki:Privacy&amp;diff=7034</id>
		<title>MediaWiki:Privacy</title>
		<link rel="alternate" type="text/html" href="https://nielsentest.mywikis.net/w/index.php?title=MediaWiki:Privacy&amp;diff=7034"/>
		<updated>2026-05-15T19:46:42Z</updated>

		<summary type="html">&lt;p&gt;AmySockanathan: Link to Privacy Notice&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[https://www.nielsen.com/legal/privacy-principles/website-privacy-statement/ Privacy Notice]&lt;/div&gt;</summary>
		<author><name>AmySockanathan</name></author>
	</entry>
	<entry>
		<id>https://nielsentest.mywikis.net/w/index.php?title=Browser_SDK_Release_Notes&amp;diff=7033</id>
		<title>Browser SDK Release Notes</title>
		<link rel="alternate" type="text/html" href="https://nielsentest.mywikis.net/w/index.php?title=Browser_SDK_Release_Notes&amp;diff=7033"/>
		<updated>2026-05-15T19:35:28Z</updated>

		<summary type="html">&lt;p&gt;AmySockanathan: Add R2 release notes&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Breadcrumb|}} {{Breadcrumb|Digital}} {{CurrentBreadcrumb}}&lt;br /&gt;
[[Category:Digital]]&lt;br /&gt;
__NOTOC__&lt;br /&gt;
&lt;br /&gt;
== Release R2(v6.0.0.748) (05-12-2026) ==&lt;br /&gt;
&lt;br /&gt;
* Fall back to the standard setInterval option if Web Workers are not allowed&lt;br /&gt;
&lt;br /&gt;
== Release R1(v6.0.0.747) (03-04-2026) ==&lt;br /&gt;
&lt;br /&gt;
* Added support for Viewability &amp;amp; Audibility&lt;br /&gt;
* Last DTVR Subminute ping for iOS-Safari browser was not fired through the POST request.&lt;br /&gt;
* Fix for some RTVOD sceanrios&lt;br /&gt;
* Fix to not fire a DTVR Subminute timer ping with the evdata containing 00000 offset when FD channel transitions from a valid CID to null&lt;br /&gt;
&lt;br /&gt;
== Release R1(v6.0.0.734) (07-08-2025) ==&lt;br /&gt;
&lt;br /&gt;
* Support for DTVR Subminute feature&lt;br /&gt;
&lt;br /&gt;
== Release V1(v6.0.110) (05-21-2024) ==&lt;br /&gt;
&lt;br /&gt;
* Suppression of v60/v52/v53 legacy pings&lt;br /&gt;
&lt;br /&gt;
== Release R2(v6.0.0.702) (10-30-2024) ==&lt;br /&gt;
&lt;br /&gt;
* 2nd release of DOMless SDK&lt;br /&gt;
* Support DCR Static&lt;br /&gt;
* Support Debug interface which can be used to view API calls and SDK pings&lt;br /&gt;
* Support caching of pings when network is not available&lt;br /&gt;
&lt;br /&gt;
== Release R1(v6.0.0.692) (07-31-2024) ==&lt;br /&gt;
&lt;br /&gt;
* DOMless SDK Release with support for Amazon, ReactNative and other DOM less platforms&lt;br /&gt;
&lt;br /&gt;
== Release R6(v6.0.0.673) (09-05-2023) ==&lt;br /&gt;
&lt;br /&gt;
* Fix for stream id of stream 2 is populated in the last duration ping of stream 1 when mandatory END is not called&lt;br /&gt;
&lt;br /&gt;
== Release R5(v6.0.0.673) (08-14-2023) (AGF Release) ==&lt;br /&gt;
&lt;br /&gt;
* Fix for stream id of stream 2 is populated in the last duration ping of stream 1 when mandatory END is not called&lt;br /&gt;
&lt;br /&gt;
== Release R4(v6.0.0.672) (08-01-2023) ==&lt;br /&gt;
&lt;br /&gt;
* Viewability build with support for Viewability and Audibility features&lt;br /&gt;
&lt;br /&gt;
== Release R3(v6.0.0.663) (05-30-2023) ==&lt;br /&gt;
&lt;br /&gt;
* Support to measure static on hbbtv with the iFrame fixes.&lt;br /&gt;
&lt;br /&gt;
== Release R2(v.6.0.0.648) (05-03-2023) (AGF Release) ==&lt;br /&gt;
&lt;br /&gt;
* Support to measure DCR static when browser sdk is initialized on parent page while video is played within the iFrame&lt;br /&gt;
* Fix to propagate correct starttm value in postroll content trailing ping&lt;br /&gt;
* Fix the 1st party cookie expiry date&lt;br /&gt;
* Fix first party id time to live parameter (nol_fpid_ttl) override&lt;br /&gt;
* Update the sessionURL in BSDK600 code with FPID parameters&lt;br /&gt;
* SIVT support for DCR &amp;amp; DTVR&lt;br /&gt;
* StaticEnd support for Hybrid App&lt;br /&gt;
&lt;br /&gt;
== Release R1.2(v6.0.0.662) (04-19-2023) ==&lt;br /&gt;
* Support to measure DCR static when browser sdk is initialized on parent page while video is played within the iFrame&lt;br /&gt;
* Support to measure DCR static on a Single Page Application when staticEnd is not called while navigating from one page to another&lt;br /&gt;
&lt;br /&gt;
== Release R1(v6.0.0.648) (03-06-2023) ==&lt;br /&gt;
* SIVT support for DCR &amp;amp; DTVR&lt;br /&gt;
* StaticEnd support for Hybrid App&lt;br /&gt;
&lt;br /&gt;
== Release R4(v6.0.0.623) (05-02-2022) ==&lt;br /&gt;
* Fix the 1st party cookie expiry date&lt;br /&gt;
* Fix first party id time to live parameter (nol_fpid_ttl) override&lt;br /&gt;
* Update the sessionURL in BSDK600 code with FPID parameters&lt;br /&gt;
&lt;br /&gt;
== Release R3(v6.0.0.618) (03-29-2022) ==&lt;br /&gt;
* Fix to measure dcr static while video is in focus and within an iFrame&lt;br /&gt;
* Fix to propagate correct starttm value in postroll content trailing ping&lt;br /&gt;
&lt;br /&gt;
== Release v6.0.0.355 ==&lt;br /&gt;
* Performance improvements through the use of cachable configuration via the Static Queue Snippet.&lt;br /&gt;
* Dynamic Configuration File&lt;br /&gt;
* Session Ping/UAID - A unique identifier of the device which allows for a single facebook ping per session.&lt;br /&gt;
* Support for iOS 12.2&lt;br /&gt;
&lt;br /&gt;
== Release 5.1.0 (Build 2) ==&lt;br /&gt;
*Support for DCR Static Lite Measurement&lt;br /&gt;
*Advanced Dynamic Script Initialization&lt;br /&gt;
*Removal of Configuration file dependency&lt;br /&gt;
&lt;br /&gt;
== Release 5.0.0 (Build 17) ==   &lt;br /&gt;
*Support for Nielsen Digital Content Ratings (DCR) product&lt;br /&gt;
*Support for measurement of static content&lt;br /&gt;
*Support for Ad measurement&lt;br /&gt;
*Support for Facebook Pings&lt;br /&gt;
*Support for multiple instances of the SDK&lt;br /&gt;
*General bug fix and performance improvements&lt;/div&gt;</summary>
		<author><name>AmySockanathan</name></author>
	</entry>
	<entry>
		<id>https://nielsentest.mywikis.net/w/index.php?title=MediaWiki:Privacy&amp;diff=7032</id>
		<title>MediaWiki:Privacy</title>
		<link rel="alternate" type="text/html" href="https://nielsentest.mywikis.net/w/index.php?title=MediaWiki:Privacy&amp;diff=7032"/>
		<updated>2026-05-15T16:16:00Z</updated>

		<summary type="html">&lt;p&gt;AmySockanathan: Change Privacy Policy to Privacy Notice&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Privacy Notice&lt;/div&gt;</summary>
		<author><name>AmySockanathan</name></author>
	</entry>
	<entry>
		<id>https://nielsentest.mywikis.net/w/index.php?title=MediaWiki:Privacy&amp;diff=7031</id>
		<title>MediaWiki:Privacy</title>
		<link rel="alternate" type="text/html" href="https://nielsentest.mywikis.net/w/index.php?title=MediaWiki:Privacy&amp;diff=7031"/>
		<updated>2026-05-15T16:12:28Z</updated>

		<summary type="html">&lt;p&gt;AmySockanathan: Adding link directly to Privacy Notice&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[https://www.nielsen.com/legal/privacy-principles/website-privacy-statement/ Privacy Notice]&lt;/div&gt;</summary>
		<author><name>AmySockanathan</name></author>
	</entry>
	<entry>
		<id>https://nielsentest.mywikis.net/w/index.php?title=MediaWiki:Privacy&amp;diff=7030</id>
		<title>MediaWiki:Privacy</title>
		<link rel="alternate" type="text/html" href="https://nielsentest.mywikis.net/w/index.php?title=MediaWiki:Privacy&amp;diff=7030"/>
		<updated>2026-05-15T16:08:00Z</updated>

		<summary type="html">&lt;p&gt;AmySockanathan: Pulled back the change&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Privacy Notice&lt;/div&gt;</summary>
		<author><name>AmySockanathan</name></author>
	</entry>
	<entry>
		<id>https://nielsentest.mywikis.net/w/index.php?title=MediaWiki:Privacy&amp;diff=7029</id>
		<title>MediaWiki:Privacy</title>
		<link rel="alternate" type="text/html" href="https://nielsentest.mywikis.net/w/index.php?title=MediaWiki:Privacy&amp;diff=7029"/>
		<updated>2026-05-15T16:07:18Z</updated>

		<summary type="html">&lt;p&gt;AmySockanathan: Directly go to the Privacy notice&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[https://www.nielsen.com/legal/privacy-principles/website-privacy-statement/ Privacy Notice]&lt;/div&gt;</summary>
		<author><name>AmySockanathan</name></author>
	</entry>
	<entry>
		<id>https://nielsentest.mywikis.net/w/index.php?title=MediaWiki:Privacypage&amp;diff=7028</id>
		<title>MediaWiki:Privacypage</title>
		<link rel="alternate" type="text/html" href="https://nielsentest.mywikis.net/w/index.php?title=MediaWiki:Privacypage&amp;diff=7028"/>
		<updated>2026-05-14T14:54:28Z</updated>

		<summary type="html">&lt;p&gt;AmySockanathan: Change Project:Privacy policy to Project:Privacy Notice&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Project:Privacy Notice&lt;/div&gt;</summary>
		<author><name>AmySockanathan</name></author>
	</entry>
	<entry>
		<id>https://nielsentest.mywikis.net/w/index.php?title=MediaWiki:Privacy&amp;diff=7027</id>
		<title>MediaWiki:Privacy</title>
		<link rel="alternate" type="text/html" href="https://nielsentest.mywikis.net/w/index.php?title=MediaWiki:Privacy&amp;diff=7027"/>
		<updated>2026-05-14T14:52:45Z</updated>

		<summary type="html">&lt;p&gt;AmySockanathan: Change Privacy Policy to Privacy Notice&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Privacy Notice&lt;/div&gt;</summary>
		<author><name>AmySockanathan</name></author>
	</entry>
	<entry>
		<id>https://nielsentest.mywikis.net/w/index.php?title=Engineering_Client_Portal:Privacy_policy&amp;diff=7026</id>
		<title>Engineering Client Portal:Privacy policy</title>
		<link rel="alternate" type="text/html" href="https://nielsentest.mywikis.net/w/index.php?title=Engineering_Client_Portal:Privacy_policy&amp;diff=7026"/>
		<updated>2026-05-13T19:04:29Z</updated>

		<summary type="html">&lt;p&gt;AmySockanathan: Update the website privacy page&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Please see: https://www.nielsen.com/legal/privacy-principles/website-privacy-statement/&lt;/div&gt;</summary>
		<author><name>AmySockanathan</name></author>
	</entry>
	<entry>
		<id>https://nielsentest.mywikis.net/w/index.php?title=TVOS_SDK_Release_Notes&amp;diff=7011</id>
		<title>TVOS SDK Release Notes</title>
		<link rel="alternate" type="text/html" href="https://nielsentest.mywikis.net/w/index.php?title=TVOS_SDK_Release_Notes&amp;diff=7011"/>
		<updated>2026-03-24T14:14:32Z</updated>

		<summary type="html">&lt;p&gt;AmySockanathan: Update TVOS page with all release notes.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Breadcrumb|}} {{Breadcrumb|Digital}} {{CurrentBreadcrumb}}&lt;br /&gt;
[[Category:Digital]]&lt;br /&gt;
 __NOTOC__ &lt;br /&gt;
== Release 10.2.0.0 (03-24-2026) ==&lt;br /&gt;
&lt;br /&gt;
* iOS Digital Signature Certificate Renewal&lt;br /&gt;
* Fixes for Viewabiity defects&lt;br /&gt;
* Ad length warning - Fixed the ad tracking logic so now, the 300-second warning will only fire if the current ad actually plays for more than 5 minutes, and that error state will no longer bleed over into the next ad.&lt;br /&gt;
* SDK Code Signature fix (Global Flavor only) - The Global direct binary available on the Engineering Portal now correctly includes the SDK code signature for manual integrations.&lt;br /&gt;
&lt;br /&gt;
== Release 10.1.0.0 (10-17-2025) ==&lt;br /&gt;
&lt;br /&gt;
* Support for FPID multi-instance integrations.&lt;br /&gt;
* Support for Flutter cross-platform plugin.&lt;br /&gt;
* Support for Apple's iOS26/tvOS26 Log Visibility Changes.&lt;br /&gt;
* Other bug fixes and enhancements.&lt;br /&gt;
&lt;br /&gt;
== Release 10.0.0.0 (04-04-2025) ==&lt;br /&gt;
&lt;br /&gt;
* Support for DTVR Subminute product.&lt;br /&gt;
* Support for DCR video playhead bridging.&lt;br /&gt;
* Support for VisionOS platform.&lt;br /&gt;
* Change in DemographicID behavior for Chromecast.&lt;br /&gt;
* Other bug fixes and enhancements.&lt;br /&gt;
&lt;br /&gt;
== Release 9.4.0.0 (07-09-2024) ==&lt;br /&gt;
&lt;br /&gt;
* Support for privacy manifest with content tracking domain for Ad flavors.&lt;br /&gt;
* Support for content tracking and no-tracking domains across sdk flavors and products.&lt;br /&gt;
* Other bug fixes and enhancements.&lt;br /&gt;
&lt;br /&gt;
== Release 9.3.0.0 (05-10-2024) ==&lt;br /&gt;
&lt;br /&gt;
* Support for privacy manifest with tracking domain for Ad flavors.&lt;br /&gt;
* Support for capturing user opt-out during initialization.&lt;br /&gt;
* Other bug fixes and enhancements.&lt;br /&gt;
&lt;br /&gt;
== Release 9.2.0.0 (9-27-2023) ==&lt;br /&gt;
*Support for privacy manifest and required reason API introduced in XCode 15.&lt;br /&gt;
*Digitally signed SDK framework per Apple recommendation&lt;br /&gt;
*DCR Static recognizing metadata with changed assetID for new impressions. &lt;br /&gt;
*Limiting ping retries during https failures. &lt;br /&gt;
*Other bug fixes and enhancements. &lt;br /&gt;
&lt;br /&gt;
== Release 9.1.0.0 (3-31-2023) ==&lt;br /&gt;
*DCR Static duration measurement for AppSDK (currently only AGF).&lt;br /&gt;
*Removed use of iOS keychains, started using NSUserDefaults for persistent storage.&lt;br /&gt;
*Viewability: allow enabling by product (DCR, DTVR).&lt;br /&gt;
*Other bug fixes and enhancements.&lt;br /&gt;
&lt;br /&gt;
== Release 9.0.0.0 (10-07-2022) ==&lt;br /&gt;
* Viewability measurement for DTVR, DCR Content and DCR Ad products.&lt;br /&gt;
* Audibility measurement for DTVR, DCR Content and DCR Ad products.&lt;br /&gt;
* SDK built with XCode 14.&lt;br /&gt;
* Other bug fixes and enhancements.&lt;br /&gt;
&lt;br /&gt;
== Release 8.2.0.0 (03-21-2022) ==&lt;br /&gt;
* Adopting Swift language internally, built on a mixed model (Swift+Objective C).&lt;br /&gt;
* Support for Swift markers to help Swift developers.&lt;br /&gt;
* Removed the usage of deprecated iOS network reachability class.&lt;br /&gt;
* Disabled iCloud backup/synchronization of SDK keychain items.&lt;br /&gt;
* Other bug fixes and enhancements.&lt;br /&gt;
&lt;br /&gt;
== Release 8.1.0.0 (06-28-2021) ==&lt;br /&gt;
* Support for XCFramework build distribution.&lt;br /&gt;
* Support for MacOS Catalyst platform framework.&lt;br /&gt;
* Fixed the device classification for MacOS M1 measurement.&lt;br /&gt;
* Support to capture Hashed email and UID.&lt;br /&gt;
* Support to collect SDK diagnostic data.&lt;br /&gt;
* Other bug fixes and enhancements.&lt;br /&gt;
&lt;br /&gt;
== Release 8.0.0.0 (10-05-2020) ==&lt;br /&gt;
* iOS 14 App Transparency Framework support.&lt;br /&gt;
* FPID and VendorID support.&lt;br /&gt;
* Fixed the device classification for iPADOS measurement.&lt;br /&gt;
* Support for Xamarin cross platform framework.&lt;br /&gt;
* Other bug fixes and enhancements.&lt;br /&gt;
&lt;br /&gt;
== Release 7.2.0.0 (05-18-2020) ==&lt;br /&gt;
* DTVR AQH and IVD requirements for End and pause timeout.&lt;br /&gt;
* Support for Hybrid app webview measurement. &lt;br /&gt;
* Support for Hybrid app react native webview measurement. &lt;br /&gt;
* Support for React Native measurement.&lt;br /&gt;
* Other bug fixes and enhancements&lt;br /&gt;
&lt;br /&gt;
== Release 7.1.0.0 (12-09-2019) ==&lt;br /&gt;
* Removed usage of deprecated class UIWebView&lt;br /&gt;
* Offline viewing measurement enhancements&lt;br /&gt;
* Fixed deadlock on SDK shutdown&lt;br /&gt;
* Revisited precedence logic for sfcode parameter&lt;br /&gt;
* Fix for DCR individual ad pings parameters after channel change&lt;br /&gt;
* Using default value for incorrect adModel parameter&lt;br /&gt;
* Defaulting isLive parameter value on channel change&lt;br /&gt;
* Other fixes and enhancements.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Release 7.0.0.0 (09-06-2019) ==&lt;br /&gt;
* Support for CDN based config.&lt;br /&gt;
* Support for Market based EMM UAID pings.&lt;br /&gt;
* Changes required for proper DCR Static measurement in multi-instance/multiple appid's case.&lt;br /&gt;
* Fixes for OTT synchronization issues between iOS and Android platforms.&lt;br /&gt;
* Fixes for EV data parameters in few scenarios.&lt;br /&gt;
* Fixes for DCR Static product behaviour in background app refresh and background fetch scenarios.&lt;br /&gt;
* DCR Ad reporting improvements.&lt;br /&gt;
* Fixes and improvements for the SDK console log messages.&lt;br /&gt;
* Other enhancements and fixes.&lt;br /&gt;
&lt;br /&gt;
== Release 6.2.0.0 (02-04-2019) == &lt;br /&gt;
* Introduced Dynamic framework for SDK.&lt;br /&gt;
* Removal of Location Module from SDK Code.&lt;br /&gt;
* Increased SDK log file size for Debug mode.&lt;br /&gt;
* Removed OTT Airplay/mirroring detection that caused crashes in AVAudioSession class.&lt;br /&gt;
* DCR performance improvements.&lt;br /&gt;
* Fixed the parsing error happening when clientid/vcid provided as empty in metadata.&lt;br /&gt;
* Align AppSDK for FW detection with BSDK for DCR measurement.&lt;br /&gt;
* Other Bug Fixes/Enhancements.&lt;br /&gt;
&lt;br /&gt;
== Release 6.1.0.1 (9-13-2018) ==&lt;br /&gt;
*Nielsen SDK support for Xcode 10 and tvOS 12&lt;br /&gt;
&lt;br /&gt;
== Release 6.0.0.4 (5-24-2018) ==&lt;br /&gt;
*If the SDK build target is set to AGF then SDK will send the hello ping to “eu” and “eu-uat” for debug builds. No changes to the non AGF build the default sfcode will continue to be &amp;quot;sdk&amp;quot; and &amp;quot;cert&amp;quot; for debug build.&lt;br /&gt;
*The C1 parameter (NUID) will now be sent as encrypted DeviceID.&lt;br /&gt;
*New SessionID changes. The sessionID will contain 29 length random characters appended by timestamp.&lt;br /&gt;
*Support for multiple SDK instance without any limit.&lt;br /&gt;
*New log feature for CAT tool to retrieve the API level information from client apps. This ping will contain the eventType, parameters, SDK version, appid etc.&lt;br /&gt;
*Removed Viewability for this release.&lt;br /&gt;
&lt;br /&gt;
== Release 5.1.1.17 (1-23-2017) ==&lt;br /&gt;
*Added &amp;quot;seconds&amp;quot; place to the launch ping&lt;br /&gt;
*Ability to opt-out using &amp;quot;Limit Ad Tracking&amp;quot; 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 (12-14-2016) ==&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 &amp;quot;Limit Ad Tracking&amp;quot; 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.7 (9-13-2016) ==&lt;br /&gt;
*General bug fix and performance improvements&lt;br /&gt;
&lt;br /&gt;
== Release 5.1.1.5 (7-12-2016) ==&lt;br /&gt;
*Includes a sample TVOS application used to assist during integration.&lt;br /&gt;
*Support for TVML based optout pages&lt;br /&gt;
*General bug fix and performance improvements&lt;br /&gt;
&lt;br /&gt;
== Release 5.1.0.7 (6-15-2016) ==&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;
*Support for Pause timeout&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;/div&gt;</summary>
		<author><name>AmySockanathan</name></author>
	</entry>
	<entry>
		<id>https://nielsentest.mywikis.net/w/index.php?title=iOS_SDK_Release_Notes&amp;diff=7010</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=7010"/>
		<updated>2026-03-23T14:25:37Z</updated>

		<summary type="html">&lt;p&gt;AmySockanathan: Changed the release date of 10.2 to 3/24/2026&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Digital]]&lt;br /&gt;
 __NOTOC__&lt;br /&gt;
&lt;br /&gt;
{{Breadcrumb|}} {{Breadcrumb|Digital Downloads}} {{CurrentBreadcrumb}}&lt;br /&gt;
&lt;br /&gt;
== Release 10.2.0.0 (03-24-2026) ==&lt;br /&gt;
*iOS Digital Signature Certificate Renewal&lt;br /&gt;
*Fixes for Viewabiity defects&lt;br /&gt;
*Ad length warning - Fixed the ad tracking logic so now, the 300-second warning will only fire if the current ad actually plays for more than 5 minutes, and that error state will no longer bleed over into the next ad.&lt;br /&gt;
*SDK Code Signature fix (Global Flavor only) - The Global direct binary available on the Engineering Portal now correctly includes the SDK code signature for manual integrations.&lt;br /&gt;
&lt;br /&gt;
== Release 10.1.0.0 (10-17-2025) ==&lt;br /&gt;
*Support for FPID multi-instance integrations.&lt;br /&gt;
*Support for Flutter cross-platform plugin.&lt;br /&gt;
*Support for Apple's iOS26/tvOS26 Log Visibility Changes.&lt;br /&gt;
*Other bug fixes and enhancements.&lt;br /&gt;
&lt;br /&gt;
== Release 10.0.0.0 (04-04-2025) ==&lt;br /&gt;
*Support for DTVR Subminute product.&lt;br /&gt;
*Support for DCR video playhead bridging.&lt;br /&gt;
*Support for VisionOS platform.&lt;br /&gt;
*Change in DemographicID behavior for Chromecast.&lt;br /&gt;
*Other bug fixes and enhancements.&lt;br /&gt;
&lt;br /&gt;
== '''Release 9.4.0.0 (07-09-2024)''' ==&lt;br /&gt;
*Support for privacy manifest with content tracking domain for Ad flavors.&lt;br /&gt;
*Support for content tracking and no-tracking domains across sdk flavors and products.&lt;br /&gt;
*Other bug fixes and enhancements.&lt;br /&gt;
== Release 9.3.0.0 (05-10-2024) ==&lt;br /&gt;
*Support for privacy manifest with tracking domain for Ad flavors.&lt;br /&gt;
*Support for capturing user opt-out during initialization.&lt;br /&gt;
*Other bug fixes and enhancements.&lt;br /&gt;
== Release 9.2.0.0 (9-27-2023) ==&lt;br /&gt;
*Support for privacy manifest and required reason API introduced in XCode 15.&lt;br /&gt;
*Digitally signed SDK framework per Apple recommendation&lt;br /&gt;
*DCR Static recognizing metadata with changed assetID for new impressions. &lt;br /&gt;
*Limiting ping retries during https failures. &lt;br /&gt;
*Other bug fixes and enhancements. &lt;br /&gt;
&lt;br /&gt;
== Release 9.1.0.0 (3-31-2023) ==&lt;br /&gt;
*DCR Static duration measurement for AppSDK (currently only AGF).&lt;br /&gt;
*Removed use of iOS keychains, started using NSUserDefaults for persistent storage.&lt;br /&gt;
*Viewability: allow enabling by product (DCR, DTVR).&lt;br /&gt;
*Other bug fixes and enhancements.&lt;br /&gt;
&lt;br /&gt;
== Release 9.0.0.0 (10-07-2022) ==&lt;br /&gt;
* Viewability measurement for DTVR, DCR Content and DCR Ad products.&lt;br /&gt;
* Audibility measurement for DTVR, DCR Content and DCR Ad products.&lt;br /&gt;
* SDK built with XCode 14.&lt;br /&gt;
* Other bug fixes and enhancements.&lt;br /&gt;
&lt;br /&gt;
== Release 8.2.0.0 (03-21-2022) ==&lt;br /&gt;
* Adopting Swift language internally, built on a mixed model (Swift+Objective C).&lt;br /&gt;
* Support for Swift markers to help Swift developers.&lt;br /&gt;
* Removed the usage of deprecated iOS network reachability class.&lt;br /&gt;
* Disabled iCloud backup/synchronization of SDK keychain items.&lt;br /&gt;
* Other bug fixes and enhancements.&lt;br /&gt;
&lt;br /&gt;
== Release 8.1.0.0 (06-28-2021) ==&lt;br /&gt;
* Support for XCFramework build distribution.&lt;br /&gt;
* Support for MacOS Catalyst platform framework.&lt;br /&gt;
* Fixed the device classification for MacOS M1 measurement.&lt;br /&gt;
* Support to capture Hashed email and UID.&lt;br /&gt;
* Support to collect SDK diagnostic data.&lt;br /&gt;
* Other bug fixes and enhancements.&lt;br /&gt;
&lt;br /&gt;
== Release 8.0.0.0 (10-05-2020) ==&lt;br /&gt;
* iOS 14 App Transparency Framework support.&lt;br /&gt;
* FPID and VendorID support.&lt;br /&gt;
* Fixed the device classification for iPADOS measurement.&lt;br /&gt;
* Support for Xamarin cross platform framework.&lt;br /&gt;
* Other bug fixes and enhancements.&lt;br /&gt;
&lt;br /&gt;
== Release 7.2.0.0 (05-18-2020) ==&lt;br /&gt;
* DTVR AQH and IVD requirements for End and pause timeout.&lt;br /&gt;
* Support for Hybrid app webview measurement. &lt;br /&gt;
* Support for Hybrid app react native webview measurement. &lt;br /&gt;
* Support for React Native measurement.&lt;br /&gt;
* Other bug fixes and enhancements&lt;br /&gt;
&lt;br /&gt;
== Release 7.1.0.0 (12-09-2019) ==&lt;br /&gt;
* Removed usage of deprecated class UIWebView&lt;br /&gt;
* Offline viewing measurement enhancements&lt;br /&gt;
* Fixed deadlock on SDK shutdown&lt;br /&gt;
* Revisited precedence logic for sfcode parameter&lt;br /&gt;
* Fix for DCR individual ad pings parameters after channel change&lt;br /&gt;
* Using default value for incorrect adModel parameter&lt;br /&gt;
* Defaulting isLive parameter value on channel change&lt;br /&gt;
* Other fixes and enhancements.&lt;br /&gt;
&lt;br /&gt;
== Release 7.0.0.0 (09-06-2019) ==&lt;br /&gt;
* Support for CDN based config.&lt;br /&gt;
* Support for Market based EMM UAID pings.&lt;br /&gt;
* Changes required for proper DCR Static measurement in multi-instance/multiple appid's case.&lt;br /&gt;
* Fixes for OTT synchronization issues between iOS and Android platforms.&lt;br /&gt;
* Fixes for EV data parameters in few scenarios.&lt;br /&gt;
* Fixes for DCR Static product behaviour in background app refresh and background fetch scenarios.&lt;br /&gt;
* DCR Ad reporting improvements.&lt;br /&gt;
* Fixes and improvements for the SDK console log messages.&lt;br /&gt;
* Other enhancements and fixes.&lt;br /&gt;
&lt;br /&gt;
== Release 6.2.0.0 (02-04-2019) == &lt;br /&gt;
* Introduced Dynamic framework for SDK.&lt;br /&gt;
* Removal of Location Module from SDK Code.&lt;br /&gt;
* Increased SDK log file size for Debug mode.&lt;br /&gt;
* Removed OTT Airplay/mirroring detection that caused crashes in AVAudioSession class.&lt;br /&gt;
* DCR performance improvements.&lt;br /&gt;
* Fixed the parsing error happening when clientid/vcid provided as empty in metadata.&lt;br /&gt;
* Align AppSDK for FW detection with BSDK for DCR measurement.&lt;br /&gt;
* Other Bug Fixes/Enhancements.&lt;br /&gt;
&lt;br /&gt;
== Release 6.1.0.1 (9-13-2018) ==&lt;br /&gt;
*Support added for Video On Demand in TV Ratings&lt;br /&gt;
*Support for Xcode 10 and iOS 12&lt;br /&gt;
&lt;br /&gt;
== Release 6.0.0.4 (5-24-2018) ==&lt;br /&gt;
*If the SDK build target is set to AGF then SDK will send the hello ping to “eu” and “eu-uat” for debug builds. No changes to the non AGF build the default sfcode will continue to be &amp;quot;sdk&amp;quot; and &amp;quot;cert&amp;quot; for debug build.&lt;br /&gt;
*The C1 parameter (NUID) will now be sent as encrypted DeviceID.&lt;br /&gt;
*New SessionID changes. The sessionID will contain 29 length random characters appended by timestamp.&lt;br /&gt;
*Support for multiple SDK instance without any limit.&lt;br /&gt;
*New log feature for CAT tool to retrieve the API level information from client apps. This ping will contain the eventType, parameters, SDK version, appid etc.&lt;br /&gt;
*Removed Viewability for this release.&lt;br /&gt;
&lt;br /&gt;
== Release 5.1.1.29 (7-31-2017) ==&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 (5-31-2017) ==&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 (5-5-2017) ==&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 (4-3-2017) ==&lt;br /&gt;
*Fix for muting background music apps&lt;br /&gt;
&lt;br /&gt;
== Release 5.1.1.18 (2-3-2017) ==&lt;br /&gt;
*Minor bug fixes and performance improvement&lt;br /&gt;
&lt;br /&gt;
== Release 5.1.1.17 (1-23-2017) ==&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 (12-14-2016) ==&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 (10-18-2016) ==&lt;br /&gt;
*Fixed Linker error duplicate symbols for Reachability notification in iOS.&lt;br /&gt;
&lt;br /&gt;
== Release 5.1.1.7 (9-13-2016) ==&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 (7-12-2016) ==&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 (4-25-2016) ==&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 (6-9-2015) ==&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;br /&gt;
&lt;br /&gt;
== Release 3.2.1.26 (1-10-2015) ==&lt;/div&gt;</summary>
		<author><name>AmySockanathan</name></author>
	</entry>
	<entry>
		<id>https://nielsentest.mywikis.net/w/index.php?title=Android_SDK_Release_Notes&amp;diff=7009</id>
		<title>Android SDK Release Notes</title>
		<link rel="alternate" type="text/html" href="https://nielsentest.mywikis.net/w/index.php?title=Android_SDK_Release_Notes&amp;diff=7009"/>
		<updated>2026-03-23T14:24:50Z</updated>

		<summary type="html">&lt;p&gt;AmySockanathan: Changed release 10.2 date to 3/24/2026&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Digital]]&lt;br /&gt;
 __NOTOC__&lt;br /&gt;
&lt;br /&gt;
{{Breadcrumb|}} {{Breadcrumb|Digital Downloads}} {{CurrentBreadcrumb}}&lt;br /&gt;
== Release 10.2.0.0 (03-24-2026) ==&lt;br /&gt;
*[[Mitigation of Android 15 background]] network access restrictions.&lt;br /&gt;
*Fixed Viewabiity defects.&lt;br /&gt;
*Ad length warning - Fixed the ad tracking logic so now, the 300-second warning will only fire if the current ad actually plays for more than 5 minutes, and that error state will no longer bleed over into the next ad.&lt;br /&gt;
&lt;br /&gt;
== Release 10.1.0.0 (10-17-2025) ==&lt;br /&gt;
*Support for FPID multi-instance integrations.&lt;br /&gt;
*Support for Flutter cross-platform plugin.&lt;br /&gt;
*Other bug fixes and enhancements.&lt;br /&gt;
&lt;br /&gt;
== Release 10.0.0.0 (04-04-2025) ==&lt;br /&gt;
*Support for DTVR Subminute product.&lt;br /&gt;
*Support for DCR video playhead bridging.&lt;br /&gt;
*Support for Ethernet network connection for TV platforms.&lt;br /&gt;
*Change in DemographicID behavior for Chromecast.&lt;br /&gt;
*Other bug fixes and enhancements.&lt;br /&gt;
&lt;br /&gt;
== Release 9.2.0.0 (9-27-2023) ==&lt;br /&gt;
*DCR Static recognizing metadata with changed assetID for new impressions. &lt;br /&gt;
*Limiting ping retries during https failures. &lt;br /&gt;
*Other bug fixes and enhancements.&lt;br /&gt;
&lt;br /&gt;
== Release 9.1.0.0 (3-31-2023) ==&lt;br /&gt;
*DCR Static duration measurement for AppSDK (currently only AGF)&lt;br /&gt;
*Viewability: allow enabling by product (DCR, DTVR)&lt;br /&gt;
*Other bug fixes and enhancements&lt;br /&gt;
&lt;br /&gt;
== Release 9.0.0.0 (10-07-2022) ==&lt;br /&gt;
* Viewability measurement for DTVR, DCR Content and DCR Ad products. &lt;br /&gt;
* Audibility measurement for DTVR, DCR Content and DCR Ad products.&lt;br /&gt;
* Kotlin-Java interoperability implementation in SDK.&lt;br /&gt;
* Other bug fixes and enhancements.&lt;br /&gt;
&lt;br /&gt;
== Release 8.2.0.0 (03-21-2022) ==&lt;br /&gt;
* Support for EMM AGF AdID-less solution.&lt;br /&gt;
* Enabled SDK to capture network availability changes.&lt;br /&gt;
* Removed the usage of deprecated network classes.&lt;br /&gt;
* Other bug fixes and enhancements.&lt;br /&gt;
&lt;br /&gt;
== Release 8.1.0.0 (06-28-2021) ==&lt;br /&gt;
* Support for SDK build variants - AD/NoAD/NoID.&lt;br /&gt;
* Support to indicate ID used for AD build variant - AD ID vs Android ID.&lt;br /&gt;
* Support to capture Hashed email and UID.&lt;br /&gt;
* Support to collect SDK diagnostic data.&lt;br /&gt;
* Other bug fixes and enhancements.&lt;br /&gt;
&lt;br /&gt;
== Release 8.0.0.0 (10-05-2020) ==&lt;br /&gt;
* FPID and VendorID support.&lt;br /&gt;
* Support for Android apps running on ChromeOS.&lt;br /&gt;
* Support for Xamarin cross platform framework.&lt;br /&gt;
* Other bug fixes and enhancements.&lt;br /&gt;
&lt;br /&gt;
== Release 7.2.0.0 (05-18-2020) ==&lt;br /&gt;
* DTVR AQH and IVD requirements for End and pause timeout.&lt;br /&gt;
* Support for Hybrid app webview measurement. &lt;br /&gt;
* Support for Hybrid app react native webview measurement. &lt;br /&gt;
* Support for React Native measurement.&lt;br /&gt;
* Other bug fixes and enhancements&lt;br /&gt;
&lt;br /&gt;
== Release 7.1.0.0 (12-09-2019) ==&lt;br /&gt;
&lt;br /&gt;
* Application background/foreground state auto-detection (AndroidX)&lt;br /&gt;
* Fixed forward rewind evdata containing negative values&lt;br /&gt;
* Offline viewing measurement enhancements&lt;br /&gt;
* Revisited precedence logic for sfcode parameter&lt;br /&gt;
* Using default value for incorrect adModel parameter&lt;br /&gt;
* Defaulting isLive parameter value on channel change&lt;br /&gt;
* Other fixes and enhancements.&lt;br /&gt;
&lt;br /&gt;
== Release 7.0.0.0 (09-06-2019) ==&lt;br /&gt;
&lt;br /&gt;
* Support for CDN based config.&lt;br /&gt;
* Support for Market based EMM UAID pings.&lt;br /&gt;
* Changes required for proper DCR Static measurement in multi-instance/multiple appid's case.&lt;br /&gt;
* Fixes for OTT synchronization issues between iOS and Android platforms.&lt;br /&gt;
* Fixes for EV data parameters in few scenarios.&lt;br /&gt;
* Fixes for DCR Static product behaviour in background app refresh and background fetch scenarios.&lt;br /&gt;
* DCR Ad reporting improvements.&lt;br /&gt;
* Fixes and improvements for the SDK console log messages.&lt;br /&gt;
* Other enhancements and fixes.&lt;br /&gt;
&lt;br /&gt;
== Release 6.2.0.0  (02-04-2019) ==&lt;br /&gt;
* Removal of Location Module from SDK Code.&lt;br /&gt;
* Fixed the getOptoutStatus() api, so that client can call it in main thread.&lt;br /&gt;
* Fixed the parsing error happening when clientid/vcid provided as empty in metadata.&lt;br /&gt;
* Align AppSDK for FW detection with BSDK for DCR measurement.&lt;br /&gt;
* Other enhancements and fixes.&lt;br /&gt;
&lt;br /&gt;
== Release 6.1.0.1 (9-13-2018) ==&lt;br /&gt;
*Support added for Video On Demand in TV Ratings&lt;br /&gt;
*Bug fixes and improvements&lt;br /&gt;
&lt;br /&gt;
== Release 6.0.0.4 (5-24-2018) ==&lt;br /&gt;
*If the SDK build target is set to AGF then SDK will send the hello ping to “eu” and “eu-uat” for debug builds. No changes to the non AGF build the default sfcode will continue to be &amp;quot;sdk&amp;quot; and &amp;quot;cert&amp;quot; for debug build.&lt;br /&gt;
*The C1 parameter (NUID) will now be sent as encrypted DeviceID.&lt;br /&gt;
*New SessionID changes. The sessionID will contain 29 length random characters appended by timestamp.&lt;br /&gt;
*Support for multiple SDK instance without any limit.&lt;br /&gt;
*New log feature for CAT tool to retrieve the API level information from client apps. This ping will contain the eventType, parameters, SDK version, appid etc.&lt;br /&gt;
*Removed Viewability for this release.&lt;br /&gt;
&lt;br /&gt;
== Release 5.1.1.26 (7-31-2017) ==&lt;br /&gt;
*Genre parameter will be a part of DCR pings and the value is 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;
*Fix for last playhead call that is not processed (when there is no time-gap between the last playhead and end call)&lt;br /&gt;
&lt;br /&gt;
== Release 5.1.1.24 (6-2-2017) ==&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 metadata carry over between channels after a channel change&lt;br /&gt;
&lt;br /&gt;
== Release 5.1.1.18 (1-24-2017) ==&lt;br /&gt;
*Ability to opt-out using “Limit Ad Tracking” feature&lt;br /&gt;
*Improved CPU Performance through encryption process change&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.14 (12-10-2016) ==&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;
*Collection of additional device information&lt;br /&gt;
*Opt-out pages based on locale and country&lt;br /&gt;
*Opt-out based on the ‘Limit Ad Tracking’ flag&lt;br /&gt;
*Issue a warning in client developer’s console when an ad is being played for more than 5 minutes&lt;br /&gt;
*Reduced load time of Android SDK, caused due to encryption.&lt;br /&gt;
*Limit the duration reported for App launch&lt;br /&gt;
*Modification to accept non-JSON strings&lt;br /&gt;
*Fixed&lt;br /&gt;
**Incorrect DRM placement ID&lt;br /&gt;
**DRM pings sent in bursts in case of time change&lt;br /&gt;
&lt;br /&gt;
== Release 5.1.1.10 (10-19-2016) ==&lt;br /&gt;
*Fixed an issue where SDK will send a burst of data pings in Android.&lt;br /&gt;
&lt;br /&gt;
== Release 5.1.1.7 (9-1-2016) ==&lt;br /&gt;
*Support for Android N&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.4 (8-1-2016) ==&lt;br /&gt;
*Support for Pause timeout (from 30 minutes to 5 minutes)&lt;br /&gt;
&lt;br /&gt;
== Release 5.1.1.3 (7-7-2016) ==&lt;br /&gt;
*Sending event level (button press data) data to census collections.&lt;br /&gt;
*Changes in OTT when switching from mobile to Chromecast&lt;br /&gt;
*General bug fix and performance improvements&lt;br /&gt;
&lt;br /&gt;
== Release 5.1.0.4 (4-25-2016) ==&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 (6-9-2015) ==&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 Android 6.0 Marshmallow&lt;br /&gt;
*General bug fix and performance improvements&lt;br /&gt;
&lt;br /&gt;
== Release 1.2.3.8 (1-10-2015) ==&lt;/div&gt;</summary>
		<author><name>AmySockanathan</name></author>
	</entry>
	<entry>
		<id>https://nielsentest.mywikis.net/w/index.php?title=Mitigation_of_Android_15_background&amp;diff=6998</id>
		<title>Mitigation of Android 15 background</title>
		<link rel="alternate" type="text/html" href="https://nielsentest.mywikis.net/w/index.php?title=Mitigation_of_Android_15_background&amp;diff=6998"/>
		<updated>2026-03-20T14:49:29Z</updated>

		<summary type="html">&lt;p&gt;AmySockanathan: /* Observation */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Mitigation of Android 15 background network access restrictions==&lt;br /&gt;
===Observation===&lt;br /&gt;
On devices running Android 15 and 16, ping HTTP requests consistently fail while the application is in a background state.&lt;br /&gt;
These failed pings currently undergo five retry attempts, which consistently result in a 404 error response.&lt;br /&gt;
Once the retry limit is reached, the failed requests are purged from the pending database table.&lt;br /&gt;
The OS's aggressive background restrictions prevent the SDK from establishing a stable network handshake.&lt;br /&gt;
&lt;br /&gt;
===Root Cause===&lt;br /&gt;
Below writeup has been taken directly from the official [https://developer.android.com/about/versions/15/behavior-changes-all#background-network-access Android developer documentation] which states that -&lt;br /&gt;
&lt;br /&gt;
“In Android 15, apps that start a network request outside of a valid process lifecycle receive an exception. Typically, an UnknownHostException or other socket-related IOException. Network requests that happen outside of a valid lifecycle are usually due to apps unknowingly continuing a network request even after the app is no longer active.&lt;br /&gt;
&lt;br /&gt;
To mitigate this exception, ensure your network requests are lifecycle aware and cancelled upon leaving a valid process lifecycle by using lifecycle aware components. If it is important that the network request should happen even when the user leaves the application, consider scheduling the network request using WorkManager or continue a user visible task using Foreground Service.”&lt;br /&gt;
&lt;br /&gt;
===Conclusion Of Background Behaviour Changes===&lt;br /&gt;
Starting with Android 15, the system has introduced stricter limitations on background network access! So we have transitioned our background operations to use the WorkManager API, which is now a required dependency. Without the WorkManager library, background network calls may be blocked or fail silently, leading to data loss on devices running Android 15 or later.&lt;br /&gt;
&lt;br /&gt;
===WorkManager Integration (Client Side)===&lt;br /&gt;
Client apps must add the WorkManager library once they have integrated version '''10.2.0.0''' of the AppSDK. Starting with this version, the WorkManager library is a mandatory dependency and missing it will '''fail the AppSDK initialization'''. &lt;br /&gt;
&lt;br /&gt;
The AppSDK will flash the below error message to the console -&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;“AppApi initialize failed! Starting with Android 15, the system has introduced stricter limitations on background network access! So we have transitioned our background operations to use the WorkManager API, which is now a required dependency. Without the WorkManager library, background network calls may be blocked or fail silently, leading to data synchronization issues on newer devices. Please add the androidx.work:work-runtime dependency to your project's build.gradle file“&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
'''Note:''' ''Please add the'' '''androidx.work:work-runtime''' ''dependency to the project's build.gradle file.''&lt;/div&gt;</summary>
		<author><name>AmySockanathan</name></author>
	</entry>
	<entry>
		<id>https://nielsentest.mywikis.net/w/index.php?title=Mitigation_of_Android_15_background&amp;diff=6997</id>
		<title>Mitigation of Android 15 background</title>
		<link rel="alternate" type="text/html" href="https://nielsentest.mywikis.net/w/index.php?title=Mitigation_of_Android_15_background&amp;diff=6997"/>
		<updated>2026-03-20T14:47:30Z</updated>

		<summary type="html">&lt;p&gt;AmySockanathan: /* Observation */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Mitigation of Android 15 background network access restrictions==&lt;br /&gt;
===Observation===&lt;br /&gt;
On devices running Android 15 and 16, ping HTTP requests consistently fail while the application is in a background state.&lt;br /&gt;
&lt;br /&gt;
These failed pings currently undergo five retry attempts, which consistently result in a 404 error response.&lt;br /&gt;
&lt;br /&gt;
Once the retry limit is reached, the failed requests are purged from the pending database table.&lt;br /&gt;
&lt;br /&gt;
The OS's aggressive background restrictions prevent the SDK from establishing a stable network handshake.&lt;br /&gt;
&lt;br /&gt;
===Root Cause===&lt;br /&gt;
Below writeup has been taken directly from the official [https://developer.android.com/about/versions/15/behavior-changes-all#background-network-access Android developer documentation] which states that -&lt;br /&gt;
&lt;br /&gt;
“In Android 15, apps that start a network request outside of a valid process lifecycle receive an exception. Typically, an UnknownHostException or other socket-related IOException. Network requests that happen outside of a valid lifecycle are usually due to apps unknowingly continuing a network request even after the app is no longer active.&lt;br /&gt;
&lt;br /&gt;
To mitigate this exception, ensure your network requests are lifecycle aware and cancelled upon leaving a valid process lifecycle by using lifecycle aware components. If it is important that the network request should happen even when the user leaves the application, consider scheduling the network request using WorkManager or continue a user visible task using Foreground Service.”&lt;br /&gt;
&lt;br /&gt;
===Conclusion Of Background Behaviour Changes===&lt;br /&gt;
Starting with Android 15, the system has introduced stricter limitations on background network access! So we have transitioned our background operations to use the WorkManager API, which is now a required dependency. Without the WorkManager library, background network calls may be blocked or fail silently, leading to data loss on devices running Android 15 or later.&lt;br /&gt;
&lt;br /&gt;
===WorkManager Integration (Client Side)===&lt;br /&gt;
Client apps must add the WorkManager library once they have integrated version '''10.2.0.0''' of the AppSDK. Starting with this version, the WorkManager library is a mandatory dependency and missing it will '''fail the AppSDK initialization'''. &lt;br /&gt;
&lt;br /&gt;
The AppSDK will flash the below error message to the console -&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;“AppApi initialize failed! Starting with Android 15, the system has introduced stricter limitations on background network access! So we have transitioned our background operations to use the WorkManager API, which is now a required dependency. Without the WorkManager library, background network calls may be blocked or fail silently, leading to data synchronization issues on newer devices. Please add the androidx.work:work-runtime dependency to your project's build.gradle file“&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
'''Note:''' ''Please add the'' '''androidx.work:work-runtime''' ''dependency to the project's build.gradle file.''&lt;/div&gt;</summary>
		<author><name>AmySockanathan</name></author>
	</entry>
	<entry>
		<id>https://nielsentest.mywikis.net/w/index.php?title=iOS_SDK_Release_Notes&amp;diff=6996</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=6996"/>
		<updated>2026-03-19T19:41:55Z</updated>

		<summary type="html">&lt;p&gt;AmySockanathan: Add 10.2.0.0 release notes&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Digital]]&lt;br /&gt;
 __NOTOC__&lt;br /&gt;
&lt;br /&gt;
{{Breadcrumb|}} {{Breadcrumb|Digital Downloads}} {{CurrentBreadcrumb}}&lt;br /&gt;
&lt;br /&gt;
== Release 10.2.0.0 (03-23-2026) ==&lt;br /&gt;
*iOS Digital Signature Certificate Renewal&lt;br /&gt;
*Fixes for Viewabiity defects&lt;br /&gt;
*Ad length warning - Fixed the ad tracking logic so now, the 300-second warning will only fire if the current ad actually plays for more than 5 minutes, and that error state will no longer bleed over into the next ad.&lt;br /&gt;
*SDK Code Signature fix (Global Flavor only) - The Global direct binary available on the Engineering Portal now correctly includes the SDK code signature for manual integrations.&lt;br /&gt;
&lt;br /&gt;
== Release 10.1.0.0 (10-17-2025) ==&lt;br /&gt;
*Support for FPID multi-instance integrations.&lt;br /&gt;
*Support for Flutter cross-platform plugin.&lt;br /&gt;
*Support for Apple's iOS26/tvOS26 Log Visibility Changes.&lt;br /&gt;
*Other bug fixes and enhancements.&lt;br /&gt;
&lt;br /&gt;
== Release 10.0.0.0 (04-04-2025) ==&lt;br /&gt;
*Support for DTVR Subminute product.&lt;br /&gt;
*Support for DCR video playhead bridging.&lt;br /&gt;
*Support for VisionOS platform.&lt;br /&gt;
*Change in DemographicID behavior for Chromecast.&lt;br /&gt;
*Other bug fixes and enhancements.&lt;br /&gt;
&lt;br /&gt;
== '''Release 9.4.0.0 (07-09-2024)''' ==&lt;br /&gt;
*Support for privacy manifest with content tracking domain for Ad flavors.&lt;br /&gt;
*Support for content tracking and no-tracking domains across sdk flavors and products.&lt;br /&gt;
*Other bug fixes and enhancements.&lt;br /&gt;
== Release 9.3.0.0 (05-10-2024) ==&lt;br /&gt;
*Support for privacy manifest with tracking domain for Ad flavors.&lt;br /&gt;
*Support for capturing user opt-out during initialization.&lt;br /&gt;
*Other bug fixes and enhancements.&lt;br /&gt;
== Release 9.2.0.0 (9-27-2023) ==&lt;br /&gt;
*Support for privacy manifest and required reason API introduced in XCode 15.&lt;br /&gt;
*Digitally signed SDK framework per Apple recommendation&lt;br /&gt;
*DCR Static recognizing metadata with changed assetID for new impressions. &lt;br /&gt;
*Limiting ping retries during https failures. &lt;br /&gt;
*Other bug fixes and enhancements. &lt;br /&gt;
&lt;br /&gt;
== Release 9.1.0.0 (3-31-2023) ==&lt;br /&gt;
*DCR Static duration measurement for AppSDK (currently only AGF).&lt;br /&gt;
*Removed use of iOS keychains, started using NSUserDefaults for persistent storage.&lt;br /&gt;
*Viewability: allow enabling by product (DCR, DTVR).&lt;br /&gt;
*Other bug fixes and enhancements.&lt;br /&gt;
&lt;br /&gt;
== Release 9.0.0.0 (10-07-2022) ==&lt;br /&gt;
* Viewability measurement for DTVR, DCR Content and DCR Ad products.&lt;br /&gt;
* Audibility measurement for DTVR, DCR Content and DCR Ad products.&lt;br /&gt;
* SDK built with XCode 14.&lt;br /&gt;
* Other bug fixes and enhancements.&lt;br /&gt;
&lt;br /&gt;
== Release 8.2.0.0 (03-21-2022) ==&lt;br /&gt;
* Adopting Swift language internally, built on a mixed model (Swift+Objective C).&lt;br /&gt;
* Support for Swift markers to help Swift developers.&lt;br /&gt;
* Removed the usage of deprecated iOS network reachability class.&lt;br /&gt;
* Disabled iCloud backup/synchronization of SDK keychain items.&lt;br /&gt;
* Other bug fixes and enhancements.&lt;br /&gt;
&lt;br /&gt;
== Release 8.1.0.0 (06-28-2021) ==&lt;br /&gt;
* Support for XCFramework build distribution.&lt;br /&gt;
* Support for MacOS Catalyst platform framework.&lt;br /&gt;
* Fixed the device classification for MacOS M1 measurement.&lt;br /&gt;
* Support to capture Hashed email and UID.&lt;br /&gt;
* Support to collect SDK diagnostic data.&lt;br /&gt;
* Other bug fixes and enhancements.&lt;br /&gt;
&lt;br /&gt;
== Release 8.0.0.0 (10-05-2020) ==&lt;br /&gt;
* iOS 14 App Transparency Framework support.&lt;br /&gt;
* FPID and VendorID support.&lt;br /&gt;
* Fixed the device classification for iPADOS measurement.&lt;br /&gt;
* Support for Xamarin cross platform framework.&lt;br /&gt;
* Other bug fixes and enhancements.&lt;br /&gt;
&lt;br /&gt;
== Release 7.2.0.0 (05-18-2020) ==&lt;br /&gt;
* DTVR AQH and IVD requirements for End and pause timeout.&lt;br /&gt;
* Support for Hybrid app webview measurement. &lt;br /&gt;
* Support for Hybrid app react native webview measurement. &lt;br /&gt;
* Support for React Native measurement.&lt;br /&gt;
* Other bug fixes and enhancements&lt;br /&gt;
&lt;br /&gt;
== Release 7.1.0.0 (12-09-2019) ==&lt;br /&gt;
* Removed usage of deprecated class UIWebView&lt;br /&gt;
* Offline viewing measurement enhancements&lt;br /&gt;
* Fixed deadlock on SDK shutdown&lt;br /&gt;
* Revisited precedence logic for sfcode parameter&lt;br /&gt;
* Fix for DCR individual ad pings parameters after channel change&lt;br /&gt;
* Using default value for incorrect adModel parameter&lt;br /&gt;
* Defaulting isLive parameter value on channel change&lt;br /&gt;
* Other fixes and enhancements.&lt;br /&gt;
&lt;br /&gt;
== Release 7.0.0.0 (09-06-2019) ==&lt;br /&gt;
* Support for CDN based config.&lt;br /&gt;
* Support for Market based EMM UAID pings.&lt;br /&gt;
* Changes required for proper DCR Static measurement in multi-instance/multiple appid's case.&lt;br /&gt;
* Fixes for OTT synchronization issues between iOS and Android platforms.&lt;br /&gt;
* Fixes for EV data parameters in few scenarios.&lt;br /&gt;
* Fixes for DCR Static product behaviour in background app refresh and background fetch scenarios.&lt;br /&gt;
* DCR Ad reporting improvements.&lt;br /&gt;
* Fixes and improvements for the SDK console log messages.&lt;br /&gt;
* Other enhancements and fixes.&lt;br /&gt;
&lt;br /&gt;
== Release 6.2.0.0 (02-04-2019) == &lt;br /&gt;
* Introduced Dynamic framework for SDK.&lt;br /&gt;
* Removal of Location Module from SDK Code.&lt;br /&gt;
* Increased SDK log file size for Debug mode.&lt;br /&gt;
* Removed OTT Airplay/mirroring detection that caused crashes in AVAudioSession class.&lt;br /&gt;
* DCR performance improvements.&lt;br /&gt;
* Fixed the parsing error happening when clientid/vcid provided as empty in metadata.&lt;br /&gt;
* Align AppSDK for FW detection with BSDK for DCR measurement.&lt;br /&gt;
* Other Bug Fixes/Enhancements.&lt;br /&gt;
&lt;br /&gt;
== Release 6.1.0.1 (9-13-2018) ==&lt;br /&gt;
*Support added for Video On Demand in TV Ratings&lt;br /&gt;
*Support for Xcode 10 and iOS 12&lt;br /&gt;
&lt;br /&gt;
== Release 6.0.0.4 (5-24-2018) ==&lt;br /&gt;
*If the SDK build target is set to AGF then SDK will send the hello ping to “eu” and “eu-uat” for debug builds. No changes to the non AGF build the default sfcode will continue to be &amp;quot;sdk&amp;quot; and &amp;quot;cert&amp;quot; for debug build.&lt;br /&gt;
*The C1 parameter (NUID) will now be sent as encrypted DeviceID.&lt;br /&gt;
*New SessionID changes. The sessionID will contain 29 length random characters appended by timestamp.&lt;br /&gt;
*Support for multiple SDK instance without any limit.&lt;br /&gt;
*New log feature for CAT tool to retrieve the API level information from client apps. This ping will contain the eventType, parameters, SDK version, appid etc.&lt;br /&gt;
*Removed Viewability for this release.&lt;br /&gt;
&lt;br /&gt;
== Release 5.1.1.29 (7-31-2017) ==&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 (5-31-2017) ==&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 (5-5-2017) ==&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 (4-3-2017) ==&lt;br /&gt;
*Fix for muting background music apps&lt;br /&gt;
&lt;br /&gt;
== Release 5.1.1.18 (2-3-2017) ==&lt;br /&gt;
*Minor bug fixes and performance improvement&lt;br /&gt;
&lt;br /&gt;
== Release 5.1.1.17 (1-23-2017) ==&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 (12-14-2016) ==&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 (10-18-2016) ==&lt;br /&gt;
*Fixed Linker error duplicate symbols for Reachability notification in iOS.&lt;br /&gt;
&lt;br /&gt;
== Release 5.1.1.7 (9-13-2016) ==&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 (7-12-2016) ==&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 (4-25-2016) ==&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 (6-9-2015) ==&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;br /&gt;
&lt;br /&gt;
== Release 3.2.1.26 (1-10-2015) ==&lt;/div&gt;</summary>
		<author><name>AmySockanathan</name></author>
	</entry>
	<entry>
		<id>https://nielsentest.mywikis.net/w/index.php?title=Mitigation_of_Android_15_background&amp;diff=6995</id>
		<title>Mitigation of Android 15 background</title>
		<link rel="alternate" type="text/html" href="https://nielsentest.mywikis.net/w/index.php?title=Mitigation_of_Android_15_background&amp;diff=6995"/>
		<updated>2026-03-19T19:36:40Z</updated>

		<summary type="html">&lt;p&gt;AmySockanathan: /* The Root Cause */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Mitigation of Android 15 background network access restrictions==&lt;br /&gt;
===Observation===&lt;br /&gt;
 On devices running Android 15 and 16, ping HTTP requests consistently fail while the application is in a background state.&lt;br /&gt;
&lt;br /&gt;
These failed pings currently undergo five retry attempts, which consistently result in a 404 error response.&lt;br /&gt;
&lt;br /&gt;
Once the retry limit is reached, the failed requests are purged from the pending database table.&lt;br /&gt;
&lt;br /&gt;
 The OS's aggressive background restrictions prevent the SDK from establishing a stable network handshake.&lt;br /&gt;
&lt;br /&gt;
===Root Cause===&lt;br /&gt;
Below writeup has been taken directly from the official [https://developer.android.com/about/versions/15/behavior-changes-all#background-network-access Android developer documentation] which states that -&lt;br /&gt;
&lt;br /&gt;
“In Android 15, apps that start a network request outside of a valid process lifecycle receive an exception. Typically, an UnknownHostException or other socket-related IOException. Network requests that happen outside of a valid lifecycle are usually due to apps unknowingly continuing a network request even after the app is no longer active.&lt;br /&gt;
&lt;br /&gt;
To mitigate this exception, ensure your network requests are lifecycle aware and cancelled upon leaving a valid process lifecycle by using lifecycle aware components. If it is important that the network request should happen even when the user leaves the application, consider scheduling the network request using WorkManager or continue a user visible task using Foreground Service.”&lt;br /&gt;
&lt;br /&gt;
===Conclusion Of Background Behaviour Changes===&lt;br /&gt;
Starting with Android 15, the system has introduced stricter limitations on background network access! So we have transitioned our background operations to use the WorkManager API, which is now a required dependency. Without the WorkManager library, background network calls may be blocked or fail silently, leading to data loss on devices running Android 15 or later.&lt;br /&gt;
&lt;br /&gt;
===WorkManager Integration (Client Side)===&lt;br /&gt;
Client apps must add the WorkManager library once they have integrated version '''10.2.0.0''' of the AppSDK. Starting with this version, the WorkManager library is a mandatory dependency and missing it will '''fail the AppSDK initialization'''. &lt;br /&gt;
&lt;br /&gt;
The AppSDK will flash the below error message to the console -&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;“AppApi initialize failed! Starting with Android 15, the system has introduced stricter limitations on background network access! So we have transitioned our background operations to use the WorkManager API, which is now a required dependency. Without the WorkManager library, background network calls may be blocked or fail silently, leading to data synchronization issues on newer devices. Please add the androidx.work:work-runtime dependency to your project's build.gradle file“&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
'''Note:''' ''Please add the'' '''androidx.work:work-runtime''' ''dependency to the project's build.gradle file.''&lt;/div&gt;</summary>
		<author><name>AmySockanathan</name></author>
	</entry>
	<entry>
		<id>https://nielsentest.mywikis.net/w/index.php?title=Mitigation_of_Android_15_background&amp;diff=6994</id>
		<title>Mitigation of Android 15 background</title>
		<link rel="alternate" type="text/html" href="https://nielsentest.mywikis.net/w/index.php?title=Mitigation_of_Android_15_background&amp;diff=6994"/>
		<updated>2026-03-19T19:35:49Z</updated>

		<summary type="html">&lt;p&gt;AmySockanathan: Create a new page for &amp;quot;Mitigation of Android 15 background&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Mitigation of Android 15 background network access restrictions==&lt;br /&gt;
===Observation===&lt;br /&gt;
 On devices running Android 15 and 16, ping HTTP requests consistently fail while the application is in a background state.&lt;br /&gt;
&lt;br /&gt;
These failed pings currently undergo five retry attempts, which consistently result in a 404 error response.&lt;br /&gt;
&lt;br /&gt;
Once the retry limit is reached, the failed requests are purged from the pending database table.&lt;br /&gt;
&lt;br /&gt;
 The OS's aggressive background restrictions prevent the SDK from establishing a stable network handshake.&lt;br /&gt;
&lt;br /&gt;
===The Root Cause===&lt;br /&gt;
Below writeup has been taken directly from the official [https://developer.android.com/about/versions/15/behavior-changes-all#background-network-access Android developer documentation] which states that -&lt;br /&gt;
&lt;br /&gt;
“In Android 15, apps that start a network request outside of a valid process lifecycle receive an exception. Typically, an UnknownHostException or other socket-related IOException. Network requests that happen outside of a valid lifecycle are usually due to apps unknowingly continuing a network request even after the app is no longer active.&lt;br /&gt;
&lt;br /&gt;
To mitigate this exception, ensure your network requests are lifecycle aware and cancelled upon leaving a valid process lifecycle by using lifecycle aware components. If it is important that the network request should happen even when the user leaves the application, consider scheduling the network request using WorkManager or continue a user visible task using Foreground Service.”&lt;br /&gt;
&lt;br /&gt;
===Conclusion Of Background Behaviour Changes===&lt;br /&gt;
Starting with Android 15, the system has introduced stricter limitations on background network access! So we have transitioned our background operations to use the WorkManager API, which is now a required dependency. Without the WorkManager library, background network calls may be blocked or fail silently, leading to data loss on devices running Android 15 or later.&lt;br /&gt;
&lt;br /&gt;
===WorkManager Integration (Client Side)===&lt;br /&gt;
Client apps must add the WorkManager library once they have integrated version '''10.2.0.0''' of the AppSDK. Starting with this version, the WorkManager library is a mandatory dependency and missing it will '''fail the AppSDK initialization'''. &lt;br /&gt;
&lt;br /&gt;
The AppSDK will flash the below error message to the console -&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;“AppApi initialize failed! Starting with Android 15, the system has introduced stricter limitations on background network access! So we have transitioned our background operations to use the WorkManager API, which is now a required dependency. Without the WorkManager library, background network calls may be blocked or fail silently, leading to data synchronization issues on newer devices. Please add the androidx.work:work-runtime dependency to your project's build.gradle file“&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
'''Note:''' ''Please add the'' '''androidx.work:work-runtime''' ''dependency to the project's build.gradle file.''&lt;/div&gt;</summary>
		<author><name>AmySockanathan</name></author>
	</entry>
	<entry>
		<id>https://nielsentest.mywikis.net/w/index.php?title=Android_SDK_Release_Notes&amp;diff=6993</id>
		<title>Android SDK Release Notes</title>
		<link rel="alternate" type="text/html" href="https://nielsentest.mywikis.net/w/index.php?title=Android_SDK_Release_Notes&amp;diff=6993"/>
		<updated>2026-03-19T19:21:06Z</updated>

		<summary type="html">&lt;p&gt;AmySockanathan: Add the link to new page for &amp;quot;mitigation of Android 15 background issue&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Digital]]&lt;br /&gt;
 __NOTOC__&lt;br /&gt;
&lt;br /&gt;
{{Breadcrumb|}} {{Breadcrumb|Digital Downloads}} {{CurrentBreadcrumb}}&lt;br /&gt;
== Release 10.2.0.0 (03-23-2026) ==&lt;br /&gt;
*[[Mitigation of Android 15 background]] network access restrictions.&lt;br /&gt;
*Fixed Viewabiity defects.&lt;br /&gt;
*Ad length warning - Fixed the ad tracking logic so now, the 300-second warning will only fire if the current ad actually plays for more than 5 minutes, and that error state will no longer bleed over into the next ad.&lt;br /&gt;
&lt;br /&gt;
== Release 10.1.0.0 (10-17-2025) ==&lt;br /&gt;
*Support for FPID multi-instance integrations.&lt;br /&gt;
*Support for Flutter cross-platform plugin.&lt;br /&gt;
*Other bug fixes and enhancements.&lt;br /&gt;
&lt;br /&gt;
== Release 10.0.0.0 (04-04-2025) ==&lt;br /&gt;
*Support for DTVR Subminute product.&lt;br /&gt;
*Support for DCR video playhead bridging.&lt;br /&gt;
*Support for Ethernet network connection for TV platforms.&lt;br /&gt;
*Change in DemographicID behavior for Chromecast.&lt;br /&gt;
*Other bug fixes and enhancements.&lt;br /&gt;
&lt;br /&gt;
== Release 9.2.0.0 (9-27-2023) ==&lt;br /&gt;
*DCR Static recognizing metadata with changed assetID for new impressions. &lt;br /&gt;
*Limiting ping retries during https failures. &lt;br /&gt;
*Other bug fixes and enhancements.&lt;br /&gt;
&lt;br /&gt;
== Release 9.1.0.0 (3-31-2023) ==&lt;br /&gt;
*DCR Static duration measurement for AppSDK (currently only AGF)&lt;br /&gt;
*Viewability: allow enabling by product (DCR, DTVR)&lt;br /&gt;
*Other bug fixes and enhancements&lt;br /&gt;
&lt;br /&gt;
== Release 9.0.0.0 (10-07-2022) ==&lt;br /&gt;
* Viewability measurement for DTVR, DCR Content and DCR Ad products. &lt;br /&gt;
* Audibility measurement for DTVR, DCR Content and DCR Ad products.&lt;br /&gt;
* Kotlin-Java interoperability implementation in SDK.&lt;br /&gt;
* Other bug fixes and enhancements.&lt;br /&gt;
&lt;br /&gt;
== Release 8.2.0.0 (03-21-2022) ==&lt;br /&gt;
* Support for EMM AGF AdID-less solution.&lt;br /&gt;
* Enabled SDK to capture network availability changes.&lt;br /&gt;
* Removed the usage of deprecated network classes.&lt;br /&gt;
* Other bug fixes and enhancements.&lt;br /&gt;
&lt;br /&gt;
== Release 8.1.0.0 (06-28-2021) ==&lt;br /&gt;
* Support for SDK build variants - AD/NoAD/NoID.&lt;br /&gt;
* Support to indicate ID used for AD build variant - AD ID vs Android ID.&lt;br /&gt;
* Support to capture Hashed email and UID.&lt;br /&gt;
* Support to collect SDK diagnostic data.&lt;br /&gt;
* Other bug fixes and enhancements.&lt;br /&gt;
&lt;br /&gt;
== Release 8.0.0.0 (10-05-2020) ==&lt;br /&gt;
* FPID and VendorID support.&lt;br /&gt;
* Support for Android apps running on ChromeOS.&lt;br /&gt;
* Support for Xamarin cross platform framework.&lt;br /&gt;
* Other bug fixes and enhancements.&lt;br /&gt;
&lt;br /&gt;
== Release 7.2.0.0 (05-18-2020) ==&lt;br /&gt;
* DTVR AQH and IVD requirements for End and pause timeout.&lt;br /&gt;
* Support for Hybrid app webview measurement. &lt;br /&gt;
* Support for Hybrid app react native webview measurement. &lt;br /&gt;
* Support for React Native measurement.&lt;br /&gt;
* Other bug fixes and enhancements&lt;br /&gt;
&lt;br /&gt;
== Release 7.1.0.0 (12-09-2019) ==&lt;br /&gt;
&lt;br /&gt;
* Application background/foreground state auto-detection (AndroidX)&lt;br /&gt;
* Fixed forward rewind evdata containing negative values&lt;br /&gt;
* Offline viewing measurement enhancements&lt;br /&gt;
* Revisited precedence logic for sfcode parameter&lt;br /&gt;
* Using default value for incorrect adModel parameter&lt;br /&gt;
* Defaulting isLive parameter value on channel change&lt;br /&gt;
* Other fixes and enhancements.&lt;br /&gt;
&lt;br /&gt;
== Release 7.0.0.0 (09-06-2019) ==&lt;br /&gt;
&lt;br /&gt;
* Support for CDN based config.&lt;br /&gt;
* Support for Market based EMM UAID pings.&lt;br /&gt;
* Changes required for proper DCR Static measurement in multi-instance/multiple appid's case.&lt;br /&gt;
* Fixes for OTT synchronization issues between iOS and Android platforms.&lt;br /&gt;
* Fixes for EV data parameters in few scenarios.&lt;br /&gt;
* Fixes for DCR Static product behaviour in background app refresh and background fetch scenarios.&lt;br /&gt;
* DCR Ad reporting improvements.&lt;br /&gt;
* Fixes and improvements for the SDK console log messages.&lt;br /&gt;
* Other enhancements and fixes.&lt;br /&gt;
&lt;br /&gt;
== Release 6.2.0.0  (02-04-2019) ==&lt;br /&gt;
* Removal of Location Module from SDK Code.&lt;br /&gt;
* Fixed the getOptoutStatus() api, so that client can call it in main thread.&lt;br /&gt;
* Fixed the parsing error happening when clientid/vcid provided as empty in metadata.&lt;br /&gt;
* Align AppSDK for FW detection with BSDK for DCR measurement.&lt;br /&gt;
* Other enhancements and fixes.&lt;br /&gt;
&lt;br /&gt;
== Release 6.1.0.1 (9-13-2018) ==&lt;br /&gt;
*Support added for Video On Demand in TV Ratings&lt;br /&gt;
*Bug fixes and improvements&lt;br /&gt;
&lt;br /&gt;
== Release 6.0.0.4 (5-24-2018) ==&lt;br /&gt;
*If the SDK build target is set to AGF then SDK will send the hello ping to “eu” and “eu-uat” for debug builds. No changes to the non AGF build the default sfcode will continue to be &amp;quot;sdk&amp;quot; and &amp;quot;cert&amp;quot; for debug build.&lt;br /&gt;
*The C1 parameter (NUID) will now be sent as encrypted DeviceID.&lt;br /&gt;
*New SessionID changes. The sessionID will contain 29 length random characters appended by timestamp.&lt;br /&gt;
*Support for multiple SDK instance without any limit.&lt;br /&gt;
*New log feature for CAT tool to retrieve the API level information from client apps. This ping will contain the eventType, parameters, SDK version, appid etc.&lt;br /&gt;
*Removed Viewability for this release.&lt;br /&gt;
&lt;br /&gt;
== Release 5.1.1.26 (7-31-2017) ==&lt;br /&gt;
*Genre parameter will be a part of DCR pings and the value is 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;
*Fix for last playhead call that is not processed (when there is no time-gap between the last playhead and end call)&lt;br /&gt;
&lt;br /&gt;
== Release 5.1.1.24 (6-2-2017) ==&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 metadata carry over between channels after a channel change&lt;br /&gt;
&lt;br /&gt;
== Release 5.1.1.18 (1-24-2017) ==&lt;br /&gt;
*Ability to opt-out using “Limit Ad Tracking” feature&lt;br /&gt;
*Improved CPU Performance through encryption process change&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.14 (12-10-2016) ==&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;
*Collection of additional device information&lt;br /&gt;
*Opt-out pages based on locale and country&lt;br /&gt;
*Opt-out based on the ‘Limit Ad Tracking’ flag&lt;br /&gt;
*Issue a warning in client developer’s console when an ad is being played for more than 5 minutes&lt;br /&gt;
*Reduced load time of Android SDK, caused due to encryption.&lt;br /&gt;
*Limit the duration reported for App launch&lt;br /&gt;
*Modification to accept non-JSON strings&lt;br /&gt;
*Fixed&lt;br /&gt;
**Incorrect DRM placement ID&lt;br /&gt;
**DRM pings sent in bursts in case of time change&lt;br /&gt;
&lt;br /&gt;
== Release 5.1.1.10 (10-19-2016) ==&lt;br /&gt;
*Fixed an issue where SDK will send a burst of data pings in Android.&lt;br /&gt;
&lt;br /&gt;
== Release 5.1.1.7 (9-1-2016) ==&lt;br /&gt;
*Support for Android N&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.4 (8-1-2016) ==&lt;br /&gt;
*Support for Pause timeout (from 30 minutes to 5 minutes)&lt;br /&gt;
&lt;br /&gt;
== Release 5.1.1.3 (7-7-2016) ==&lt;br /&gt;
*Sending event level (button press data) data to census collections.&lt;br /&gt;
*Changes in OTT when switching from mobile to Chromecast&lt;br /&gt;
*General bug fix and performance improvements&lt;br /&gt;
&lt;br /&gt;
== Release 5.1.0.4 (4-25-2016) ==&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 (6-9-2015) ==&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 Android 6.0 Marshmallow&lt;br /&gt;
*General bug fix and performance improvements&lt;br /&gt;
&lt;br /&gt;
== Release 1.2.3.8 (1-10-2015) ==&lt;/div&gt;</summary>
		<author><name>AmySockanathan</name></author>
	</entry>
	<entry>
		<id>https://nielsentest.mywikis.net/w/index.php?title=Android_SDK_Release_Notes&amp;diff=6992</id>
		<title>Android SDK Release Notes</title>
		<link rel="alternate" type="text/html" href="https://nielsentest.mywikis.net/w/index.php?title=Android_SDK_Release_Notes&amp;diff=6992"/>
		<updated>2026-03-19T19:09:44Z</updated>

		<summary type="html">&lt;p&gt;AmySockanathan: Android 10.2.0. release notes&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Digital]]&lt;br /&gt;
 __NOTOC__&lt;br /&gt;
&lt;br /&gt;
{{Breadcrumb|}} {{Breadcrumb|Digital Downloads}} {{CurrentBreadcrumb}}&lt;br /&gt;
== Release 10.2.0.0 (03-23-2026) ==&lt;br /&gt;
*Mitigation of Android 15 background network access restrictions.&lt;br /&gt;
*Fixed Viewabiity defects.&lt;br /&gt;
*Ad length warning - Fixed the ad tracking logic so now, the 300-second warning will only fire if the current ad actually plays for more than 5 minutes, and that error state will no longer bleed over into the next ad.&lt;br /&gt;
&lt;br /&gt;
== Release 10.1.0.0 (10-17-2025) ==&lt;br /&gt;
*Support for FPID multi-instance integrations.&lt;br /&gt;
*Support for Flutter cross-platform plugin.&lt;br /&gt;
*Other bug fixes and enhancements.&lt;br /&gt;
&lt;br /&gt;
== Release 10.0.0.0 (04-04-2025) ==&lt;br /&gt;
*Support for DTVR Subminute product.&lt;br /&gt;
*Support for DCR video playhead bridging.&lt;br /&gt;
*Support for Ethernet network connection for TV platforms.&lt;br /&gt;
*Change in DemographicID behavior for Chromecast.&lt;br /&gt;
*Other bug fixes and enhancements.&lt;br /&gt;
&lt;br /&gt;
== Release 9.2.0.0 (9-27-2023) ==&lt;br /&gt;
*DCR Static recognizing metadata with changed assetID for new impressions. &lt;br /&gt;
*Limiting ping retries during https failures. &lt;br /&gt;
*Other bug fixes and enhancements.&lt;br /&gt;
&lt;br /&gt;
== Release 9.1.0.0 (3-31-2023) ==&lt;br /&gt;
*DCR Static duration measurement for AppSDK (currently only AGF)&lt;br /&gt;
*Viewability: allow enabling by product (DCR, DTVR)&lt;br /&gt;
*Other bug fixes and enhancements&lt;br /&gt;
&lt;br /&gt;
== Release 9.0.0.0 (10-07-2022) ==&lt;br /&gt;
* Viewability measurement for DTVR, DCR Content and DCR Ad products. &lt;br /&gt;
* Audibility measurement for DTVR, DCR Content and DCR Ad products.&lt;br /&gt;
* Kotlin-Java interoperability implementation in SDK.&lt;br /&gt;
* Other bug fixes and enhancements.&lt;br /&gt;
&lt;br /&gt;
== Release 8.2.0.0 (03-21-2022) ==&lt;br /&gt;
* Support for EMM AGF AdID-less solution.&lt;br /&gt;
* Enabled SDK to capture network availability changes.&lt;br /&gt;
* Removed the usage of deprecated network classes.&lt;br /&gt;
* Other bug fixes and enhancements.&lt;br /&gt;
&lt;br /&gt;
== Release 8.1.0.0 (06-28-2021) ==&lt;br /&gt;
* Support for SDK build variants - AD/NoAD/NoID.&lt;br /&gt;
* Support to indicate ID used for AD build variant - AD ID vs Android ID.&lt;br /&gt;
* Support to capture Hashed email and UID.&lt;br /&gt;
* Support to collect SDK diagnostic data.&lt;br /&gt;
* Other bug fixes and enhancements.&lt;br /&gt;
&lt;br /&gt;
== Release 8.0.0.0 (10-05-2020) ==&lt;br /&gt;
* FPID and VendorID support.&lt;br /&gt;
* Support for Android apps running on ChromeOS.&lt;br /&gt;
* Support for Xamarin cross platform framework.&lt;br /&gt;
* Other bug fixes and enhancements.&lt;br /&gt;
&lt;br /&gt;
== Release 7.2.0.0 (05-18-2020) ==&lt;br /&gt;
* DTVR AQH and IVD requirements for End and pause timeout.&lt;br /&gt;
* Support for Hybrid app webview measurement. &lt;br /&gt;
* Support for Hybrid app react native webview measurement. &lt;br /&gt;
* Support for React Native measurement.&lt;br /&gt;
* Other bug fixes and enhancements&lt;br /&gt;
&lt;br /&gt;
== Release 7.1.0.0 (12-09-2019) ==&lt;br /&gt;
&lt;br /&gt;
* Application background/foreground state auto-detection (AndroidX)&lt;br /&gt;
* Fixed forward rewind evdata containing negative values&lt;br /&gt;
* Offline viewing measurement enhancements&lt;br /&gt;
* Revisited precedence logic for sfcode parameter&lt;br /&gt;
* Using default value for incorrect adModel parameter&lt;br /&gt;
* Defaulting isLive parameter value on channel change&lt;br /&gt;
* Other fixes and enhancements.&lt;br /&gt;
&lt;br /&gt;
== Release 7.0.0.0 (09-06-2019) ==&lt;br /&gt;
&lt;br /&gt;
* Support for CDN based config.&lt;br /&gt;
* Support for Market based EMM UAID pings.&lt;br /&gt;
* Changes required for proper DCR Static measurement in multi-instance/multiple appid's case.&lt;br /&gt;
* Fixes for OTT synchronization issues between iOS and Android platforms.&lt;br /&gt;
* Fixes for EV data parameters in few scenarios.&lt;br /&gt;
* Fixes for DCR Static product behaviour in background app refresh and background fetch scenarios.&lt;br /&gt;
* DCR Ad reporting improvements.&lt;br /&gt;
* Fixes and improvements for the SDK console log messages.&lt;br /&gt;
* Other enhancements and fixes.&lt;br /&gt;
&lt;br /&gt;
== Release 6.2.0.0  (02-04-2019) ==&lt;br /&gt;
* Removal of Location Module from SDK Code.&lt;br /&gt;
* Fixed the getOptoutStatus() api, so that client can call it in main thread.&lt;br /&gt;
* Fixed the parsing error happening when clientid/vcid provided as empty in metadata.&lt;br /&gt;
* Align AppSDK for FW detection with BSDK for DCR measurement.&lt;br /&gt;
* Other enhancements and fixes.&lt;br /&gt;
&lt;br /&gt;
== Release 6.1.0.1 (9-13-2018) ==&lt;br /&gt;
*Support added for Video On Demand in TV Ratings&lt;br /&gt;
*Bug fixes and improvements&lt;br /&gt;
&lt;br /&gt;
== Release 6.0.0.4 (5-24-2018) ==&lt;br /&gt;
*If the SDK build target is set to AGF then SDK will send the hello ping to “eu” and “eu-uat” for debug builds. No changes to the non AGF build the default sfcode will continue to be &amp;quot;sdk&amp;quot; and &amp;quot;cert&amp;quot; for debug build.&lt;br /&gt;
*The C1 parameter (NUID) will now be sent as encrypted DeviceID.&lt;br /&gt;
*New SessionID changes. The sessionID will contain 29 length random characters appended by timestamp.&lt;br /&gt;
*Support for multiple SDK instance without any limit.&lt;br /&gt;
*New log feature for CAT tool to retrieve the API level information from client apps. This ping will contain the eventType, parameters, SDK version, appid etc.&lt;br /&gt;
*Removed Viewability for this release.&lt;br /&gt;
&lt;br /&gt;
== Release 5.1.1.26 (7-31-2017) ==&lt;br /&gt;
*Genre parameter will be a part of DCR pings and the value is 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;
*Fix for last playhead call that is not processed (when there is no time-gap between the last playhead and end call)&lt;br /&gt;
&lt;br /&gt;
== Release 5.1.1.24 (6-2-2017) ==&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 metadata carry over between channels after a channel change&lt;br /&gt;
&lt;br /&gt;
== Release 5.1.1.18 (1-24-2017) ==&lt;br /&gt;
*Ability to opt-out using “Limit Ad Tracking” feature&lt;br /&gt;
*Improved CPU Performance through encryption process change&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.14 (12-10-2016) ==&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;
*Collection of additional device information&lt;br /&gt;
*Opt-out pages based on locale and country&lt;br /&gt;
*Opt-out based on the ‘Limit Ad Tracking’ flag&lt;br /&gt;
*Issue a warning in client developer’s console when an ad is being played for more than 5 minutes&lt;br /&gt;
*Reduced load time of Android SDK, caused due to encryption.&lt;br /&gt;
*Limit the duration reported for App launch&lt;br /&gt;
*Modification to accept non-JSON strings&lt;br /&gt;
*Fixed&lt;br /&gt;
**Incorrect DRM placement ID&lt;br /&gt;
**DRM pings sent in bursts in case of time change&lt;br /&gt;
&lt;br /&gt;
== Release 5.1.1.10 (10-19-2016) ==&lt;br /&gt;
*Fixed an issue where SDK will send a burst of data pings in Android.&lt;br /&gt;
&lt;br /&gt;
== Release 5.1.1.7 (9-1-2016) ==&lt;br /&gt;
*Support for Android N&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.4 (8-1-2016) ==&lt;br /&gt;
*Support for Pause timeout (from 30 minutes to 5 minutes)&lt;br /&gt;
&lt;br /&gt;
== Release 5.1.1.3 (7-7-2016) ==&lt;br /&gt;
*Sending event level (button press data) data to census collections.&lt;br /&gt;
*Changes in OTT when switching from mobile to Chromecast&lt;br /&gt;
*General bug fix and performance improvements&lt;br /&gt;
&lt;br /&gt;
== Release 5.1.0.4 (4-25-2016) ==&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 (6-9-2015) ==&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 Android 6.0 Marshmallow&lt;br /&gt;
*General bug fix and performance improvements&lt;br /&gt;
&lt;br /&gt;
== Release 1.2.3.8 (1-10-2015) ==&lt;/div&gt;</summary>
		<author><name>AmySockanathan</name></author>
	</entry>
	<entry>
		<id>https://nielsentest.mywikis.net/w/index.php?title=Browser_SDK_Release_Notes&amp;diff=6956</id>
		<title>Browser SDK Release Notes</title>
		<link rel="alternate" type="text/html" href="https://nielsentest.mywikis.net/w/index.php?title=Browser_SDK_Release_Notes&amp;diff=6956"/>
		<updated>2026-03-06T15:48:15Z</updated>

		<summary type="html">&lt;p&gt;AmySockanathan: Release notes for R1 2026 BSDK release&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Breadcrumb|}} {{Breadcrumb|Digital}} {{CurrentBreadcrumb}}&lt;br /&gt;
[[Category:Digital]]&lt;br /&gt;
__NOTOC__&lt;br /&gt;
&lt;br /&gt;
== Release R1(v6.0.0.747) (03-04-2026) ==&lt;br /&gt;
&lt;br /&gt;
* Added support for Viewability &amp;amp; Audibility&lt;br /&gt;
* Last DTVR Subminute ping for iOS-Safari browser was not fired through the POST request.&lt;br /&gt;
* Fix for some RTVOD sceanrios&lt;br /&gt;
* Fix to not fire a DTVR Subminute timer ping with the evdata containing 00000 offset when FD channel transitions from a valid CID to null&lt;br /&gt;
&lt;br /&gt;
== Release R1(v6.0.0.734) (07-08-2025) ==&lt;br /&gt;
&lt;br /&gt;
* Support for DTVR Subminute feature&lt;br /&gt;
&lt;br /&gt;
== Release V1(v6.0.110) (05-21-2024) ==&lt;br /&gt;
&lt;br /&gt;
* Suppression of v60/v52/v53 legacy pings&lt;br /&gt;
&lt;br /&gt;
== Release R2(v6.0.0.702) (10-30-2024) ==&lt;br /&gt;
&lt;br /&gt;
* 2nd release of DOMless SDK&lt;br /&gt;
* Support DCR Static&lt;br /&gt;
* Support Debug interface which can be used to view API calls and SDK pings&lt;br /&gt;
* Support caching of pings when network is not available&lt;br /&gt;
&lt;br /&gt;
== Release R1(v6.0.0.692) (07-31-2024) ==&lt;br /&gt;
&lt;br /&gt;
* DOMless SDK Release with support for Amazon, ReactNative and other DOM less platforms&lt;br /&gt;
&lt;br /&gt;
== Release R6(v6.0.0.673) (09-05-2023) ==&lt;br /&gt;
&lt;br /&gt;
* Fix for stream id of stream 2 is populated in the last duration ping of stream 1 when mandatory END is not called&lt;br /&gt;
&lt;br /&gt;
== Release R5(v6.0.0.673) (08-14-2023) (AGF Release) ==&lt;br /&gt;
&lt;br /&gt;
* Fix for stream id of stream 2 is populated in the last duration ping of stream 1 when mandatory END is not called&lt;br /&gt;
&lt;br /&gt;
== Release R4(v6.0.0.672) (08-01-2023) ==&lt;br /&gt;
&lt;br /&gt;
* Viewability build with support for Viewability and Audibility features&lt;br /&gt;
&lt;br /&gt;
== Release R3(v6.0.0.663) (05-30-2023) ==&lt;br /&gt;
&lt;br /&gt;
* Support to measure static on hbbtv with the iFrame fixes.&lt;br /&gt;
&lt;br /&gt;
== Release R2(v.6.0.0.648) (05-03-2023) (AGF Release) ==&lt;br /&gt;
&lt;br /&gt;
* Support to measure DCR static when browser sdk is initialized on parent page while video is played within the iFrame&lt;br /&gt;
* Fix to propagate correct starttm value in postroll content trailing ping&lt;br /&gt;
* Fix the 1st party cookie expiry date&lt;br /&gt;
* Fix first party id time to live parameter (nol_fpid_ttl) override&lt;br /&gt;
* Update the sessionURL in BSDK600 code with FPID parameters&lt;br /&gt;
* SIVT support for DCR &amp;amp; DTVR&lt;br /&gt;
* StaticEnd support for Hybrid App&lt;br /&gt;
&lt;br /&gt;
== Release R1.2(v6.0.0.662) (04-19-2023) ==&lt;br /&gt;
* Support to measure DCR static when browser sdk is initialized on parent page while video is played within the iFrame&lt;br /&gt;
* Support to measure DCR static on a Single Page Application when staticEnd is not called while navigating from one page to another&lt;br /&gt;
&lt;br /&gt;
== Release R1(v6.0.0.648) (03-06-2023) ==&lt;br /&gt;
* SIVT support for DCR &amp;amp; DTVR&lt;br /&gt;
* StaticEnd support for Hybrid App&lt;br /&gt;
&lt;br /&gt;
== Release R4(v6.0.0.623) (05-02-2022) ==&lt;br /&gt;
* Fix the 1st party cookie expiry date&lt;br /&gt;
* Fix first party id time to live parameter (nol_fpid_ttl) override&lt;br /&gt;
* Update the sessionURL in BSDK600 code with FPID parameters&lt;br /&gt;
&lt;br /&gt;
== Release R3(v6.0.0.618) (03-29-2022) ==&lt;br /&gt;
* Fix to measure dcr static while video is in focus and within an iFrame&lt;br /&gt;
* Fix to propagate correct starttm value in postroll content trailing ping&lt;br /&gt;
&lt;br /&gt;
== Release v6.0.0.355 ==&lt;br /&gt;
* Performance improvements through the use of cachable configuration via the Static Queue Snippet.&lt;br /&gt;
* Dynamic Configuration File&lt;br /&gt;
* Session Ping/UAID - A unique identifier of the device which allows for a single facebook ping per session.&lt;br /&gt;
* Support for iOS 12.2&lt;br /&gt;
&lt;br /&gt;
== Release 5.1.0 (Build 2) ==&lt;br /&gt;
*Support for DCR Static Lite Measurement&lt;br /&gt;
*Advanced Dynamic Script Initialization&lt;br /&gt;
*Removal of Configuration file dependency&lt;br /&gt;
&lt;br /&gt;
== Release 5.0.0 (Build 17) ==   &lt;br /&gt;
*Support for Nielsen Digital Content Ratings (DCR) product&lt;br /&gt;
*Support for measurement of static content&lt;br /&gt;
*Support for Ad measurement&lt;br /&gt;
*Support for Facebook Pings&lt;br /&gt;
*Support for multiple instances of the SDK&lt;br /&gt;
*General bug fix and performance improvements&lt;/div&gt;</summary>
		<author><name>AmySockanathan</name></author>
	</entry>
	<entry>
		<id>https://nielsentest.mywikis.net/w/index.php?title=Domless_SDK_API_Reference&amp;diff=6945</id>
		<title>Domless SDK API Reference</title>
		<link rel="alternate" type="text/html" href="https://nielsentest.mywikis.net/w/index.php?title=Domless_SDK_API_Reference&amp;diff=6945"/>
		<updated>2026-01-27T21:27:38Z</updated>

		<summary type="html">&lt;p&gt;AmySockanathan: /* SetInterval */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==License==&lt;br /&gt;
Nielsen SDK contains material that is protected by copyright laws, patent laws, trade secret laws, and by international treaty provisions and is Copyright © 2024 The Nielsen Company (US) LLC. All intellectual property rights and licenses therein are reserved by The Nielsen Company (US) LLC and its licensors. Please read the license agreement presented [https://engineeringportal.nielsen.com/wiki/Special:ClickThrough here], which must be accepted in order to download the Nielsen SDKs. For more information, reach out to your Nielsen Technical Account Manager(TAM).&lt;br /&gt;
&lt;br /&gt;
== Overview ==&lt;br /&gt;
The Nielsen DOM-less SDK provides APIs that allows our clients to integrate the Nielsen SDK in DOM-less environments, e.g., React Native, Node, etc.&lt;br /&gt;
&lt;br /&gt;
== DOM-less SDK Initialization ==&lt;br /&gt;
&lt;br /&gt;
=== Obtain the Nielsen Application ID (apid) ===&lt;br /&gt;
The Nielsen &amp;lt;code&amp;gt;apid&amp;lt;/code&amp;gt; is required to enable SDK functionality. Technical Account Manager will provide an apid for each player configuration. Browser SDK can support URLs that use any of the protocols – HTTPS and HTTP.&lt;br /&gt;
&lt;br /&gt;
=== Configure the DOM-less SDK ===&lt;br /&gt;
====Installation====&lt;br /&gt;
Install with &amp;lt;code&amp;gt;npm install &amp;lt;nowiki&amp;gt;https://github.com/NielsenDigitalSDK/bsdk-domless&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; and import the &amp;lt;code&amp;gt;BsdkInstance&amp;lt;/code&amp;gt; into video player component&lt;br /&gt;
 import { BsdkInstance } from 'bsdk-domless'&lt;br /&gt;
======status.ok()======&lt;br /&gt;
Initialization of the instance can be done with &amp;lt;code&amp;gt;status.ok()&amp;lt;/code&amp;gt; function or use Promise handling approach&lt;br /&gt;
 const instance = await new BsdkInstance(appID, instanceName, instanceMetadata, implementationHooks);&lt;br /&gt;
 &lt;br /&gt;
 if (instance &amp;amp;&amp;amp; instance.status.ok()) {&lt;br /&gt;
     expect(instance).not.toBe(undefined);&lt;br /&gt;
     expect(instance.status.ok()).toBe(true);&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Note: ImplementationHooks are mandatory for the DOM-less SDK instance. Please refer to the ImplementationHooks section below for details.&lt;br /&gt;
&lt;br /&gt;
====Exposed Interface====&lt;br /&gt;
The exposed interface is as follows:&lt;br /&gt;
&lt;br /&gt;
1. &amp;lt;code&amp;gt;`ggPM`&amp;lt;/code&amp;gt; - method to send messages to the Nielsen SDK&lt;br /&gt;
&lt;br /&gt;
2. &amp;lt;code&amp;gt;`processEvent`&amp;lt;/code&amp;gt; - method to send app state to the Nielsen SDK, e.g., focus, blur, appclose&lt;br /&gt;
=== Initialization Global Parameters ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
!'''Parameter'''&lt;br /&gt;
!'''Description'''&lt;br /&gt;
!'''Value'''&lt;br /&gt;
|-&lt;br /&gt;
|apid&lt;br /&gt;
|UniqueID assigned to player/site.&lt;br /&gt;
|'XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX'&lt;br /&gt;
|-&lt;br /&gt;
|instanceName&lt;br /&gt;
|Name of SDK instance&lt;br /&gt;
|&amp;quot;any string value&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|domlessEnv&lt;br /&gt;
|Type of Dom-less environment like ReactNative, Node, etc.&lt;br /&gt;
|&amp;quot;domlessEnv&amp;quot;: &amp;quot;1&amp;quot;, // For ReactNative&lt;br /&gt;
&amp;quot;domlessEnv&amp;quot;: &amp;quot;2&amp;quot;, // For Amazon&lt;br /&gt;
&lt;br /&gt;
&amp;quot;domlessEnv&amp;quot;: &amp;quot;3&amp;quot;, // For NodeJS&lt;br /&gt;
&lt;br /&gt;
“domlessEnv”: “4”, // For Custom&lt;br /&gt;
|-&lt;br /&gt;
|deviceId&lt;br /&gt;
|Device Identifier&lt;br /&gt;
|Alphanumeric string eg. &lt;br /&gt;
|-&lt;br /&gt;
|nol_sdkDebug&lt;br /&gt;
|Enables Nielsen console logging. Only required for testing&lt;br /&gt;
|&amp;quot;{nol_sdkDebug: &amp;quot;debug&amp;quot;})&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|optout&lt;br /&gt;
|User optout status&lt;br /&gt;
|&amp;quot;true&amp;quot;, &amp;quot;false&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|hem_sha256&lt;br /&gt;
|SHA256-hashed email address (client-supplied unique 32-character hexadecimal string)&lt;br /&gt;
|&amp;quot;tMmiiTI7IaAcPpQPFQ65uMVCWH8av9jw4cwf/F5HVRQ=&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|hem_sha1&lt;br /&gt;
|SHA1-hashed email address (client-supplied unique 32-character hexadecimal string)&lt;br /&gt;
|&amp;quot;XvBniTI7IaAcPpQPFQ65uMVCWH8av9jw4cwf/F5HVRQ=&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|hem_md5&lt;br /&gt;
|MD5-hashed email address (client-supplied unique 32-character hexadecimal string)&lt;br /&gt;
|&amp;quot;JnIbdTI7IaAcPpQPFQ65uMVCWH8av9jw4cwf/F5HVRQ=&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|uid2&lt;br /&gt;
|An identifier based on a user’s verifiable PII (e.g. hashed email). UID2.0 was initially created by The Trade Desk (TTD) and is now managed by Prebid.&lt;br /&gt;
|&amp;quot;MTKVpUAzwYAPnHrtfE0wlINOMzhU7UUEjjVdCdRu63k=&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|uid2_token&lt;br /&gt;
|Encrypted Unified ID 2.0&lt;br /&gt;
|&amp;quot;AgAAAAPFR0zA5ogv/yaAPiUsAdZPsfqS8Ql&lt;br /&gt;
DSGxAB+rr8yekFs3AjLYVk5qqqiyV2XHbSuwzHmxSlLeQeK QI1mp015jsNnpX5/xGgXldcgVz+gFnyh3T8/3agMwRmyrhC xG4oH2C7fc48AQk2eotE7FW0ZDEYM8fD9ZxDaxFUC/OV3OuZA&amp;amp;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|luid&lt;br /&gt;
|Living Unit ID - Experian Household ID&lt;br /&gt;
'''Note: This parameter is applicable only for CTV and First Party Livestream data'''&lt;br /&gt;
|&amp;quot;B0EOFEDgD&amp;quot;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Implementation Hooks ===&lt;br /&gt;
====='''''&amp;lt;pre style=&amp;quot;color: green; font-weight: bold; font-size: 20px&amp;quot;&amp;gt;Note: Implementation Hooks are mandatory for the DOM-less SDK to function as expected.&amp;lt;/pre&amp;gt;'''''=====&lt;br /&gt;
&lt;br /&gt;
This object captures the required entities for the DOM-less SDK to operate correctly. These are normally platform dependent and are expected to be passed on to the DOM-less SDK as part of its initialization. See below for the descriptions of each key.&lt;br /&gt;
&lt;br /&gt;
==== '''log''' ====&lt;br /&gt;
Log the DOM-less SDK messages to an external stream, e.g. the browser console, stdout.&lt;br /&gt;
&lt;br /&gt;
e.g. Log.debug('debug', 'NIELSEN TAGS EXPECTED TO FIRE:')&lt;br /&gt;
&lt;br /&gt;
===== Methods =====&lt;br /&gt;
&amp;lt;blockquote&amp;gt;info()&lt;br /&gt;
&lt;br /&gt;
Log.info(label: string, ...message: string[]): void&lt;br /&gt;
&lt;br /&gt;
debug()&lt;br /&gt;
&lt;br /&gt;
Log.debug(label: string, ...message: string[]): void&lt;br /&gt;
&lt;br /&gt;
warn()&lt;br /&gt;
&lt;br /&gt;
Log.warn(label: string, ...message: string[]): void&lt;br /&gt;
&lt;br /&gt;
error()&lt;br /&gt;
&lt;br /&gt;
Log.error(label: string, ...message: string[]): void&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Parameters =====&lt;br /&gt;
&amp;lt;blockquote&amp;gt;label Required&lt;br /&gt;
&lt;br /&gt;
● string - severity type, e.g. info, debug, warn, error or custom label&lt;br /&gt;
&lt;br /&gt;
message Required&lt;br /&gt;
&lt;br /&gt;
● string - message that will be output to the console&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== storage ====&lt;br /&gt;
Persistent storage of key/values, similar in behavior to browser localStorage.&lt;br /&gt;
&lt;br /&gt;
e.g. storage.setItem('nol_lsid', 'umy3w4ik9usw2ppqmw2vkecckxfob1697308388')&lt;br /&gt;
&lt;br /&gt;
===== Methods =====&lt;br /&gt;
&amp;lt;blockquote&amp;gt;setItem()&lt;br /&gt;
&lt;br /&gt;
storage.setItem(key: string, value: string)&lt;br /&gt;
&lt;br /&gt;
getItem()&lt;br /&gt;
&lt;br /&gt;
storage.getItem(key: string)&lt;br /&gt;
&lt;br /&gt;
removeItem()&lt;br /&gt;
&lt;br /&gt;
storage.removeItem(key: string)&lt;br /&gt;
&lt;br /&gt;
clear()&lt;br /&gt;
&lt;br /&gt;
storage.clear()&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== fetch ====&lt;br /&gt;
Function to fetch resources from the network. Required for the transmission of the DOM-less SDK requests (pings) to the Nielsen endpoints.&lt;br /&gt;
&lt;br /&gt;
e.g. Fetch(resource: string, options: object)&lt;br /&gt;
&lt;br /&gt;
===== Parameters =====&lt;br /&gt;
&amp;lt;blockquote&amp;gt;resource Required&lt;br /&gt;
&lt;br /&gt;
● A string that provides the URL of the resource to fetch&lt;br /&gt;
&lt;br /&gt;
options Optional Object containing settings to apply to the request:&lt;br /&gt;
&lt;br /&gt;
method&lt;br /&gt;
&lt;br /&gt;
● string - request method: &amp;quot;GET&amp;quot;, &amp;quot;POST&amp;quot;. If one is not provided SDK will default to &amp;quot;GET&amp;quot;&lt;br /&gt;
&lt;br /&gt;
headers&lt;br /&gt;
&lt;br /&gt;
● object - headers to add to the outgoing request, an object literal with String values&lt;br /&gt;
&lt;br /&gt;
body&lt;br /&gt;
&lt;br /&gt;
● string - body to add to the request; SDK will send out string&lt;br /&gt;
&lt;br /&gt;
mode&lt;br /&gt;
&lt;br /&gt;
● string - mode for request: cors, no-cors, same-origin&lt;br /&gt;
&lt;br /&gt;
referrer&lt;br /&gt;
&lt;br /&gt;
● string - a string specifying the referrer of the request&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== SetTimeout ====&lt;br /&gt;
Function to set a timer in milliseconds to execute a block of code on expiry&lt;br /&gt;
&lt;br /&gt;
e.g. SetTimeout(callback , 1000) &lt;br /&gt;
===== Parameters =====&lt;br /&gt;
&amp;lt;blockquote&amp;gt;callback Required&lt;br /&gt;
&lt;br /&gt;
● A function to execute when the timer expires&lt;br /&gt;
&lt;br /&gt;
timeout Required&lt;br /&gt;
&lt;br /&gt;
● number - The time that the timer should wait before the callback function is executed. This is in milliseconds.&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== SetInterval ====&lt;br /&gt;
Function to repeatedly call a function with a fixed time delay in milliseconds between each call.&lt;br /&gt;
&lt;br /&gt;
e.g. SetInterval(callback , 1000) &lt;br /&gt;
===== Parameters =====&lt;br /&gt;
&amp;lt;blockquote&amp;gt;callback Required&lt;br /&gt;
&lt;br /&gt;
● A function to be executed every interval specified&lt;br /&gt;
&lt;br /&gt;
interval Required&lt;br /&gt;
&lt;br /&gt;
● number - The delay in milliseconds between the execution of the function&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== ClearTimeout ====&lt;br /&gt;
Function to cancel the timeout previously set by SetTimeout&lt;br /&gt;
&lt;br /&gt;
e.g. ClearTimeout(1000) &lt;br /&gt;
===== Parameters =====&lt;br /&gt;
&amp;lt;blockquote&amp;gt;timeout Required&lt;br /&gt;
&lt;br /&gt;
● number - The time that the timer should wait before the callback function is executed&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
==== ClearInterval ====&lt;br /&gt;
Function to cancel the timed repeating call which was previously established through SetInterval&lt;br /&gt;
&lt;br /&gt;
e.g. ClearInterval(1000) &lt;br /&gt;
===== Parameters =====&lt;br /&gt;
&amp;lt;blockquote&amp;gt;interval Required&lt;br /&gt;
&lt;br /&gt;
● number - The delay between the execution of the function&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
==== Nielsen Debug Node.js Server for Event Tracking ====&lt;br /&gt;
We are excited to announce the beta version of our Debug Node.js server, designed to track requests and events sent from our Dom-less SDK using WebSocket connections. While this feature is not officially released, we are currently looking for users interested in beta testing.&lt;br /&gt;
&lt;br /&gt;
If you'd like to try this tool and provide feedback, please reach out to your Nielsen Technical Account Manager (TAM) for more information. Your insights would be invaluable in helping us refine this feature for a future release!&lt;br /&gt;
&lt;br /&gt;
== DOM-less SDK API Methods &amp;amp; Properties ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
!Method/Property&lt;br /&gt;
!Event #&lt;br /&gt;
!DTVR&lt;br /&gt;
!DAR&lt;br /&gt;
!DCR&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|[[play (Browser)|play]]&lt;br /&gt;
|5&lt;br /&gt;
|✔&lt;br /&gt;
|✘&lt;br /&gt;
|✔&lt;br /&gt;
|Used when there is an ID3 fed product such as DTVR and the client does not want to send in all the CMS metadata that is sent in loadMetadata. This allows the client to send in at least the required “channel name” value associated to the ID3 feed. When the client passes in the channelName, they can change the CMS data stored by passing new values. If this event is not called then the “channel name” value populated will be the default value of “defaultChannelName”.&lt;br /&gt;
|-&lt;br /&gt;
|[[stop (Browser)|stop]]&lt;br /&gt;
|7&lt;br /&gt;
|✘&lt;br /&gt;
|✘&lt;br /&gt;
|✔&lt;br /&gt;
|Used when switching between ad and content or content and ad.&lt;br /&gt;
|-&lt;br /&gt;
|[[loadMetadata (Browser)|loadMetadata]]&lt;br /&gt;
|15&lt;br /&gt;
|✔&lt;br /&gt;
|✔&lt;br /&gt;
|✔&lt;br /&gt;
|Used when there is a preroll ad that needs to be associated with content metadata. The loadMetadata will first be called to populate the content metadata values and then the loadMetadata for ad metadata will be called. This allows sending a content ping with the ad info, even if the user bails out during the preroll ad.&lt;br /&gt;
|-&lt;br /&gt;
|[[setPlayheadPosition (Browser)|setPlayheadPosition]]&lt;br /&gt;
|49&lt;br /&gt;
|✘&lt;br /&gt;
|✘&lt;br /&gt;
|✔&lt;br /&gt;
|Used to send the playhead position.&lt;br /&gt;
|-&lt;br /&gt;
|[[sendID3 (Browser)|sendID3]]&lt;br /&gt;
|55&lt;br /&gt;
|✔&lt;br /&gt;
|✘&lt;br /&gt;
|✘&lt;br /&gt;
|Used to send the ID3 metadata.&lt;br /&gt;
|-&lt;br /&gt;
|[[end (Browser)|end]]&lt;br /&gt;
|57&lt;br /&gt;
|✔&lt;br /&gt;
|✘&lt;br /&gt;
|✔&lt;br /&gt;
|This is triggered 1) at the end of the content stream, 2) if the user switches to another piece of content 3) when the browser is refreshed or closed&lt;br /&gt;
|-&lt;br /&gt;
|[[setVolume (Browser)|setVolume]]&lt;br /&gt;
|61&lt;br /&gt;
|✔&lt;br /&gt;
|✘&lt;br /&gt;
|✔&lt;br /&gt;
|Used to pass in the player volume levels in %. Default value is -1.&lt;br /&gt;
|-&lt;br /&gt;
|[[staticstart (Browser)|staticstart]]&lt;br /&gt;
|14&lt;br /&gt;
|✘&lt;br /&gt;
|✘&lt;br /&gt;
|✔&lt;br /&gt;
|Used to send the metadata for the static page.&lt;br /&gt;
|-&lt;br /&gt;
|[[StaticEnd (Browser)|staticend]]&lt;br /&gt;
|56&lt;br /&gt;
|✘&lt;br /&gt;
|✘&lt;br /&gt;
|✔&lt;br /&gt;
|In Single Page Application (SPA) it is imperative that staticend is called prior to the loading of new metadata. This allows the SDK to properly credit the previous section/content being viewed before measuring the new one.&lt;br /&gt;
|-&lt;br /&gt;
|[[onPaginate (Browser)|onPaginate]]&lt;br /&gt;
|30&lt;br /&gt;
|✘&lt;br /&gt;
|✘&lt;br /&gt;
|✔&lt;br /&gt;
|Used to initialize the SDK object&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>AmySockanathan</name></author>
	</entry>
	<entry>
		<id>https://nielsentest.mywikis.net/w/index.php?title=Domless_SDK_API_Reference&amp;diff=6944</id>
		<title>Domless SDK API Reference</title>
		<link rel="alternate" type="text/html" href="https://nielsentest.mywikis.net/w/index.php?title=Domless_SDK_API_Reference&amp;diff=6944"/>
		<updated>2026-01-27T21:27:03Z</updated>

		<summary type="html">&lt;p&gt;AmySockanathan: /* SetTimeout */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==License==&lt;br /&gt;
Nielsen SDK contains material that is protected by copyright laws, patent laws, trade secret laws, and by international treaty provisions and is Copyright © 2024 The Nielsen Company (US) LLC. All intellectual property rights and licenses therein are reserved by The Nielsen Company (US) LLC and its licensors. Please read the license agreement presented [https://engineeringportal.nielsen.com/wiki/Special:ClickThrough here], which must be accepted in order to download the Nielsen SDKs. For more information, reach out to your Nielsen Technical Account Manager(TAM).&lt;br /&gt;
&lt;br /&gt;
== Overview ==&lt;br /&gt;
The Nielsen DOM-less SDK provides APIs that allows our clients to integrate the Nielsen SDK in DOM-less environments, e.g., React Native, Node, etc.&lt;br /&gt;
&lt;br /&gt;
== DOM-less SDK Initialization ==&lt;br /&gt;
&lt;br /&gt;
=== Obtain the Nielsen Application ID (apid) ===&lt;br /&gt;
The Nielsen &amp;lt;code&amp;gt;apid&amp;lt;/code&amp;gt; is required to enable SDK functionality. Technical Account Manager will provide an apid for each player configuration. Browser SDK can support URLs that use any of the protocols – HTTPS and HTTP.&lt;br /&gt;
&lt;br /&gt;
=== Configure the DOM-less SDK ===&lt;br /&gt;
====Installation====&lt;br /&gt;
Install with &amp;lt;code&amp;gt;npm install &amp;lt;nowiki&amp;gt;https://github.com/NielsenDigitalSDK/bsdk-domless&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; and import the &amp;lt;code&amp;gt;BsdkInstance&amp;lt;/code&amp;gt; into video player component&lt;br /&gt;
 import { BsdkInstance } from 'bsdk-domless'&lt;br /&gt;
======status.ok()======&lt;br /&gt;
Initialization of the instance can be done with &amp;lt;code&amp;gt;status.ok()&amp;lt;/code&amp;gt; function or use Promise handling approach&lt;br /&gt;
 const instance = await new BsdkInstance(appID, instanceName, instanceMetadata, implementationHooks);&lt;br /&gt;
 &lt;br /&gt;
 if (instance &amp;amp;&amp;amp; instance.status.ok()) {&lt;br /&gt;
     expect(instance).not.toBe(undefined);&lt;br /&gt;
     expect(instance.status.ok()).toBe(true);&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Note: ImplementationHooks are mandatory for the DOM-less SDK instance. Please refer to the ImplementationHooks section below for details.&lt;br /&gt;
&lt;br /&gt;
====Exposed Interface====&lt;br /&gt;
The exposed interface is as follows:&lt;br /&gt;
&lt;br /&gt;
1. &amp;lt;code&amp;gt;`ggPM`&amp;lt;/code&amp;gt; - method to send messages to the Nielsen SDK&lt;br /&gt;
&lt;br /&gt;
2. &amp;lt;code&amp;gt;`processEvent`&amp;lt;/code&amp;gt; - method to send app state to the Nielsen SDK, e.g., focus, blur, appclose&lt;br /&gt;
=== Initialization Global Parameters ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
!'''Parameter'''&lt;br /&gt;
!'''Description'''&lt;br /&gt;
!'''Value'''&lt;br /&gt;
|-&lt;br /&gt;
|apid&lt;br /&gt;
|UniqueID assigned to player/site.&lt;br /&gt;
|'XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX'&lt;br /&gt;
|-&lt;br /&gt;
|instanceName&lt;br /&gt;
|Name of SDK instance&lt;br /&gt;
|&amp;quot;any string value&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|domlessEnv&lt;br /&gt;
|Type of Dom-less environment like ReactNative, Node, etc.&lt;br /&gt;
|&amp;quot;domlessEnv&amp;quot;: &amp;quot;1&amp;quot;, // For ReactNative&lt;br /&gt;
&amp;quot;domlessEnv&amp;quot;: &amp;quot;2&amp;quot;, // For Amazon&lt;br /&gt;
&lt;br /&gt;
&amp;quot;domlessEnv&amp;quot;: &amp;quot;3&amp;quot;, // For NodeJS&lt;br /&gt;
&lt;br /&gt;
“domlessEnv”: “4”, // For Custom&lt;br /&gt;
|-&lt;br /&gt;
|deviceId&lt;br /&gt;
|Device Identifier&lt;br /&gt;
|Alphanumeric string eg. &lt;br /&gt;
|-&lt;br /&gt;
|nol_sdkDebug&lt;br /&gt;
|Enables Nielsen console logging. Only required for testing&lt;br /&gt;
|&amp;quot;{nol_sdkDebug: &amp;quot;debug&amp;quot;})&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|optout&lt;br /&gt;
|User optout status&lt;br /&gt;
|&amp;quot;true&amp;quot;, &amp;quot;false&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|hem_sha256&lt;br /&gt;
|SHA256-hashed email address (client-supplied unique 32-character hexadecimal string)&lt;br /&gt;
|&amp;quot;tMmiiTI7IaAcPpQPFQ65uMVCWH8av9jw4cwf/F5HVRQ=&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|hem_sha1&lt;br /&gt;
|SHA1-hashed email address (client-supplied unique 32-character hexadecimal string)&lt;br /&gt;
|&amp;quot;XvBniTI7IaAcPpQPFQ65uMVCWH8av9jw4cwf/F5HVRQ=&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|hem_md5&lt;br /&gt;
|MD5-hashed email address (client-supplied unique 32-character hexadecimal string)&lt;br /&gt;
|&amp;quot;JnIbdTI7IaAcPpQPFQ65uMVCWH8av9jw4cwf/F5HVRQ=&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|uid2&lt;br /&gt;
|An identifier based on a user’s verifiable PII (e.g. hashed email). UID2.0 was initially created by The Trade Desk (TTD) and is now managed by Prebid.&lt;br /&gt;
|&amp;quot;MTKVpUAzwYAPnHrtfE0wlINOMzhU7UUEjjVdCdRu63k=&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|uid2_token&lt;br /&gt;
|Encrypted Unified ID 2.0&lt;br /&gt;
|&amp;quot;AgAAAAPFR0zA5ogv/yaAPiUsAdZPsfqS8Ql&lt;br /&gt;
DSGxAB+rr8yekFs3AjLYVk5qqqiyV2XHbSuwzHmxSlLeQeK QI1mp015jsNnpX5/xGgXldcgVz+gFnyh3T8/3agMwRmyrhC xG4oH2C7fc48AQk2eotE7FW0ZDEYM8fD9ZxDaxFUC/OV3OuZA&amp;amp;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|luid&lt;br /&gt;
|Living Unit ID - Experian Household ID&lt;br /&gt;
'''Note: This parameter is applicable only for CTV and First Party Livestream data'''&lt;br /&gt;
|&amp;quot;B0EOFEDgD&amp;quot;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Implementation Hooks ===&lt;br /&gt;
====='''''&amp;lt;pre style=&amp;quot;color: green; font-weight: bold; font-size: 20px&amp;quot;&amp;gt;Note: Implementation Hooks are mandatory for the DOM-less SDK to function as expected.&amp;lt;/pre&amp;gt;'''''=====&lt;br /&gt;
&lt;br /&gt;
This object captures the required entities for the DOM-less SDK to operate correctly. These are normally platform dependent and are expected to be passed on to the DOM-less SDK as part of its initialization. See below for the descriptions of each key.&lt;br /&gt;
&lt;br /&gt;
==== '''log''' ====&lt;br /&gt;
Log the DOM-less SDK messages to an external stream, e.g. the browser console, stdout.&lt;br /&gt;
&lt;br /&gt;
e.g. Log.debug('debug', 'NIELSEN TAGS EXPECTED TO FIRE:')&lt;br /&gt;
&lt;br /&gt;
===== Methods =====&lt;br /&gt;
&amp;lt;blockquote&amp;gt;info()&lt;br /&gt;
&lt;br /&gt;
Log.info(label: string, ...message: string[]): void&lt;br /&gt;
&lt;br /&gt;
debug()&lt;br /&gt;
&lt;br /&gt;
Log.debug(label: string, ...message: string[]): void&lt;br /&gt;
&lt;br /&gt;
warn()&lt;br /&gt;
&lt;br /&gt;
Log.warn(label: string, ...message: string[]): void&lt;br /&gt;
&lt;br /&gt;
error()&lt;br /&gt;
&lt;br /&gt;
Log.error(label: string, ...message: string[]): void&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Parameters =====&lt;br /&gt;
&amp;lt;blockquote&amp;gt;label Required&lt;br /&gt;
&lt;br /&gt;
● string - severity type, e.g. info, debug, warn, error or custom label&lt;br /&gt;
&lt;br /&gt;
message Required&lt;br /&gt;
&lt;br /&gt;
● string - message that will be output to the console&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== storage ====&lt;br /&gt;
Persistent storage of key/values, similar in behavior to browser localStorage.&lt;br /&gt;
&lt;br /&gt;
e.g. storage.setItem('nol_lsid', 'umy3w4ik9usw2ppqmw2vkecckxfob1697308388')&lt;br /&gt;
&lt;br /&gt;
===== Methods =====&lt;br /&gt;
&amp;lt;blockquote&amp;gt;setItem()&lt;br /&gt;
&lt;br /&gt;
storage.setItem(key: string, value: string)&lt;br /&gt;
&lt;br /&gt;
getItem()&lt;br /&gt;
&lt;br /&gt;
storage.getItem(key: string)&lt;br /&gt;
&lt;br /&gt;
removeItem()&lt;br /&gt;
&lt;br /&gt;
storage.removeItem(key: string)&lt;br /&gt;
&lt;br /&gt;
clear()&lt;br /&gt;
&lt;br /&gt;
storage.clear()&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== fetch ====&lt;br /&gt;
Function to fetch resources from the network. Required for the transmission of the DOM-less SDK requests (pings) to the Nielsen endpoints.&lt;br /&gt;
&lt;br /&gt;
e.g. Fetch(resource: string, options: object)&lt;br /&gt;
&lt;br /&gt;
===== Parameters =====&lt;br /&gt;
&amp;lt;blockquote&amp;gt;resource Required&lt;br /&gt;
&lt;br /&gt;
● A string that provides the URL of the resource to fetch&lt;br /&gt;
&lt;br /&gt;
options Optional Object containing settings to apply to the request:&lt;br /&gt;
&lt;br /&gt;
method&lt;br /&gt;
&lt;br /&gt;
● string - request method: &amp;quot;GET&amp;quot;, &amp;quot;POST&amp;quot;. If one is not provided SDK will default to &amp;quot;GET&amp;quot;&lt;br /&gt;
&lt;br /&gt;
headers&lt;br /&gt;
&lt;br /&gt;
● object - headers to add to the outgoing request, an object literal with String values&lt;br /&gt;
&lt;br /&gt;
body&lt;br /&gt;
&lt;br /&gt;
● string - body to add to the request; SDK will send out string&lt;br /&gt;
&lt;br /&gt;
mode&lt;br /&gt;
&lt;br /&gt;
● string - mode for request: cors, no-cors, same-origin&lt;br /&gt;
&lt;br /&gt;
referrer&lt;br /&gt;
&lt;br /&gt;
● string - a string specifying the referrer of the request&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== SetTimeout ====&lt;br /&gt;
Function to set a timer in milliseconds to execute a block of code on expiry&lt;br /&gt;
&lt;br /&gt;
e.g. SetTimeout(callback , 1000) &lt;br /&gt;
===== Parameters =====&lt;br /&gt;
&amp;lt;blockquote&amp;gt;callback Required&lt;br /&gt;
&lt;br /&gt;
● A function to execute when the timer expires&lt;br /&gt;
&lt;br /&gt;
timeout Required&lt;br /&gt;
&lt;br /&gt;
● number - The time that the timer should wait before the callback function is executed. This is in milliseconds.&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== SetInterval ====&lt;br /&gt;
Function to repeatedly call a function with a fixed time delay between each call.&lt;br /&gt;
&lt;br /&gt;
e.g. SetInterval(callback , 1000) &lt;br /&gt;
===== Parameters =====&lt;br /&gt;
&amp;lt;blockquote&amp;gt;callback Required&lt;br /&gt;
&lt;br /&gt;
● A function to be executed every interval specified&lt;br /&gt;
&lt;br /&gt;
interval Required&lt;br /&gt;
&lt;br /&gt;
● number - The delay between the execution of the function&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
==== ClearTimeout ====&lt;br /&gt;
Function to cancel the timeout previously set by SetTimeout&lt;br /&gt;
&lt;br /&gt;
e.g. ClearTimeout(1000) &lt;br /&gt;
===== Parameters =====&lt;br /&gt;
&amp;lt;blockquote&amp;gt;timeout Required&lt;br /&gt;
&lt;br /&gt;
● number - The time that the timer should wait before the callback function is executed&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
==== ClearInterval ====&lt;br /&gt;
Function to cancel the timed repeating call which was previously established through SetInterval&lt;br /&gt;
&lt;br /&gt;
e.g. ClearInterval(1000) &lt;br /&gt;
===== Parameters =====&lt;br /&gt;
&amp;lt;blockquote&amp;gt;interval Required&lt;br /&gt;
&lt;br /&gt;
● number - The delay between the execution of the function&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
==== Nielsen Debug Node.js Server for Event Tracking ====&lt;br /&gt;
We are excited to announce the beta version of our Debug Node.js server, designed to track requests and events sent from our Dom-less SDK using WebSocket connections. While this feature is not officially released, we are currently looking for users interested in beta testing.&lt;br /&gt;
&lt;br /&gt;
If you'd like to try this tool and provide feedback, please reach out to your Nielsen Technical Account Manager (TAM) for more information. Your insights would be invaluable in helping us refine this feature for a future release!&lt;br /&gt;
&lt;br /&gt;
== DOM-less SDK API Methods &amp;amp; Properties ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
!Method/Property&lt;br /&gt;
!Event #&lt;br /&gt;
!DTVR&lt;br /&gt;
!DAR&lt;br /&gt;
!DCR&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|[[play (Browser)|play]]&lt;br /&gt;
|5&lt;br /&gt;
|✔&lt;br /&gt;
|✘&lt;br /&gt;
|✔&lt;br /&gt;
|Used when there is an ID3 fed product such as DTVR and the client does not want to send in all the CMS metadata that is sent in loadMetadata. This allows the client to send in at least the required “channel name” value associated to the ID3 feed. When the client passes in the channelName, they can change the CMS data stored by passing new values. If this event is not called then the “channel name” value populated will be the default value of “defaultChannelName”.&lt;br /&gt;
|-&lt;br /&gt;
|[[stop (Browser)|stop]]&lt;br /&gt;
|7&lt;br /&gt;
|✘&lt;br /&gt;
|✘&lt;br /&gt;
|✔&lt;br /&gt;
|Used when switching between ad and content or content and ad.&lt;br /&gt;
|-&lt;br /&gt;
|[[loadMetadata (Browser)|loadMetadata]]&lt;br /&gt;
|15&lt;br /&gt;
|✔&lt;br /&gt;
|✔&lt;br /&gt;
|✔&lt;br /&gt;
|Used when there is a preroll ad that needs to be associated with content metadata. The loadMetadata will first be called to populate the content metadata values and then the loadMetadata for ad metadata will be called. This allows sending a content ping with the ad info, even if the user bails out during the preroll ad.&lt;br /&gt;
|-&lt;br /&gt;
|[[setPlayheadPosition (Browser)|setPlayheadPosition]]&lt;br /&gt;
|49&lt;br /&gt;
|✘&lt;br /&gt;
|✘&lt;br /&gt;
|✔&lt;br /&gt;
|Used to send the playhead position.&lt;br /&gt;
|-&lt;br /&gt;
|[[sendID3 (Browser)|sendID3]]&lt;br /&gt;
|55&lt;br /&gt;
|✔&lt;br /&gt;
|✘&lt;br /&gt;
|✘&lt;br /&gt;
|Used to send the ID3 metadata.&lt;br /&gt;
|-&lt;br /&gt;
|[[end (Browser)|end]]&lt;br /&gt;
|57&lt;br /&gt;
|✔&lt;br /&gt;
|✘&lt;br /&gt;
|✔&lt;br /&gt;
|This is triggered 1) at the end of the content stream, 2) if the user switches to another piece of content 3) when the browser is refreshed or closed&lt;br /&gt;
|-&lt;br /&gt;
|[[setVolume (Browser)|setVolume]]&lt;br /&gt;
|61&lt;br /&gt;
|✔&lt;br /&gt;
|✘&lt;br /&gt;
|✔&lt;br /&gt;
|Used to pass in the player volume levels in %. Default value is -1.&lt;br /&gt;
|-&lt;br /&gt;
|[[staticstart (Browser)|staticstart]]&lt;br /&gt;
|14&lt;br /&gt;
|✘&lt;br /&gt;
|✘&lt;br /&gt;
|✔&lt;br /&gt;
|Used to send the metadata for the static page.&lt;br /&gt;
|-&lt;br /&gt;
|[[StaticEnd (Browser)|staticend]]&lt;br /&gt;
|56&lt;br /&gt;
|✘&lt;br /&gt;
|✘&lt;br /&gt;
|✔&lt;br /&gt;
|In Single Page Application (SPA) it is imperative that staticend is called prior to the loading of new metadata. This allows the SDK to properly credit the previous section/content being viewed before measuring the new one.&lt;br /&gt;
|-&lt;br /&gt;
|[[onPaginate (Browser)|onPaginate]]&lt;br /&gt;
|30&lt;br /&gt;
|✘&lt;br /&gt;
|✘&lt;br /&gt;
|✔&lt;br /&gt;
|Used to initialize the SDK object&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>AmySockanathan</name></author>
	</entry>
	<entry>
		<id>https://nielsentest.mywikis.net/w/index.php?title=Domless_SDK_API_Reference&amp;diff=6943</id>
		<title>Domless SDK API Reference</title>
		<link rel="alternate" type="text/html" href="https://nielsentest.mywikis.net/w/index.php?title=Domless_SDK_API_Reference&amp;diff=6943"/>
		<updated>2026-01-27T21:23:27Z</updated>

		<summary type="html">&lt;p&gt;AmySockanathan: Implementation Hooks: Added settimeout, setinterval, cleartimeout and clearinterval&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==License==&lt;br /&gt;
Nielsen SDK contains material that is protected by copyright laws, patent laws, trade secret laws, and by international treaty provisions and is Copyright © 2024 The Nielsen Company (US) LLC. All intellectual property rights and licenses therein are reserved by The Nielsen Company (US) LLC and its licensors. Please read the license agreement presented [https://engineeringportal.nielsen.com/wiki/Special:ClickThrough here], which must be accepted in order to download the Nielsen SDKs. For more information, reach out to your Nielsen Technical Account Manager(TAM).&lt;br /&gt;
&lt;br /&gt;
== Overview ==&lt;br /&gt;
The Nielsen DOM-less SDK provides APIs that allows our clients to integrate the Nielsen SDK in DOM-less environments, e.g., React Native, Node, etc.&lt;br /&gt;
&lt;br /&gt;
== DOM-less SDK Initialization ==&lt;br /&gt;
&lt;br /&gt;
=== Obtain the Nielsen Application ID (apid) ===&lt;br /&gt;
The Nielsen &amp;lt;code&amp;gt;apid&amp;lt;/code&amp;gt; is required to enable SDK functionality. Technical Account Manager will provide an apid for each player configuration. Browser SDK can support URLs that use any of the protocols – HTTPS and HTTP.&lt;br /&gt;
&lt;br /&gt;
=== Configure the DOM-less SDK ===&lt;br /&gt;
====Installation====&lt;br /&gt;
Install with &amp;lt;code&amp;gt;npm install &amp;lt;nowiki&amp;gt;https://github.com/NielsenDigitalSDK/bsdk-domless&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; and import the &amp;lt;code&amp;gt;BsdkInstance&amp;lt;/code&amp;gt; into video player component&lt;br /&gt;
 import { BsdkInstance } from 'bsdk-domless'&lt;br /&gt;
======status.ok()======&lt;br /&gt;
Initialization of the instance can be done with &amp;lt;code&amp;gt;status.ok()&amp;lt;/code&amp;gt; function or use Promise handling approach&lt;br /&gt;
 const instance = await new BsdkInstance(appID, instanceName, instanceMetadata, implementationHooks);&lt;br /&gt;
 &lt;br /&gt;
 if (instance &amp;amp;&amp;amp; instance.status.ok()) {&lt;br /&gt;
     expect(instance).not.toBe(undefined);&lt;br /&gt;
     expect(instance.status.ok()).toBe(true);&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Note: ImplementationHooks are mandatory for the DOM-less SDK instance. Please refer to the ImplementationHooks section below for details.&lt;br /&gt;
&lt;br /&gt;
====Exposed Interface====&lt;br /&gt;
The exposed interface is as follows:&lt;br /&gt;
&lt;br /&gt;
1. &amp;lt;code&amp;gt;`ggPM`&amp;lt;/code&amp;gt; - method to send messages to the Nielsen SDK&lt;br /&gt;
&lt;br /&gt;
2. &amp;lt;code&amp;gt;`processEvent`&amp;lt;/code&amp;gt; - method to send app state to the Nielsen SDK, e.g., focus, blur, appclose&lt;br /&gt;
=== Initialization Global Parameters ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
!'''Parameter'''&lt;br /&gt;
!'''Description'''&lt;br /&gt;
!'''Value'''&lt;br /&gt;
|-&lt;br /&gt;
|apid&lt;br /&gt;
|UniqueID assigned to player/site.&lt;br /&gt;
|'XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX'&lt;br /&gt;
|-&lt;br /&gt;
|instanceName&lt;br /&gt;
|Name of SDK instance&lt;br /&gt;
|&amp;quot;any string value&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|domlessEnv&lt;br /&gt;
|Type of Dom-less environment like ReactNative, Node, etc.&lt;br /&gt;
|&amp;quot;domlessEnv&amp;quot;: &amp;quot;1&amp;quot;, // For ReactNative&lt;br /&gt;
&amp;quot;domlessEnv&amp;quot;: &amp;quot;2&amp;quot;, // For Amazon&lt;br /&gt;
&lt;br /&gt;
&amp;quot;domlessEnv&amp;quot;: &amp;quot;3&amp;quot;, // For NodeJS&lt;br /&gt;
&lt;br /&gt;
“domlessEnv”: “4”, // For Custom&lt;br /&gt;
|-&lt;br /&gt;
|deviceId&lt;br /&gt;
|Device Identifier&lt;br /&gt;
|Alphanumeric string eg. &lt;br /&gt;
|-&lt;br /&gt;
|nol_sdkDebug&lt;br /&gt;
|Enables Nielsen console logging. Only required for testing&lt;br /&gt;
|&amp;quot;{nol_sdkDebug: &amp;quot;debug&amp;quot;})&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|optout&lt;br /&gt;
|User optout status&lt;br /&gt;
|&amp;quot;true&amp;quot;, &amp;quot;false&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|hem_sha256&lt;br /&gt;
|SHA256-hashed email address (client-supplied unique 32-character hexadecimal string)&lt;br /&gt;
|&amp;quot;tMmiiTI7IaAcPpQPFQ65uMVCWH8av9jw4cwf/F5HVRQ=&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|hem_sha1&lt;br /&gt;
|SHA1-hashed email address (client-supplied unique 32-character hexadecimal string)&lt;br /&gt;
|&amp;quot;XvBniTI7IaAcPpQPFQ65uMVCWH8av9jw4cwf/F5HVRQ=&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|hem_md5&lt;br /&gt;
|MD5-hashed email address (client-supplied unique 32-character hexadecimal string)&lt;br /&gt;
|&amp;quot;JnIbdTI7IaAcPpQPFQ65uMVCWH8av9jw4cwf/F5HVRQ=&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|uid2&lt;br /&gt;
|An identifier based on a user’s verifiable PII (e.g. hashed email). UID2.0 was initially created by The Trade Desk (TTD) and is now managed by Prebid.&lt;br /&gt;
|&amp;quot;MTKVpUAzwYAPnHrtfE0wlINOMzhU7UUEjjVdCdRu63k=&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|uid2_token&lt;br /&gt;
|Encrypted Unified ID 2.0&lt;br /&gt;
|&amp;quot;AgAAAAPFR0zA5ogv/yaAPiUsAdZPsfqS8Ql&lt;br /&gt;
DSGxAB+rr8yekFs3AjLYVk5qqqiyV2XHbSuwzHmxSlLeQeK QI1mp015jsNnpX5/xGgXldcgVz+gFnyh3T8/3agMwRmyrhC xG4oH2C7fc48AQk2eotE7FW0ZDEYM8fD9ZxDaxFUC/OV3OuZA&amp;amp;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|luid&lt;br /&gt;
|Living Unit ID - Experian Household ID&lt;br /&gt;
'''Note: This parameter is applicable only for CTV and First Party Livestream data'''&lt;br /&gt;
|&amp;quot;B0EOFEDgD&amp;quot;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Implementation Hooks ===&lt;br /&gt;
====='''''&amp;lt;pre style=&amp;quot;color: green; font-weight: bold; font-size: 20px&amp;quot;&amp;gt;Note: Implementation Hooks are mandatory for the DOM-less SDK to function as expected.&amp;lt;/pre&amp;gt;'''''=====&lt;br /&gt;
&lt;br /&gt;
This object captures the required entities for the DOM-less SDK to operate correctly. These are normally platform dependent and are expected to be passed on to the DOM-less SDK as part of its initialization. See below for the descriptions of each key.&lt;br /&gt;
&lt;br /&gt;
==== '''log''' ====&lt;br /&gt;
Log the DOM-less SDK messages to an external stream, e.g. the browser console, stdout.&lt;br /&gt;
&lt;br /&gt;
e.g. Log.debug('debug', 'NIELSEN TAGS EXPECTED TO FIRE:')&lt;br /&gt;
&lt;br /&gt;
===== Methods =====&lt;br /&gt;
&amp;lt;blockquote&amp;gt;info()&lt;br /&gt;
&lt;br /&gt;
Log.info(label: string, ...message: string[]): void&lt;br /&gt;
&lt;br /&gt;
debug()&lt;br /&gt;
&lt;br /&gt;
Log.debug(label: string, ...message: string[]): void&lt;br /&gt;
&lt;br /&gt;
warn()&lt;br /&gt;
&lt;br /&gt;
Log.warn(label: string, ...message: string[]): void&lt;br /&gt;
&lt;br /&gt;
error()&lt;br /&gt;
&lt;br /&gt;
Log.error(label: string, ...message: string[]): void&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Parameters =====&lt;br /&gt;
&amp;lt;blockquote&amp;gt;label Required&lt;br /&gt;
&lt;br /&gt;
● string - severity type, e.g. info, debug, warn, error or custom label&lt;br /&gt;
&lt;br /&gt;
message Required&lt;br /&gt;
&lt;br /&gt;
● string - message that will be output to the console&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== storage ====&lt;br /&gt;
Persistent storage of key/values, similar in behavior to browser localStorage.&lt;br /&gt;
&lt;br /&gt;
e.g. storage.setItem('nol_lsid', 'umy3w4ik9usw2ppqmw2vkecckxfob1697308388')&lt;br /&gt;
&lt;br /&gt;
===== Methods =====&lt;br /&gt;
&amp;lt;blockquote&amp;gt;setItem()&lt;br /&gt;
&lt;br /&gt;
storage.setItem(key: string, value: string)&lt;br /&gt;
&lt;br /&gt;
getItem()&lt;br /&gt;
&lt;br /&gt;
storage.getItem(key: string)&lt;br /&gt;
&lt;br /&gt;
removeItem()&lt;br /&gt;
&lt;br /&gt;
storage.removeItem(key: string)&lt;br /&gt;
&lt;br /&gt;
clear()&lt;br /&gt;
&lt;br /&gt;
storage.clear()&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== fetch ====&lt;br /&gt;
Function to fetch resources from the network. Required for the transmission of the DOM-less SDK requests (pings) to the Nielsen endpoints.&lt;br /&gt;
&lt;br /&gt;
e.g. Fetch(resource: string, options: object)&lt;br /&gt;
&lt;br /&gt;
===== Parameters =====&lt;br /&gt;
&amp;lt;blockquote&amp;gt;resource Required&lt;br /&gt;
&lt;br /&gt;
● A string that provides the URL of the resource to fetch&lt;br /&gt;
&lt;br /&gt;
options Optional Object containing settings to apply to the request:&lt;br /&gt;
&lt;br /&gt;
method&lt;br /&gt;
&lt;br /&gt;
● string - request method: &amp;quot;GET&amp;quot;, &amp;quot;POST&amp;quot;. If one is not provided SDK will default to &amp;quot;GET&amp;quot;&lt;br /&gt;
&lt;br /&gt;
headers&lt;br /&gt;
&lt;br /&gt;
● object - headers to add to the outgoing request, an object literal with String values&lt;br /&gt;
&lt;br /&gt;
body&lt;br /&gt;
&lt;br /&gt;
● string - body to add to the request; SDK will send out string&lt;br /&gt;
&lt;br /&gt;
mode&lt;br /&gt;
&lt;br /&gt;
● string - mode for request: cors, no-cors, same-origin&lt;br /&gt;
&lt;br /&gt;
referrer&lt;br /&gt;
&lt;br /&gt;
● string - a string specifying the referrer of the request&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== SetTimeout ====&lt;br /&gt;
Function to set a timer to execute a block of code on expiry&lt;br /&gt;
&lt;br /&gt;
e.g. SetTimeout(callback , 1000) &lt;br /&gt;
===== Parameters =====&lt;br /&gt;
&amp;lt;blockquote&amp;gt;callback Required&lt;br /&gt;
&lt;br /&gt;
● A function to execute when the timer expires&lt;br /&gt;
&lt;br /&gt;
timeout Required&lt;br /&gt;
&lt;br /&gt;
● number - The time that the timer should wait before the callback function is executed&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
==== SetInterval ====&lt;br /&gt;
Function to repeatedly call a function with a fixed time delay between each call.&lt;br /&gt;
&lt;br /&gt;
e.g. SetInterval(callback , 1000) &lt;br /&gt;
===== Parameters =====&lt;br /&gt;
&amp;lt;blockquote&amp;gt;callback Required&lt;br /&gt;
&lt;br /&gt;
● A function to be executed every interval specified&lt;br /&gt;
&lt;br /&gt;
interval Required&lt;br /&gt;
&lt;br /&gt;
● number - The delay between the execution of the function&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
==== ClearTimeout ====&lt;br /&gt;
Function to cancel the timeout previously set by SetTimeout&lt;br /&gt;
&lt;br /&gt;
e.g. ClearTimeout(1000) &lt;br /&gt;
===== Parameters =====&lt;br /&gt;
&amp;lt;blockquote&amp;gt;timeout Required&lt;br /&gt;
&lt;br /&gt;
● number - The time that the timer should wait before the callback function is executed&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
==== ClearInterval ====&lt;br /&gt;
Function to cancel the timed repeating call which was previously established through SetInterval&lt;br /&gt;
&lt;br /&gt;
e.g. ClearInterval(1000) &lt;br /&gt;
===== Parameters =====&lt;br /&gt;
&amp;lt;blockquote&amp;gt;interval Required&lt;br /&gt;
&lt;br /&gt;
● number - The delay between the execution of the function&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
==== Nielsen Debug Node.js Server for Event Tracking ====&lt;br /&gt;
We are excited to announce the beta version of our Debug Node.js server, designed to track requests and events sent from our Dom-less SDK using WebSocket connections. While this feature is not officially released, we are currently looking for users interested in beta testing.&lt;br /&gt;
&lt;br /&gt;
If you'd like to try this tool and provide feedback, please reach out to your Nielsen Technical Account Manager (TAM) for more information. Your insights would be invaluable in helping us refine this feature for a future release!&lt;br /&gt;
&lt;br /&gt;
== DOM-less SDK API Methods &amp;amp; Properties ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
!Method/Property&lt;br /&gt;
!Event #&lt;br /&gt;
!DTVR&lt;br /&gt;
!DAR&lt;br /&gt;
!DCR&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|[[play (Browser)|play]]&lt;br /&gt;
|5&lt;br /&gt;
|✔&lt;br /&gt;
|✘&lt;br /&gt;
|✔&lt;br /&gt;
|Used when there is an ID3 fed product such as DTVR and the client does not want to send in all the CMS metadata that is sent in loadMetadata. This allows the client to send in at least the required “channel name” value associated to the ID3 feed. When the client passes in the channelName, they can change the CMS data stored by passing new values. If this event is not called then the “channel name” value populated will be the default value of “defaultChannelName”.&lt;br /&gt;
|-&lt;br /&gt;
|[[stop (Browser)|stop]]&lt;br /&gt;
|7&lt;br /&gt;
|✘&lt;br /&gt;
|✘&lt;br /&gt;
|✔&lt;br /&gt;
|Used when switching between ad and content or content and ad.&lt;br /&gt;
|-&lt;br /&gt;
|[[loadMetadata (Browser)|loadMetadata]]&lt;br /&gt;
|15&lt;br /&gt;
|✔&lt;br /&gt;
|✔&lt;br /&gt;
|✔&lt;br /&gt;
|Used when there is a preroll ad that needs to be associated with content metadata. The loadMetadata will first be called to populate the content metadata values and then the loadMetadata for ad metadata will be called. This allows sending a content ping with the ad info, even if the user bails out during the preroll ad.&lt;br /&gt;
|-&lt;br /&gt;
|[[setPlayheadPosition (Browser)|setPlayheadPosition]]&lt;br /&gt;
|49&lt;br /&gt;
|✘&lt;br /&gt;
|✘&lt;br /&gt;
|✔&lt;br /&gt;
|Used to send the playhead position.&lt;br /&gt;
|-&lt;br /&gt;
|[[sendID3 (Browser)|sendID3]]&lt;br /&gt;
|55&lt;br /&gt;
|✔&lt;br /&gt;
|✘&lt;br /&gt;
|✘&lt;br /&gt;
|Used to send the ID3 metadata.&lt;br /&gt;
|-&lt;br /&gt;
|[[end (Browser)|end]]&lt;br /&gt;
|57&lt;br /&gt;
|✔&lt;br /&gt;
|✘&lt;br /&gt;
|✔&lt;br /&gt;
|This is triggered 1) at the end of the content stream, 2) if the user switches to another piece of content 3) when the browser is refreshed or closed&lt;br /&gt;
|-&lt;br /&gt;
|[[setVolume (Browser)|setVolume]]&lt;br /&gt;
|61&lt;br /&gt;
|✔&lt;br /&gt;
|✘&lt;br /&gt;
|✔&lt;br /&gt;
|Used to pass in the player volume levels in %. Default value is -1.&lt;br /&gt;
|-&lt;br /&gt;
|[[staticstart (Browser)|staticstart]]&lt;br /&gt;
|14&lt;br /&gt;
|✘&lt;br /&gt;
|✘&lt;br /&gt;
|✔&lt;br /&gt;
|Used to send the metadata for the static page.&lt;br /&gt;
|-&lt;br /&gt;
|[[StaticEnd (Browser)|staticend]]&lt;br /&gt;
|56&lt;br /&gt;
|✘&lt;br /&gt;
|✘&lt;br /&gt;
|✔&lt;br /&gt;
|In Single Page Application (SPA) it is imperative that staticend is called prior to the loading of new metadata. This allows the SDK to properly credit the previous section/content being viewed before measuring the new one.&lt;br /&gt;
|-&lt;br /&gt;
|[[onPaginate (Browser)|onPaginate]]&lt;br /&gt;
|30&lt;br /&gt;
|✘&lt;br /&gt;
|✘&lt;br /&gt;
|✔&lt;br /&gt;
|Used to initialize the SDK object&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>AmySockanathan</name></author>
	</entry>
	<entry>
		<id>https://nielsentest.mywikis.net/w/index.php?title=Domless_SDK_API_Reference&amp;diff=6937</id>
		<title>Domless SDK API Reference</title>
		<link rel="alternate" type="text/html" href="https://nielsentest.mywikis.net/w/index.php?title=Domless_SDK_API_Reference&amp;diff=6937"/>
		<updated>2025-11-25T13:45:34Z</updated>

		<summary type="html">&lt;p&gt;AmySockanathan: /* storage */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==License==&lt;br /&gt;
Nielsen SDK contains material that is protected by copyright laws, patent laws, trade secret laws, and by international treaty provisions and is Copyright © 2024 The Nielsen Company (US) LLC. All intellectual property rights and licenses therein are reserved by The Nielsen Company (US) LLC and its licensors. Please read the license agreement presented [https://engineeringportal.nielsen.com/wiki/Special:ClickThrough here], which must be accepted in order to download the Nielsen SDKs. For more information, reach out to your Nielsen Technical Account Manager(TAM).&lt;br /&gt;
&lt;br /&gt;
== Overview ==&lt;br /&gt;
The Nielsen DOM-less SDK provides APIs that allows our clients to integrate the Nielsen SDK in DOM-less environments, e.g., React Native, Node, etc.&lt;br /&gt;
&lt;br /&gt;
== DOM-less SDK Initialization ==&lt;br /&gt;
&lt;br /&gt;
=== Obtain the Nielsen Application ID (apid) ===&lt;br /&gt;
The Nielsen &amp;lt;code&amp;gt;apid&amp;lt;/code&amp;gt; is required to enable SDK functionality. Technical Account Manager will provide an apid for each player configuration. Browser SDK can support URLs that use any of the protocols – HTTPS and HTTP.&lt;br /&gt;
&lt;br /&gt;
=== Configure the DOM-less SDK ===&lt;br /&gt;
====Installation====&lt;br /&gt;
Install with &amp;lt;code&amp;gt;npm install &amp;lt;nowiki&amp;gt;https://github.com/NielsenDigitalSDK/bsdk-domless&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; and import the &amp;lt;code&amp;gt;BsdkInstance&amp;lt;/code&amp;gt; into video player component&lt;br /&gt;
 import { BsdkInstance } from 'bsdk-domless'&lt;br /&gt;
======status.ok()======&lt;br /&gt;
Initialization of the instance can be done with &amp;lt;code&amp;gt;status.ok()&amp;lt;/code&amp;gt; function or use Promise handling approach&lt;br /&gt;
 const instance = await new BsdkInstance(appID, instanceName, instanceMetadata, implementationHooks);&lt;br /&gt;
 &lt;br /&gt;
 if (instance &amp;amp;&amp;amp; instance.status.ok()) {&lt;br /&gt;
     expect(instance).not.toBe(undefined);&lt;br /&gt;
     expect(instance.status.ok()).toBe(true);&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Note: ImplementationHooks are mandatory for the DOM-less SDK instance. Please refer to the ImplementationHooks section below for details.&lt;br /&gt;
&lt;br /&gt;
====Exposed Interface====&lt;br /&gt;
The exposed interface is as follows:&lt;br /&gt;
&lt;br /&gt;
1. &amp;lt;code&amp;gt;`ggPM`&amp;lt;/code&amp;gt; - method to send messages to the Nielsen SDK&lt;br /&gt;
&lt;br /&gt;
2. &amp;lt;code&amp;gt;`processEvent`&amp;lt;/code&amp;gt; - method to send app state to the Nielsen SDK, e.g., focus, blur, appclose&lt;br /&gt;
=== Initialization Global Parameters ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
!'''Parameter'''&lt;br /&gt;
!'''Description'''&lt;br /&gt;
!'''Value'''&lt;br /&gt;
|-&lt;br /&gt;
|apid&lt;br /&gt;
|UniqueID assigned to player/site.&lt;br /&gt;
|'XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX'&lt;br /&gt;
|-&lt;br /&gt;
|instanceName&lt;br /&gt;
|Name of SDK instance&lt;br /&gt;
|&amp;quot;any string value&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|domlessEnv&lt;br /&gt;
|Type of Dom-less environment like ReactNative, Node, etc.&lt;br /&gt;
|&amp;quot;domlessEnv&amp;quot;: &amp;quot;1&amp;quot;, // For ReactNative&lt;br /&gt;
&amp;quot;domlessEnv&amp;quot;: &amp;quot;2&amp;quot;, // For Amazon&lt;br /&gt;
&lt;br /&gt;
&amp;quot;domlessEnv&amp;quot;: &amp;quot;3&amp;quot;, // For NodeJS&lt;br /&gt;
&lt;br /&gt;
“domlessEnv”: “4”, // For Custom&lt;br /&gt;
|-&lt;br /&gt;
|deviceId&lt;br /&gt;
|Device Identifier&lt;br /&gt;
|Alphanumeric string eg. &lt;br /&gt;
|-&lt;br /&gt;
|nol_sdkDebug&lt;br /&gt;
|Enables Nielsen console logging. Only required for testing&lt;br /&gt;
|&amp;quot;{nol_sdkDebug: &amp;quot;debug&amp;quot;})&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|optout&lt;br /&gt;
|User optout status&lt;br /&gt;
|&amp;quot;true&amp;quot;, &amp;quot;false&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|hem_sha256&lt;br /&gt;
|SHA256-hashed email address (client-supplied unique 32-character hexadecimal string)&lt;br /&gt;
|&amp;quot;tMmiiTI7IaAcPpQPFQ65uMVCWH8av9jw4cwf/F5HVRQ=&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|hem_sha1&lt;br /&gt;
|SHA1-hashed email address (client-supplied unique 32-character hexadecimal string)&lt;br /&gt;
|&amp;quot;XvBniTI7IaAcPpQPFQ65uMVCWH8av9jw4cwf/F5HVRQ=&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|hem_md5&lt;br /&gt;
|MD5-hashed email address (client-supplied unique 32-character hexadecimal string)&lt;br /&gt;
|&amp;quot;JnIbdTI7IaAcPpQPFQ65uMVCWH8av9jw4cwf/F5HVRQ=&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|uid2&lt;br /&gt;
|An identifier based on a user’s verifiable PII (e.g. hashed email). UID2.0 was initially created by The Trade Desk (TTD) and is now managed by Prebid.&lt;br /&gt;
|&amp;quot;MTKVpUAzwYAPnHrtfE0wlINOMzhU7UUEjjVdCdRu63k=&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|uid2_token&lt;br /&gt;
|Encrypted Unified ID 2.0&lt;br /&gt;
|&amp;quot;AgAAAAPFR0zA5ogv/yaAPiUsAdZPsfqS8Ql&lt;br /&gt;
DSGxAB+rr8yekFs3AjLYVk5qqqiyV2XHbSuwzHmxSlLeQeK QI1mp015jsNnpX5/xGgXldcgVz+gFnyh3T8/3agMwRmyrhC xG4oH2C7fc48AQk2eotE7FW0ZDEYM8fD9ZxDaxFUC/OV3OuZA&amp;amp;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|luid&lt;br /&gt;
|Living Unit ID - Experian Household ID&lt;br /&gt;
'''Note: This parameter is applicable only for CTV and First Party Livestream data'''&lt;br /&gt;
|&amp;quot;B0EOFEDgD&amp;quot;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Implementation Hooks ===&lt;br /&gt;
This object captures the required entities for the DOM-less SDK to operate correctly. These are normally platform dependent and are expected to be passed on to the DOM-less SDK as part of its initialization. See below for the descriptions of each key.&lt;br /&gt;
&lt;br /&gt;
==== '''log''' ====&lt;br /&gt;
Log the DOM-less SDK messages to an external stream, e.g. the browser console, stdout.&lt;br /&gt;
&lt;br /&gt;
e.g. Log.debug('debug', 'NIELSEN TAGS EXPECTED TO FIRE:')&lt;br /&gt;
&lt;br /&gt;
===== Methods =====&lt;br /&gt;
&amp;lt;blockquote&amp;gt;info()&lt;br /&gt;
&lt;br /&gt;
Log.info(label: string, ...message: string[]): void&lt;br /&gt;
&lt;br /&gt;
debug()&lt;br /&gt;
&lt;br /&gt;
Log.debug(label: string, ...message: string[]): void&lt;br /&gt;
&lt;br /&gt;
warn()&lt;br /&gt;
&lt;br /&gt;
Log.warn(label: string, ...message: string[]): void&lt;br /&gt;
&lt;br /&gt;
error()&lt;br /&gt;
&lt;br /&gt;
Log.error(label: string, ...message: string[]): void&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Parameters =====&lt;br /&gt;
&amp;lt;blockquote&amp;gt;label Required&lt;br /&gt;
&lt;br /&gt;
● string - severity type, e.g. info, debug, warn, error or custom label&lt;br /&gt;
&lt;br /&gt;
message Required&lt;br /&gt;
&lt;br /&gt;
● string - message that will be output to the console&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== storage ====&lt;br /&gt;
Persistent storage of key/values, similar in behavior to browser localStorage.&lt;br /&gt;
&lt;br /&gt;
e.g. storage.setItem('nol_lsid', 'umy3w4ik9usw2ppqmw2vkecckxfob1697308388')&lt;br /&gt;
&lt;br /&gt;
===== Methods =====&lt;br /&gt;
&amp;lt;blockquote&amp;gt;setItem()&lt;br /&gt;
&lt;br /&gt;
storage.setItem(key: string, value: string)&lt;br /&gt;
&lt;br /&gt;
getItem()&lt;br /&gt;
&lt;br /&gt;
storage.getItem(key: string)&lt;br /&gt;
&lt;br /&gt;
removeItem()&lt;br /&gt;
&lt;br /&gt;
storage.removeItem(key: string)&lt;br /&gt;
&lt;br /&gt;
clear()&lt;br /&gt;
&lt;br /&gt;
storage.clear()&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== fetch ====&lt;br /&gt;
Function to fetch resources from the network. Required for the transmission of the DOM-less SDK requests (pings) to the Nielsen endpoints.&lt;br /&gt;
&lt;br /&gt;
e.g. Fetch(resource: string, options: object)&lt;br /&gt;
&lt;br /&gt;
===== Parameters =====&lt;br /&gt;
&amp;lt;blockquote&amp;gt;resource Required&lt;br /&gt;
&lt;br /&gt;
● A string that provides the URL of the resource to fetch&lt;br /&gt;
&lt;br /&gt;
options Optional Object containing settings to apply to the request:&lt;br /&gt;
&lt;br /&gt;
method&lt;br /&gt;
&lt;br /&gt;
● string - request method: &amp;quot;GET&amp;quot;, &amp;quot;POST&amp;quot;. If one is not provided SDK will default to &amp;quot;GET&amp;quot;&lt;br /&gt;
&lt;br /&gt;
headers&lt;br /&gt;
&lt;br /&gt;
● object - headers to add to the outgoing request, an object literal with String values&lt;br /&gt;
&lt;br /&gt;
body&lt;br /&gt;
&lt;br /&gt;
● string - body to add to the request; SDK will send out string&lt;br /&gt;
&lt;br /&gt;
mode&lt;br /&gt;
&lt;br /&gt;
● string - mode for request: cors, no-cors, same-origin&lt;br /&gt;
&lt;br /&gt;
referrer&lt;br /&gt;
&lt;br /&gt;
● string - a string specifying the referrer of the request&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====='''''&amp;lt;pre style=&amp;quot;color: green; font-weight: bold; font-size: 20px&amp;quot;&amp;gt;Note: Implementation Hooks are mandatory for the DOM-less SDK to function as expected.&amp;lt;/pre&amp;gt;'''''=====&lt;br /&gt;
&lt;br /&gt;
==== Nielsen Debug Node.js Server for Event Tracking ====&lt;br /&gt;
We are excited to announce the beta version of our Debug Node.js server, designed to track requests and events sent from our Dom-less SDK using WebSocket connections. While this feature is not officially released, we are currently looking for users interested in beta testing.&lt;br /&gt;
&lt;br /&gt;
If you'd like to try this tool and provide feedback, please reach out to your Nielsen Technical Account Manager (TAM) for more information. Your insights would be invaluable in helping us refine this feature for a future release!&lt;br /&gt;
&lt;br /&gt;
== DOM-less SDK API Methods &amp;amp; Properties ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
!Method/Property&lt;br /&gt;
!Event #&lt;br /&gt;
!DTVR&lt;br /&gt;
!DAR&lt;br /&gt;
!DCR&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|[[play (Browser)|play]]&lt;br /&gt;
|5&lt;br /&gt;
|✔&lt;br /&gt;
|✘&lt;br /&gt;
|✔&lt;br /&gt;
|Used when there is an ID3 fed product such as DTVR and the client does not want to send in all the CMS metadata that is sent in loadMetadata. This allows the client to send in at least the required “channel name” value associated to the ID3 feed. When the client passes in the channelName, they can change the CMS data stored by passing new values. If this event is not called then the “channel name” value populated will be the default value of “defaultChannelName”.&lt;br /&gt;
|-&lt;br /&gt;
|[[stop (Browser)|stop]]&lt;br /&gt;
|7&lt;br /&gt;
|✘&lt;br /&gt;
|✘&lt;br /&gt;
|✔&lt;br /&gt;
|Used when switching between ad and content or content and ad.&lt;br /&gt;
|-&lt;br /&gt;
|[[loadMetadata (Browser)|loadMetadata]]&lt;br /&gt;
|15&lt;br /&gt;
|✔&lt;br /&gt;
|✔&lt;br /&gt;
|✔&lt;br /&gt;
|Used when there is a preroll ad that needs to be associated with content metadata. The loadMetadata will first be called to populate the content metadata values and then the loadMetadata for ad metadata will be called. This allows sending a content ping with the ad info, even if the user bails out during the preroll ad.&lt;br /&gt;
|-&lt;br /&gt;
|[[setPlayheadPosition (Browser)|setPlayheadPosition]]&lt;br /&gt;
|49&lt;br /&gt;
|✘&lt;br /&gt;
|✘&lt;br /&gt;
|✔&lt;br /&gt;
|Used to send the playhead position.&lt;br /&gt;
|-&lt;br /&gt;
|[[sendID3 (Browser)|sendID3]]&lt;br /&gt;
|55&lt;br /&gt;
|✔&lt;br /&gt;
|✘&lt;br /&gt;
|✘&lt;br /&gt;
|Used to send the ID3 metadata.&lt;br /&gt;
|-&lt;br /&gt;
|[[end (Browser)|end]]&lt;br /&gt;
|57&lt;br /&gt;
|✔&lt;br /&gt;
|✘&lt;br /&gt;
|✔&lt;br /&gt;
|This is triggered 1) at the end of the content stream, 2) if the user switches to another piece of content 3) when the browser is refreshed or closed&lt;br /&gt;
|-&lt;br /&gt;
|[[setVolume (Browser)|setVolume]]&lt;br /&gt;
|61&lt;br /&gt;
|✔&lt;br /&gt;
|✘&lt;br /&gt;
|✔&lt;br /&gt;
|Used to pass in the player volume levels in %. Default value is -1.&lt;br /&gt;
|-&lt;br /&gt;
|[[staticstart (Browser)|staticstart]]&lt;br /&gt;
|14&lt;br /&gt;
|✘&lt;br /&gt;
|✘&lt;br /&gt;
|✔&lt;br /&gt;
|Used to send the metadata for the static page.&lt;br /&gt;
|-&lt;br /&gt;
|[[StaticEnd (Browser)|staticend]]&lt;br /&gt;
|56&lt;br /&gt;
|✘&lt;br /&gt;
|✘&lt;br /&gt;
|✔&lt;br /&gt;
|In Single Page Application (SPA) it is imperative that staticend is called prior to the loading of new metadata. This allows the SDK to properly credit the previous section/content being viewed before measuring the new one.&lt;br /&gt;
|-&lt;br /&gt;
|[[onPaginate (Browser)|onPaginate]]&lt;br /&gt;
|30&lt;br /&gt;
|✘&lt;br /&gt;
|✘&lt;br /&gt;
|✔&lt;br /&gt;
|Used to initialize the SDK object&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>AmySockanathan</name></author>
	</entry>
	<entry>
		<id>https://nielsentest.mywikis.net/w/index.php?title=Domless_SDK_API_Reference&amp;diff=6936</id>
		<title>Domless SDK API Reference</title>
		<link rel="alternate" type="text/html" href="https://nielsentest.mywikis.net/w/index.php?title=Domless_SDK_API_Reference&amp;diff=6936"/>
		<updated>2025-11-25T13:17:19Z</updated>

		<summary type="html">&lt;p&gt;AmySockanathan: /* Methods */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==License==&lt;br /&gt;
Nielsen SDK contains material that is protected by copyright laws, patent laws, trade secret laws, and by international treaty provisions and is Copyright © 2024 The Nielsen Company (US) LLC. All intellectual property rights and licenses therein are reserved by The Nielsen Company (US) LLC and its licensors. Please read the license agreement presented [https://engineeringportal.nielsen.com/wiki/Special:ClickThrough here], which must be accepted in order to download the Nielsen SDKs. For more information, reach out to your Nielsen Technical Account Manager(TAM).&lt;br /&gt;
&lt;br /&gt;
== Overview ==&lt;br /&gt;
The Nielsen DOM-less SDK provides APIs that allows our clients to integrate the Nielsen SDK in DOM-less environments, e.g., React Native, Node, etc.&lt;br /&gt;
&lt;br /&gt;
== DOM-less SDK Initialization ==&lt;br /&gt;
&lt;br /&gt;
=== Obtain the Nielsen Application ID (apid) ===&lt;br /&gt;
The Nielsen &amp;lt;code&amp;gt;apid&amp;lt;/code&amp;gt; is required to enable SDK functionality. Technical Account Manager will provide an apid for each player configuration. Browser SDK can support URLs that use any of the protocols – HTTPS and HTTP.&lt;br /&gt;
&lt;br /&gt;
=== Configure the DOM-less SDK ===&lt;br /&gt;
====Installation====&lt;br /&gt;
Install with &amp;lt;code&amp;gt;npm install &amp;lt;nowiki&amp;gt;https://github.com/NielsenDigitalSDK/bsdk-domless&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; and import the &amp;lt;code&amp;gt;BsdkInstance&amp;lt;/code&amp;gt; into video player component&lt;br /&gt;
 import { BsdkInstance } from 'bsdk-domless'&lt;br /&gt;
======status.ok()======&lt;br /&gt;
Initialization of the instance can be done with &amp;lt;code&amp;gt;status.ok()&amp;lt;/code&amp;gt; function or use Promise handling approach&lt;br /&gt;
 const instance = await new BsdkInstance(appID, instanceName, instanceMetadata, implementationHooks);&lt;br /&gt;
 &lt;br /&gt;
 if (instance &amp;amp;&amp;amp; instance.status.ok()) {&lt;br /&gt;
     expect(instance).not.toBe(undefined);&lt;br /&gt;
     expect(instance.status.ok()).toBe(true);&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Note: ImplementationHooks are mandatory for the DOM-less SDK instance. Please refer to the ImplementationHooks section below for details.&lt;br /&gt;
&lt;br /&gt;
====Exposed Interface====&lt;br /&gt;
The exposed interface is as follows:&lt;br /&gt;
&lt;br /&gt;
1. &amp;lt;code&amp;gt;`ggPM`&amp;lt;/code&amp;gt; - method to send messages to the Nielsen SDK&lt;br /&gt;
&lt;br /&gt;
2. &amp;lt;code&amp;gt;`processEvent`&amp;lt;/code&amp;gt; - method to send app state to the Nielsen SDK, e.g., focus, blur, appclose&lt;br /&gt;
=== Initialization Global Parameters ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
!'''Parameter'''&lt;br /&gt;
!'''Description'''&lt;br /&gt;
!'''Value'''&lt;br /&gt;
|-&lt;br /&gt;
|apid&lt;br /&gt;
|UniqueID assigned to player/site.&lt;br /&gt;
|'XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX'&lt;br /&gt;
|-&lt;br /&gt;
|instanceName&lt;br /&gt;
|Name of SDK instance&lt;br /&gt;
|&amp;quot;any string value&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|domlessEnv&lt;br /&gt;
|Type of Dom-less environment like ReactNative, Node, etc.&lt;br /&gt;
|&amp;quot;domlessEnv&amp;quot;: &amp;quot;1&amp;quot;, // For ReactNative&lt;br /&gt;
&amp;quot;domlessEnv&amp;quot;: &amp;quot;2&amp;quot;, // For Amazon&lt;br /&gt;
&lt;br /&gt;
&amp;quot;domlessEnv&amp;quot;: &amp;quot;3&amp;quot;, // For NodeJS&lt;br /&gt;
&lt;br /&gt;
“domlessEnv”: “4”, // For Custom&lt;br /&gt;
|-&lt;br /&gt;
|deviceId&lt;br /&gt;
|Device Identifier&lt;br /&gt;
|Alphanumeric string eg. &lt;br /&gt;
|-&lt;br /&gt;
|nol_sdkDebug&lt;br /&gt;
|Enables Nielsen console logging. Only required for testing&lt;br /&gt;
|&amp;quot;{nol_sdkDebug: &amp;quot;debug&amp;quot;})&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|optout&lt;br /&gt;
|User optout status&lt;br /&gt;
|&amp;quot;true&amp;quot;, &amp;quot;false&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|hem_sha256&lt;br /&gt;
|SHA256-hashed email address (client-supplied unique 32-character hexadecimal string)&lt;br /&gt;
|&amp;quot;tMmiiTI7IaAcPpQPFQ65uMVCWH8av9jw4cwf/F5HVRQ=&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|hem_sha1&lt;br /&gt;
|SHA1-hashed email address (client-supplied unique 32-character hexadecimal string)&lt;br /&gt;
|&amp;quot;XvBniTI7IaAcPpQPFQ65uMVCWH8av9jw4cwf/F5HVRQ=&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|hem_md5&lt;br /&gt;
|MD5-hashed email address (client-supplied unique 32-character hexadecimal string)&lt;br /&gt;
|&amp;quot;JnIbdTI7IaAcPpQPFQ65uMVCWH8av9jw4cwf/F5HVRQ=&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|uid2&lt;br /&gt;
|An identifier based on a user’s verifiable PII (e.g. hashed email). UID2.0 was initially created by The Trade Desk (TTD) and is now managed by Prebid.&lt;br /&gt;
|&amp;quot;MTKVpUAzwYAPnHrtfE0wlINOMzhU7UUEjjVdCdRu63k=&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|uid2_token&lt;br /&gt;
|Encrypted Unified ID 2.0&lt;br /&gt;
|&amp;quot;AgAAAAPFR0zA5ogv/yaAPiUsAdZPsfqS8Ql&lt;br /&gt;
DSGxAB+rr8yekFs3AjLYVk5qqqiyV2XHbSuwzHmxSlLeQeK QI1mp015jsNnpX5/xGgXldcgVz+gFnyh3T8/3agMwRmyrhC xG4oH2C7fc48AQk2eotE7FW0ZDEYM8fD9ZxDaxFUC/OV3OuZA&amp;amp;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|luid&lt;br /&gt;
|Living Unit ID - Experian Household ID&lt;br /&gt;
'''Note: This parameter is applicable only for CTV and First Party Livestream data'''&lt;br /&gt;
|&amp;quot;B0EOFEDgD&amp;quot;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Implementation Hooks ===&lt;br /&gt;
This object captures the required entities for the DOM-less SDK to operate correctly. These are normally platform dependent and are expected to be passed on to the DOM-less SDK as part of its initialization. See below for the descriptions of each key.&lt;br /&gt;
&lt;br /&gt;
==== '''log''' ====&lt;br /&gt;
Log the DOM-less SDK messages to an external stream, e.g. the browser console, stdout.&lt;br /&gt;
&lt;br /&gt;
e.g. Log.debug('debug', 'NIELSEN TAGS EXPECTED TO FIRE:')&lt;br /&gt;
&lt;br /&gt;
===== Methods =====&lt;br /&gt;
&amp;lt;blockquote&amp;gt;info()&lt;br /&gt;
&lt;br /&gt;
Log.info(label: string, ...message: string[]): void&lt;br /&gt;
&lt;br /&gt;
debug()&lt;br /&gt;
&lt;br /&gt;
Log.debug(label: string, ...message: string[]): void&lt;br /&gt;
&lt;br /&gt;
warn()&lt;br /&gt;
&lt;br /&gt;
Log.warn(label: string, ...message: string[]): void&lt;br /&gt;
&lt;br /&gt;
error()&lt;br /&gt;
&lt;br /&gt;
Log.error(label: string, ...message: string[]): void&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Parameters =====&lt;br /&gt;
&amp;lt;blockquote&amp;gt;label Required&lt;br /&gt;
&lt;br /&gt;
● string - severity type, e.g. info, debug, warn, error or custom label&lt;br /&gt;
&lt;br /&gt;
message Required&lt;br /&gt;
&lt;br /&gt;
● string - message that will be output to the console&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== storage ====&lt;br /&gt;
Persistent storage of key/values, similar in behavior to browser localStorage.&lt;br /&gt;
&lt;br /&gt;
e.g. storage.set('nol_lsid', 'umy3w4ik9usw2ppqmw2vkecckxfob1697308388')&lt;br /&gt;
&lt;br /&gt;
===== Methods =====&lt;br /&gt;
&amp;lt;blockquote&amp;gt;setItem()&lt;br /&gt;
&lt;br /&gt;
storage.setItem(key: string, value: string)&lt;br /&gt;
&lt;br /&gt;
getItem()&lt;br /&gt;
&lt;br /&gt;
storage.getItem(key: string)&lt;br /&gt;
&lt;br /&gt;
removeItem()&lt;br /&gt;
&lt;br /&gt;
storage.removeItem(key: string)&lt;br /&gt;
&lt;br /&gt;
clear()&lt;br /&gt;
&lt;br /&gt;
storage.clear()&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== fetch ====&lt;br /&gt;
Function to fetch resources from the network. Required for the transmission of the DOM-less SDK requests (pings) to the Nielsen endpoints.&lt;br /&gt;
&lt;br /&gt;
e.g. Fetch(resource: string, options: object)&lt;br /&gt;
&lt;br /&gt;
===== Parameters =====&lt;br /&gt;
&amp;lt;blockquote&amp;gt;resource Required&lt;br /&gt;
&lt;br /&gt;
● A string that provides the URL of the resource to fetch&lt;br /&gt;
&lt;br /&gt;
options Optional Object containing settings to apply to the request:&lt;br /&gt;
&lt;br /&gt;
method&lt;br /&gt;
&lt;br /&gt;
● string - request method: &amp;quot;GET&amp;quot;, &amp;quot;POST&amp;quot;. If one is not provided SDK will default to &amp;quot;GET&amp;quot;&lt;br /&gt;
&lt;br /&gt;
headers&lt;br /&gt;
&lt;br /&gt;
● object - headers to add to the outgoing request, an object literal with String values&lt;br /&gt;
&lt;br /&gt;
body&lt;br /&gt;
&lt;br /&gt;
● string - body to add to the request; SDK will send out string&lt;br /&gt;
&lt;br /&gt;
mode&lt;br /&gt;
&lt;br /&gt;
● string - mode for request: cors, no-cors, same-origin&lt;br /&gt;
&lt;br /&gt;
referrer&lt;br /&gt;
&lt;br /&gt;
● string - a string specifying the referrer of the request&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====='''''&amp;lt;pre style=&amp;quot;color: green; font-weight: bold; font-size: 20px&amp;quot;&amp;gt;Note: Implementation Hooks are mandatory for the DOM-less SDK to function as expected.&amp;lt;/pre&amp;gt;'''''=====&lt;br /&gt;
&lt;br /&gt;
==== Nielsen Debug Node.js Server for Event Tracking ====&lt;br /&gt;
We are excited to announce the beta version of our Debug Node.js server, designed to track requests and events sent from our Dom-less SDK using WebSocket connections. While this feature is not officially released, we are currently looking for users interested in beta testing.&lt;br /&gt;
&lt;br /&gt;
If you'd like to try this tool and provide feedback, please reach out to your Nielsen Technical Account Manager (TAM) for more information. Your insights would be invaluable in helping us refine this feature for a future release!&lt;br /&gt;
&lt;br /&gt;
== DOM-less SDK API Methods &amp;amp; Properties ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
!Method/Property&lt;br /&gt;
!Event #&lt;br /&gt;
!DTVR&lt;br /&gt;
!DAR&lt;br /&gt;
!DCR&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|[[play (Browser)|play]]&lt;br /&gt;
|5&lt;br /&gt;
|✔&lt;br /&gt;
|✘&lt;br /&gt;
|✔&lt;br /&gt;
|Used when there is an ID3 fed product such as DTVR and the client does not want to send in all the CMS metadata that is sent in loadMetadata. This allows the client to send in at least the required “channel name” value associated to the ID3 feed. When the client passes in the channelName, they can change the CMS data stored by passing new values. If this event is not called then the “channel name” value populated will be the default value of “defaultChannelName”.&lt;br /&gt;
|-&lt;br /&gt;
|[[stop (Browser)|stop]]&lt;br /&gt;
|7&lt;br /&gt;
|✘&lt;br /&gt;
|✘&lt;br /&gt;
|✔&lt;br /&gt;
|Used when switching between ad and content or content and ad.&lt;br /&gt;
|-&lt;br /&gt;
|[[loadMetadata (Browser)|loadMetadata]]&lt;br /&gt;
|15&lt;br /&gt;
|✔&lt;br /&gt;
|✔&lt;br /&gt;
|✔&lt;br /&gt;
|Used when there is a preroll ad that needs to be associated with content metadata. The loadMetadata will first be called to populate the content metadata values and then the loadMetadata for ad metadata will be called. This allows sending a content ping with the ad info, even if the user bails out during the preroll ad.&lt;br /&gt;
|-&lt;br /&gt;
|[[setPlayheadPosition (Browser)|setPlayheadPosition]]&lt;br /&gt;
|49&lt;br /&gt;
|✘&lt;br /&gt;
|✘&lt;br /&gt;
|✔&lt;br /&gt;
|Used to send the playhead position.&lt;br /&gt;
|-&lt;br /&gt;
|[[sendID3 (Browser)|sendID3]]&lt;br /&gt;
|55&lt;br /&gt;
|✔&lt;br /&gt;
|✘&lt;br /&gt;
|✘&lt;br /&gt;
|Used to send the ID3 metadata.&lt;br /&gt;
|-&lt;br /&gt;
|[[end (Browser)|end]]&lt;br /&gt;
|57&lt;br /&gt;
|✔&lt;br /&gt;
|✘&lt;br /&gt;
|✔&lt;br /&gt;
|This is triggered 1) at the end of the content stream, 2) if the user switches to another piece of content 3) when the browser is refreshed or closed&lt;br /&gt;
|-&lt;br /&gt;
|[[setVolume (Browser)|setVolume]]&lt;br /&gt;
|61&lt;br /&gt;
|✔&lt;br /&gt;
|✘&lt;br /&gt;
|✔&lt;br /&gt;
|Used to pass in the player volume levels in %. Default value is -1.&lt;br /&gt;
|-&lt;br /&gt;
|[[staticstart (Browser)|staticstart]]&lt;br /&gt;
|14&lt;br /&gt;
|✘&lt;br /&gt;
|✘&lt;br /&gt;
|✔&lt;br /&gt;
|Used to send the metadata for the static page.&lt;br /&gt;
|-&lt;br /&gt;
|[[StaticEnd (Browser)|staticend]]&lt;br /&gt;
|56&lt;br /&gt;
|✘&lt;br /&gt;
|✘&lt;br /&gt;
|✔&lt;br /&gt;
|In Single Page Application (SPA) it is imperative that staticend is called prior to the loading of new metadata. This allows the SDK to properly credit the previous section/content being viewed before measuring the new one.&lt;br /&gt;
|-&lt;br /&gt;
|[[onPaginate (Browser)|onPaginate]]&lt;br /&gt;
|30&lt;br /&gt;
|✘&lt;br /&gt;
|✘&lt;br /&gt;
|✔&lt;br /&gt;
|Used to initialize the SDK object&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>AmySockanathan</name></author>
	</entry>
	<entry>
		<id>https://nielsentest.mywikis.net/w/index.php?title=Domless_SDK_API_Reference&amp;diff=6935</id>
		<title>Domless SDK API Reference</title>
		<link rel="alternate" type="text/html" href="https://nielsentest.mywikis.net/w/index.php?title=Domless_SDK_API_Reference&amp;diff=6935"/>
		<updated>2025-11-25T00:55:22Z</updated>

		<summary type="html">&lt;p&gt;AmySockanathan: Replace Storage set, get and remove function names with setItem, getItem and removeItem.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==License==&lt;br /&gt;
Nielsen SDK contains material that is protected by copyright laws, patent laws, trade secret laws, and by international treaty provisions and is Copyright © 2024 The Nielsen Company (US) LLC. All intellectual property rights and licenses therein are reserved by The Nielsen Company (US) LLC and its licensors. Please read the license agreement presented [https://engineeringportal.nielsen.com/wiki/Special:ClickThrough here], which must be accepted in order to download the Nielsen SDKs. For more information, reach out to your Nielsen Technical Account Manager(TAM).&lt;br /&gt;
&lt;br /&gt;
== Overview ==&lt;br /&gt;
The Nielsen DOM-less SDK provides APIs that allows our clients to integrate the Nielsen SDK in DOM-less environments, e.g., React Native, Node, etc.&lt;br /&gt;
&lt;br /&gt;
== DOM-less SDK Initialization ==&lt;br /&gt;
&lt;br /&gt;
=== Obtain the Nielsen Application ID (apid) ===&lt;br /&gt;
The Nielsen &amp;lt;code&amp;gt;apid&amp;lt;/code&amp;gt; is required to enable SDK functionality. Technical Account Manager will provide an apid for each player configuration. Browser SDK can support URLs that use any of the protocols – HTTPS and HTTP.&lt;br /&gt;
&lt;br /&gt;
=== Configure the DOM-less SDK ===&lt;br /&gt;
====Installation====&lt;br /&gt;
Install with &amp;lt;code&amp;gt;npm install &amp;lt;nowiki&amp;gt;https://github.com/NielsenDigitalSDK/bsdk-domless&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; and import the &amp;lt;code&amp;gt;BsdkInstance&amp;lt;/code&amp;gt; into video player component&lt;br /&gt;
 import { BsdkInstance } from 'bsdk-domless'&lt;br /&gt;
======status.ok()======&lt;br /&gt;
Initialization of the instance can be done with &amp;lt;code&amp;gt;status.ok()&amp;lt;/code&amp;gt; function or use Promise handling approach&lt;br /&gt;
 const instance = await new BsdkInstance(appID, instanceName, instanceMetadata, implementationHooks);&lt;br /&gt;
 &lt;br /&gt;
 if (instance &amp;amp;&amp;amp; instance.status.ok()) {&lt;br /&gt;
     expect(instance).not.toBe(undefined);&lt;br /&gt;
     expect(instance.status.ok()).toBe(true);&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Note: ImplementationHooks are mandatory for the DOM-less SDK instance. Please refer to the ImplementationHooks section below for details.&lt;br /&gt;
&lt;br /&gt;
====Exposed Interface====&lt;br /&gt;
The exposed interface is as follows:&lt;br /&gt;
&lt;br /&gt;
1. &amp;lt;code&amp;gt;`ggPM`&amp;lt;/code&amp;gt; - method to send messages to the Nielsen SDK&lt;br /&gt;
&lt;br /&gt;
2. &amp;lt;code&amp;gt;`processEvent`&amp;lt;/code&amp;gt; - method to send app state to the Nielsen SDK, e.g., focus, blur, appclose&lt;br /&gt;
=== Initialization Global Parameters ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
!'''Parameter'''&lt;br /&gt;
!'''Description'''&lt;br /&gt;
!'''Value'''&lt;br /&gt;
|-&lt;br /&gt;
|apid&lt;br /&gt;
|UniqueID assigned to player/site.&lt;br /&gt;
|'XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX'&lt;br /&gt;
|-&lt;br /&gt;
|instanceName&lt;br /&gt;
|Name of SDK instance&lt;br /&gt;
|&amp;quot;any string value&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|domlessEnv&lt;br /&gt;
|Type of Dom-less environment like ReactNative, Node, etc.&lt;br /&gt;
|&amp;quot;domlessEnv&amp;quot;: &amp;quot;1&amp;quot;, // For ReactNative&lt;br /&gt;
&amp;quot;domlessEnv&amp;quot;: &amp;quot;2&amp;quot;, // For Amazon&lt;br /&gt;
&lt;br /&gt;
&amp;quot;domlessEnv&amp;quot;: &amp;quot;3&amp;quot;, // For NodeJS&lt;br /&gt;
&lt;br /&gt;
“domlessEnv”: “4”, // For Custom&lt;br /&gt;
|-&lt;br /&gt;
|deviceId&lt;br /&gt;
|Device Identifier&lt;br /&gt;
|Alphanumeric string eg. &lt;br /&gt;
|-&lt;br /&gt;
|nol_sdkDebug&lt;br /&gt;
|Enables Nielsen console logging. Only required for testing&lt;br /&gt;
|&amp;quot;{nol_sdkDebug: &amp;quot;debug&amp;quot;})&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|optout&lt;br /&gt;
|User optout status&lt;br /&gt;
|&amp;quot;true&amp;quot;, &amp;quot;false&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|hem_sha256&lt;br /&gt;
|SHA256-hashed email address (client-supplied unique 32-character hexadecimal string)&lt;br /&gt;
|&amp;quot;tMmiiTI7IaAcPpQPFQ65uMVCWH8av9jw4cwf/F5HVRQ=&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|hem_sha1&lt;br /&gt;
|SHA1-hashed email address (client-supplied unique 32-character hexadecimal string)&lt;br /&gt;
|&amp;quot;XvBniTI7IaAcPpQPFQ65uMVCWH8av9jw4cwf/F5HVRQ=&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|hem_md5&lt;br /&gt;
|MD5-hashed email address (client-supplied unique 32-character hexadecimal string)&lt;br /&gt;
|&amp;quot;JnIbdTI7IaAcPpQPFQ65uMVCWH8av9jw4cwf/F5HVRQ=&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|uid2&lt;br /&gt;
|An identifier based on a user’s verifiable PII (e.g. hashed email). UID2.0 was initially created by The Trade Desk (TTD) and is now managed by Prebid.&lt;br /&gt;
|&amp;quot;MTKVpUAzwYAPnHrtfE0wlINOMzhU7UUEjjVdCdRu63k=&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|uid2_token&lt;br /&gt;
|Encrypted Unified ID 2.0&lt;br /&gt;
|&amp;quot;AgAAAAPFR0zA5ogv/yaAPiUsAdZPsfqS8Ql&lt;br /&gt;
DSGxAB+rr8yekFs3AjLYVk5qqqiyV2XHbSuwzHmxSlLeQeK QI1mp015jsNnpX5/xGgXldcgVz+gFnyh3T8/3agMwRmyrhC xG4oH2C7fc48AQk2eotE7FW0ZDEYM8fD9ZxDaxFUC/OV3OuZA&amp;amp;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|luid&lt;br /&gt;
|Living Unit ID - Experian Household ID&lt;br /&gt;
'''Note: This parameter is applicable only for CTV and First Party Livestream data'''&lt;br /&gt;
|&amp;quot;B0EOFEDgD&amp;quot;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Implementation Hooks ===&lt;br /&gt;
This object captures the required entities for the DOM-less SDK to operate correctly. These are normally platform dependent and are expected to be passed on to the DOM-less SDK as part of its initialization. See below for the descriptions of each key.&lt;br /&gt;
&lt;br /&gt;
==== '''log''' ====&lt;br /&gt;
Log the DOM-less SDK messages to an external stream, e.g. the browser console, stdout.&lt;br /&gt;
&lt;br /&gt;
e.g. Log.debug('debug', 'NIELSEN TAGS EXPECTED TO FIRE:')&lt;br /&gt;
&lt;br /&gt;
===== Methods =====&lt;br /&gt;
&amp;lt;blockquote&amp;gt;info()&lt;br /&gt;
&lt;br /&gt;
Log.info(label: string, ...message: string[]): void&lt;br /&gt;
&lt;br /&gt;
debug()&lt;br /&gt;
&lt;br /&gt;
Log.debug(label: string, ...message: string[]): void&lt;br /&gt;
&lt;br /&gt;
warn()&lt;br /&gt;
&lt;br /&gt;
Log.warn(label: string, ...message: string[]): void&lt;br /&gt;
&lt;br /&gt;
error()&lt;br /&gt;
&lt;br /&gt;
Log.error(label: string, ...message: string[]): void&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Parameters =====&lt;br /&gt;
&amp;lt;blockquote&amp;gt;label Required&lt;br /&gt;
&lt;br /&gt;
● string - severity type, e.g. info, debug, warn, error or custom label&lt;br /&gt;
&lt;br /&gt;
message Required&lt;br /&gt;
&lt;br /&gt;
● string - message that will be output to the console&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== storage ====&lt;br /&gt;
Persistent storage of key/values, similar in behavior to browser localStorage.&lt;br /&gt;
&lt;br /&gt;
e.g. storage.set('nol_lsid', 'umy3w4ik9usw2ppqmw2vkecckxfob1697308388')&lt;br /&gt;
&lt;br /&gt;
===== Methods =====&lt;br /&gt;
&amp;lt;blockquote&amp;gt;setItem()&lt;br /&gt;
&lt;br /&gt;
storage.set(key: string, value: string)&lt;br /&gt;
&lt;br /&gt;
getItem()&lt;br /&gt;
&lt;br /&gt;
storage.get(key: string)&lt;br /&gt;
&lt;br /&gt;
removeItem()&lt;br /&gt;
&lt;br /&gt;
storage.remove(key: string)&lt;br /&gt;
&lt;br /&gt;
clear()&lt;br /&gt;
&lt;br /&gt;
storage.clear()&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== fetch ====&lt;br /&gt;
Function to fetch resources from the network. Required for the transmission of the DOM-less SDK requests (pings) to the Nielsen endpoints.&lt;br /&gt;
&lt;br /&gt;
e.g. Fetch(resource: string, options: object)&lt;br /&gt;
&lt;br /&gt;
===== Parameters =====&lt;br /&gt;
&amp;lt;blockquote&amp;gt;resource Required&lt;br /&gt;
&lt;br /&gt;
● A string that provides the URL of the resource to fetch&lt;br /&gt;
&lt;br /&gt;
options Optional Object containing settings to apply to the request:&lt;br /&gt;
&lt;br /&gt;
method&lt;br /&gt;
&lt;br /&gt;
● string - request method: &amp;quot;GET&amp;quot;, &amp;quot;POST&amp;quot;. If one is not provided SDK will default to &amp;quot;GET&amp;quot;&lt;br /&gt;
&lt;br /&gt;
headers&lt;br /&gt;
&lt;br /&gt;
● object - headers to add to the outgoing request, an object literal with String values&lt;br /&gt;
&lt;br /&gt;
body&lt;br /&gt;
&lt;br /&gt;
● string - body to add to the request; SDK will send out string&lt;br /&gt;
&lt;br /&gt;
mode&lt;br /&gt;
&lt;br /&gt;
● string - mode for request: cors, no-cors, same-origin&lt;br /&gt;
&lt;br /&gt;
referrer&lt;br /&gt;
&lt;br /&gt;
● string - a string specifying the referrer of the request&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====='''''&amp;lt;pre style=&amp;quot;color: green; font-weight: bold; font-size: 20px&amp;quot;&amp;gt;Note: Implementation Hooks are mandatory for the DOM-less SDK to function as expected.&amp;lt;/pre&amp;gt;'''''=====&lt;br /&gt;
&lt;br /&gt;
==== Nielsen Debug Node.js Server for Event Tracking ====&lt;br /&gt;
We are excited to announce the beta version of our Debug Node.js server, designed to track requests and events sent from our Dom-less SDK using WebSocket connections. While this feature is not officially released, we are currently looking for users interested in beta testing.&lt;br /&gt;
&lt;br /&gt;
If you'd like to try this tool and provide feedback, please reach out to your Nielsen Technical Account Manager (TAM) for more information. Your insights would be invaluable in helping us refine this feature for a future release!&lt;br /&gt;
&lt;br /&gt;
== DOM-less SDK API Methods &amp;amp; Properties ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
!Method/Property&lt;br /&gt;
!Event #&lt;br /&gt;
!DTVR&lt;br /&gt;
!DAR&lt;br /&gt;
!DCR&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|[[play (Browser)|play]]&lt;br /&gt;
|5&lt;br /&gt;
|✔&lt;br /&gt;
|✘&lt;br /&gt;
|✔&lt;br /&gt;
|Used when there is an ID3 fed product such as DTVR and the client does not want to send in all the CMS metadata that is sent in loadMetadata. This allows the client to send in at least the required “channel name” value associated to the ID3 feed. When the client passes in the channelName, they can change the CMS data stored by passing new values. If this event is not called then the “channel name” value populated will be the default value of “defaultChannelName”.&lt;br /&gt;
|-&lt;br /&gt;
|[[stop (Browser)|stop]]&lt;br /&gt;
|7&lt;br /&gt;
|✘&lt;br /&gt;
|✘&lt;br /&gt;
|✔&lt;br /&gt;
|Used when switching between ad and content or content and ad.&lt;br /&gt;
|-&lt;br /&gt;
|[[loadMetadata (Browser)|loadMetadata]]&lt;br /&gt;
|15&lt;br /&gt;
|✔&lt;br /&gt;
|✔&lt;br /&gt;
|✔&lt;br /&gt;
|Used when there is a preroll ad that needs to be associated with content metadata. The loadMetadata will first be called to populate the content metadata values and then the loadMetadata for ad metadata will be called. This allows sending a content ping with the ad info, even if the user bails out during the preroll ad.&lt;br /&gt;
|-&lt;br /&gt;
|[[setPlayheadPosition (Browser)|setPlayheadPosition]]&lt;br /&gt;
|49&lt;br /&gt;
|✘&lt;br /&gt;
|✘&lt;br /&gt;
|✔&lt;br /&gt;
|Used to send the playhead position.&lt;br /&gt;
|-&lt;br /&gt;
|[[sendID3 (Browser)|sendID3]]&lt;br /&gt;
|55&lt;br /&gt;
|✔&lt;br /&gt;
|✘&lt;br /&gt;
|✘&lt;br /&gt;
|Used to send the ID3 metadata.&lt;br /&gt;
|-&lt;br /&gt;
|[[end (Browser)|end]]&lt;br /&gt;
|57&lt;br /&gt;
|✔&lt;br /&gt;
|✘&lt;br /&gt;
|✔&lt;br /&gt;
|This is triggered 1) at the end of the content stream, 2) if the user switches to another piece of content 3) when the browser is refreshed or closed&lt;br /&gt;
|-&lt;br /&gt;
|[[setVolume (Browser)|setVolume]]&lt;br /&gt;
|61&lt;br /&gt;
|✔&lt;br /&gt;
|✘&lt;br /&gt;
|✔&lt;br /&gt;
|Used to pass in the player volume levels in %. Default value is -1.&lt;br /&gt;
|-&lt;br /&gt;
|[[staticstart (Browser)|staticstart]]&lt;br /&gt;
|14&lt;br /&gt;
|✘&lt;br /&gt;
|✘&lt;br /&gt;
|✔&lt;br /&gt;
|Used to send the metadata for the static page.&lt;br /&gt;
|-&lt;br /&gt;
|[[StaticEnd (Browser)|staticend]]&lt;br /&gt;
|56&lt;br /&gt;
|✘&lt;br /&gt;
|✘&lt;br /&gt;
|✔&lt;br /&gt;
|In Single Page Application (SPA) it is imperative that staticend is called prior to the loading of new metadata. This allows the SDK to properly credit the previous section/content being viewed before measuring the new one.&lt;br /&gt;
|-&lt;br /&gt;
|[[onPaginate (Browser)|onPaginate]]&lt;br /&gt;
|30&lt;br /&gt;
|✘&lt;br /&gt;
|✘&lt;br /&gt;
|✔&lt;br /&gt;
|Used to initialize the SDK object&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>AmySockanathan</name></author>
	</entry>
	<entry>
		<id>https://nielsentest.mywikis.net/w/index.php?title=Third_Party_Encoding_Facilities&amp;diff=6883</id>
		<title>Third Party Encoding Facilities</title>
		<link rel="alternate" type="text/html" href="https://nielsentest.mywikis.net/w/index.php?title=Third_Party_Encoding_Facilities&amp;diff=6883"/>
		<updated>2025-08-28T17:12:25Z</updated>

		<summary type="html">&lt;p&gt;AmySockanathan: Creating new page for Third Party Encoding Facilities&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is a test page&lt;/div&gt;</summary>
		<author><name>AmySockanathan</name></author>
	</entry>
	<entry>
		<id>https://nielsentest.mywikis.net/w/index.php?title=TV&amp;diff=6882</id>
		<title>TV</title>
		<link rel="alternate" type="text/html" href="https://nielsentest.mywikis.net/w/index.php?title=TV&amp;diff=6882"/>
		<updated>2025-08-28T17:11:20Z</updated>

		<summary type="html">&lt;p&gt;AmySockanathan: Adding section for Third Party Encoding Faclities&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:TV]]&lt;br /&gt;
{{Banner|Encoder Support|{{Breadcrumb|}} {{CurrentBreadcrumb}}}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
 {{Alert|'''Download:''' '''https://nielsendownloads.digitalengsdk.com/tv/REMINDER_Spring_2019_DST.pdf Reminder: Daylight Savings Time (DST) changes November 3]''' &amp;lt;br&amp;gt; '''See also:''' '''[https://nielsendownloads-blue.digitalengsdk.com/tv/Quick_Reference_Guide_Spring_2019_DST.pdf Daylight Savings Time Quick Reference Guide Spring 2019]''' }}&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
{{Alert|&lt;br /&gt;
'''Nielsen Encoder Installation and Configuration Policy 2022 Now Available:'''&amp;lt;br&amp;gt;&lt;br /&gt;
'''Official release notification:  [https://nielsendownloads.digitalengsdk.com/tv/Encoding/Encoder+Policy+2022+-+04-01-22.pdf Nielsen Encoder Installation and Configuration Policy 2022]&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&amp;lt;!--   --&amp;gt;&lt;br /&gt;
{{Alert|&lt;br /&gt;
'''Nielsen Encoder Installation and Configuration Policy 2022 Now Available:'''&amp;lt;br&amp;gt;&lt;br /&gt;
'''Official release notification:  [https://nielsendownloads.digitalengsdk.com/tv/Nielsen-Encoder-Policy-Rev-H-2025-03.pdf.pdf Nielsen Encoder Installation and Configuration Policy 2025]&lt;br /&gt;
&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: 50px;&amp;quot; |&lt;br /&gt;
! Certified Vendors&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;1&amp;quot; | &lt;br /&gt;
| '''[[Nielsen Encoder Certified Vendors]]'''&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;1&amp;quot; | &lt;br /&gt;
| '''[[Nielsen Decoder Certified Vendors]]'''&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;1&amp;quot; | &lt;br /&gt;
| '''[[PCM-to-ID3 Certified Vendors]]'''&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: 50px;&amp;quot; |&lt;br /&gt;
! Third Party Encoding Facilities&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;1&amp;quot; | &lt;br /&gt;
| '''[[Third Party Encoding Facilities]]'''&lt;br /&gt;
|-&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: 50px;&amp;quot; |&lt;br /&gt;
! Reference &amp;amp; Policy Supplements&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;1&amp;quot; | {{SmallIcon|PDFIcon.png}}&lt;br /&gt;
| '''[https://nielsendownloads.digitalengsdk.com/tv/Nielsen-Encoder-Policy-Rev-H-2025-03.pdf.pdf Nielsen Encoder Installation and Configuration Policy 2025]'''&lt;br /&gt;
|-&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;1&amp;quot; | {{SmallIcon|PDFIcon.png}}&lt;br /&gt;
| '''[https://nielsendownloads.digitalengsdk.com/tv/Encoding/Encoder+Policy+2022+-+04-01-22.pdf Nielsen Encoder Installation and Configuration Policy 2022]'''&lt;br /&gt;
|-&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
| rowspan=&amp;quot;1&amp;quot; | {{SmallIcon|PDFIcon.png}}&lt;br /&gt;
| '''[https://nielsendownloads-blue.digitalengsdk.com/tv/Encoding/Internet_Distribution_Policy_Rev_A.pdf Internet Distribution Policy]'''&lt;br /&gt;
|-&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
| rowspan=&amp;quot;1&amp;quot; | {{SmallIcon|PDFIcon.png}}&lt;br /&gt;
| '''[https://nielsendownloads.digitalengsdk.com/tv/Encoding/Nielsen+Encoder+Solutions+2023.pdf Nielsen Encoder Solutions 2023]'''&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;1&amp;quot; | {{SmallIcon|PDFIcon.png}}&lt;br /&gt;
| '''[https://nielsendownloads.digitalengsdk.com/tv/Encoding/Nielsen+Encoder+Solutions+2024.pdf Nielsen Encoder Solutions 2024]'''&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;1&amp;quot; | {{SmallIcon|PDFIcon.png}}&lt;br /&gt;
| '''[https://nielsendownloads-blue.digitalengsdk.com/tv/Encoding/MVPD%20provided%20Direct%20Feeds%20with%20Unique%20Commercial%20Content.pdf MVPD provided Direct Feeds with Unique Commercial Content]'''&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;1&amp;quot; | {{SmallIcon|PDFIcon.png}}&lt;br /&gt;
| '''[https://nielsendownloads-blue.digitalengsdk.com/tv/Encoder%20Alert%20Distribution%20List%20Instructions_Final.pdf Nielsen Encoder Alert Distribution List - Instructions]'''&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{CategoryIcon|EncodingIcon.png|TV Audio Encoding}}&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;width: 75px;&amp;quot; |&lt;br /&gt;
! style=&amp;quot;width: 35%;&amp;quot; | Software&lt;br /&gt;
! style=&amp;quot;width: 45px;&amp;quot; | OS &lt;br /&gt;
! Download&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
| {{SmallIcon|CircuitIcon.png}}&lt;br /&gt;
| '''[[NWE-3GA]]''' || {{OSIcon|WindowsIcon.png}} || &lt;br /&gt;
{{TVDownloadRequestLink|name=NWE-3GA Software package Rev 2.5.0.0 |dlid= 5a3f0ecbef6bfe4c9339fb8346a0064a645ebebf}} &amp;lt;small&amp;gt;''('''New!''')''&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
|-&lt;br /&gt;
| {{SmallIcon|CircuitIcon.png}}&lt;br /&gt;
| '''[[NWE-3GA]]''' || {{OSIcon|WindowsIcon.png}} || &lt;br /&gt;
{{TVDownloadRequestLink|name=NWE-3GA NWE-3G Software package Rev 2.3.0.9 |dlid=73aeefb5972bb1f556aa5093c14b981d223bec8e}}&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| {{SmallIcon|RackIcon.png}}&lt;br /&gt;
| '''[[NWE-TS]]'''&lt;br /&gt;
|| {{OSIcon|FirmwareIcon.png}} ||&lt;br /&gt;
&lt;br /&gt;
{{TVDownloadRequestLink|name=NWE-TS Firmware 4.8.1|dlid=ee2f22f3a7347b52627e2d393fab7f3d90d90943}} &amp;lt;small&amp;gt;''('''New!''')''&amp;lt;/small&amp;gt;&lt;br /&gt;
{{TVDownloadRequestLink|name=NWE-TS Firmware 4.6.10|dlid=31e04631784a2438fc41c81f34a49c33cd513ec6}}&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
{{TVDownloadRequestLink|name=NWE-TS Firmware 4.5.1|dlid=5126ebc2699eda28002ba6e2e84fb8a1031827f5}}&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
| {{SmallIcon|RackIcon.png}}&lt;br /&gt;
| '''[[Multi-Channel Encoder]]'''&lt;br /&gt;
|| {{OSIcon|FirmwareIcon.png}} || &lt;br /&gt;
*[[Encoder Downloads| Multi-Channel Encoder v1.2.4]]&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
| {{SmallIcon|VODIcon.png}}&lt;br /&gt;
| '''[[VOD Content Encoder]]'''&lt;br /&gt;
|| {{OSIcon|WindowsIcon.png}} || &lt;br /&gt;
*[[Encoder Downloads| VOD Content Encoder]]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
| {{SmallIcon|VODIcon.png}}&lt;br /&gt;
| '''[[VOD in TV Ratings]]'''  ''&amp;lt;small&amp;gt;(formerly RTVOD)&amp;lt;/small&amp;gt;''&lt;br /&gt;
|| {{OSIcon|WindowsIcon.png}} || &lt;br /&gt;
*[[Encoder Downloads| VOD in TV Ratings]] ''&amp;lt;small&amp;gt;(formerly RTVOD)&amp;lt;/small&amp;gt;''&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
| {{SmallIcon|ComputerWaveIcon.png}}&lt;br /&gt;
| '''[[SpoTTrac®]]'''&lt;br /&gt;
|| {{OSIcon|FirmwareIcon.png}} || &lt;br /&gt;
*[[Encoder Downloads| SpoTTrac Firmware]]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
| {{SmallIcon|EncoderGrayIcon.png}}&lt;br /&gt;
| '''[[NAVE II]]'''&lt;br /&gt;
|| {{OSIcon|WindowsIcon.png}} || &lt;br /&gt;
*NAVE II Firmware v38&lt;br /&gt;
*NAVE II Manager&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
| {{SmallIcon|EncoderGrayIcon.png}}&lt;br /&gt;
| '''[[NAVE IIC]]'''&lt;br /&gt;
|| {{OSIcon|WindowsIcon.png}} || &lt;br /&gt;
*NAVE IIC Firmware v3.4.15&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{CategoryIcon|ID3Icon.png|ID3 Transcoding}}&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;width: 75px;&amp;quot; |&lt;br /&gt;
! style=&amp;quot;width: 35%;&amp;quot; | Software&lt;br /&gt;
! style=&amp;quot;width: 45px;&amp;quot; | OS &lt;br /&gt;
! Download &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|rowspan=&amp;quot;3&amp;quot;| {{SmallIcon|ID3XcodeIcon.png}}&lt;br /&gt;
|rowspan=&amp;quot;3&amp;quot;| '''[[ID3 Transcoders]]'''&lt;br /&gt;
''&amp;lt;small&amp;gt;(Click for Documentation, Software Updates, and Test Streams)&amp;lt;/small&amp;gt;''&lt;br /&gt;
|| {{OSIcon|WindowsIcon.png}} || &lt;br /&gt;
{{TVDownloadRequestLink|name=PCM-to-ID3 SDK (Windows) v2.3.2|dlid=ac5b0e72a84b1a6e86da1a8fe0a89e24083468eb}}&lt;br /&gt;
{{TVDownloadRequestLink|name=PCM-to-ID3 SDK (Windows Visual Studio 2013) v2.3|dlid=533cee44e69c6859e56acd9cbb38334d6b215c00}}&lt;br /&gt;
|-&lt;br /&gt;
|| {{OSIcon|LinuxIcon.png}} || &lt;br /&gt;
{{TVDownloadRequestLink|name=PCM-to-ID3 SDK (Linux x64 GLIBC 2.12) v2.3.2|dlid=c499535f6ce9a0326a408b167079e01a0596e141}}&lt;br /&gt;
{{TVDownloadRequestLink|name=PCM-to-ID3 SDK (Linux x64 GLIBC 2.17) v2.3.2|dlid=b353e404994a1d26726b196960efe40c30427571}}&lt;br /&gt;
{{TVDownloadRequestLink|name=PCM-to-ID3 SDK (Linux x86 GLIBC 2.17) v2.3.2|dlid=f82dfbde6f5f68ccf677b63e32fc83e68fa82cd6}}&lt;br /&gt;
|-&lt;br /&gt;
|| {{OSIcon|macOSIcon.png}} || &lt;br /&gt;
{{TVDownloadRequestLink|name=PCM-to-ID3 SDK (MacOS) v2.3|dlid=3a9d04be165f39ac956278c8292cd1b87ce34b62}}&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|rowspan=&amp;quot;1&amp;quot;| {{SmallIcon|ID3DashIcon.png}}&lt;br /&gt;
|rowspan=&amp;quot;1&amp;quot;| '''[[ID3 in MPEG-DASH]]'''&lt;br /&gt;
''&amp;lt;small&amp;gt;(Click for Documentation, and Sample Audio Files)&amp;lt;/small&amp;gt;''&lt;br /&gt;
|| {{OSIcon|StaticIcon.png}} || &lt;br /&gt;
*[https://nielsendownloads-blue.digitalengsdk.com/tv/ID3%20Transcoding/ID3%20in%20MPEG-DASH/bbb-MPEG-DASH.zip Big Buck Bunny MPEG-DASH Nielsen Tagged]&lt;br /&gt;
*[https://nielsendownloads-blue.digitalengsdk.com/tv/ID3%20Transcoding/ID3%20in%20MPEG-DASH/nielsenconsumer-MPEG-DASH.zip Nielsen Consumer MPEG-DASH Nielsen Tagged]&lt;br /&gt;
*[https://nielsendownloads-blue.digitalengsdk.com/tv/ID3%20Transcoding/ID3%20in%20MPEG-DASH/nielsenxplatform-MPEG-DASH.zip Nielsen Cross Platform MPEG-DASH Nielsen Tagged]&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|rowspan=&amp;quot;3&amp;quot;| {{SmallIcon|ID3ValidateIcon.png}} &lt;br /&gt;
|rowspan=&amp;quot;3&amp;quot;| '''[[PCM-to-ID3 Validator]]'''&lt;br /&gt;
''&amp;lt;small&amp;gt;(Click for Documentation, and Downloads)&amp;lt;/small&amp;gt;''&lt;br /&gt;
|| {{OSIcon|WindowsIcon.png}} || &lt;br /&gt;
{{TVDownloadRequestLink|name=PCM-to-ID3 Validator (Windows) v1.8|dlid=67d34c64d1ed349c1ad92ac47adf62c877f47fcb}}&lt;br /&gt;
|-&lt;br /&gt;
|| {{OSIcon|LinuxIcon.png}} || &lt;br /&gt;
{{TVDownloadRequestLink|name=PCM-to-ID3 Validator (CentOS) v1.7|dlid=dd6b62c76995aa7e1702c60e02076348ceaf573b}}&lt;br /&gt;
|-&lt;br /&gt;
|| {{OSIcon|macOSIcon.png}} || &lt;br /&gt;
{{TVDownloadRequestLink|name=PCM-to-ID3 Validator (MacOS) v1.7|dlid=3afc5a7ec29593e2eb47daa9746b6d16cbd785e1}}&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|rowspan=&amp;quot;3&amp;quot;| {{SmallIcon|ID3ValidateIcon.png}} &lt;br /&gt;
|rowspan=&amp;quot;3&amp;quot;| '''[[PCM-to-ID3 Validator SDK]]'''&lt;br /&gt;
''&amp;lt;small&amp;gt;(Click for Documentation, and Downloads)&amp;lt;/small&amp;gt;''&lt;br /&gt;
|| {{OSIcon|WindowsIcon.png}} || &lt;br /&gt;
{{TVDownloadRequestLink|name=PCM-to-ID3 Validator SDK (Windows) v1.8|dlid=78a936556ebc5caf57d2fc4d09de3a272ace9fea}}&lt;br /&gt;
|-&lt;br /&gt;
|| {{OSIcon|LinuxIcon.png}} || &lt;br /&gt;
{{TVDownloadRequestLink|name=PCM-to-ID3 Validator SDK (CentOS) v1.7|dlid=ccb9af4ef45cfcf7aa4406ca63ab3b7c6efdad11}}&lt;br /&gt;
|-&lt;br /&gt;
|| {{OSIcon|macOSIcon.png}} || &lt;br /&gt;
{{TVDownloadRequestLink|name=PCM-to-ID3 Validator SDK (MacOS) v1.7|dlid=05e99551d28ef4a65eab6168ad2872648346aab2}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{CategoryIcon|DiagnosisToolsIcon.png|Diagnostic Tools}}&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;width: 75px;&amp;quot; |&lt;br /&gt;
! style=&amp;quot;width: 35%;&amp;quot; | Software&lt;br /&gt;
! style=&amp;quot;width: 45px;&amp;quot; | OS &lt;br /&gt;
! Download &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
| {{SmallIcon|NACATIcon.png}} &lt;br /&gt;
|| '''[[Nielsen Audio Code Analysis Tool 3 for TV|Nielsen Audio Code Analysis Tool 3 (NACAT3)]]'''&lt;br /&gt;
|| {{OSIcon|WindowsIcon.png}} || &lt;br /&gt;
{{TVDownloadRequestLink|name=NACAT3 3.0.0.1|dlid=ce2cba3d4b4231a0978c632028c1a45479a8184d}} &amp;lt;small&amp;gt;''('''New!''')''&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
| {{SmallIcon|NDICEIcon.png}}&lt;br /&gt;
|| '''[[Nielsen Digital Code Extractor]]'''&lt;br /&gt;
|| {{OSIcon|WindowsIcon.png}} || &lt;br /&gt;
{{TVDownloadRequestLink|name=Nielsen Digital Code Extractor Installer|dlid=c0eb8eb1802bd08956f6e215473ef1881274a6df}} &amp;lt;BR&amp;gt; (See special installation instructions in [[Nielsen Digital Code Extractor|guide]])&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|rowspan=&amp;quot;3&amp;quot;| {{SmallIcon|SDKIcon.png}} &lt;br /&gt;
|rowspan=&amp;quot;3&amp;quot;| '''[[Decoder SDK Monitor]]'''&lt;br /&gt;
|| {{OSIcon|WindowsIcon.png}} || &lt;br /&gt;
{{TVDownloadRequestLink|name=Decoder SDK Monitor (Windows vs2017) v1.4|dlid=b3ae411765cfa2b878c3f50c0824e61d81a58fbb}}&lt;br /&gt;
|-&lt;br /&gt;
|| {{OSIcon|WindowsIcon.png}} || &lt;br /&gt;
{{TVDownloadRequestLink|name=Decoder SDK Monitor (Windows vs2015) v1.4|dlid=68d1fd697862e663a7aa2efc46377f053c983a5a}}&lt;br /&gt;
|-&lt;br /&gt;
|| {{OSIcon|LinuxIcon.png}} || &lt;br /&gt;
{{TVDownloadRequestLink|name=Decoder SDK Monitor (CentOS) v1.4|dlid=c978921ba90736bf7f2c82287a0a97af89109bec}}&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
| {{SmallIcon|NDICEIcon.png}}&lt;br /&gt;
|| '''[[Nielsen Monitor Application]]'''&lt;br /&gt;
|| {{OSIcon|WindowsIcon.png}} || &lt;br /&gt;
{{TVDownloadRequestLink|name=Nielsen Monitor Application (Windows) v1.4|dlid=6ddf77a8f67dff67b4cbad1fee630ee80318b5bf}}&lt;br /&gt;
&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>AmySockanathan</name></author>
	</entry>
	<entry>
		<id>https://nielsentest.mywikis.net/w/index.php?title=Digital_Measurement_Android_Artifactory_Guide&amp;diff=6871</id>
		<title>Digital Measurement Android Artifactory Guide</title>
		<link rel="alternate" type="text/html" href="https://nielsentest.mywikis.net/w/index.php?title=Digital_Measurement_Android_Artifactory_Guide&amp;diff=6871"/>
		<updated>2025-08-14T18:06:46Z</updated>

		<summary type="html">&lt;p&gt;AmySockanathan: Update &amp;quot;grade&amp;quot; to &amp;quot;gradle&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Breadcrumb|}} {{Breadcrumb|Digital}} {{Breadcrumb|Digital Downloads}} {{CurrentBreadcrumb}}&lt;br /&gt;
[[Category:Digital]]&lt;br /&gt;
__NOTOC__&lt;br /&gt;
The Nielsen AppSDK can either be downloaded directly from the [http://engineeringportal.nielsen.com Engineering Portal], or can be integrated directly within an application through the use of a CocoaPod or Gradle.&lt;br /&gt;
&lt;br /&gt;
= How to install the Nielsen AppSDK using Gradle for Android =&lt;br /&gt;
Below are the steps which need to be performed by app developers to integrate the Nielsen App SDK within an Android application.&lt;br /&gt;
&lt;br /&gt;
== Add Nielsen Maven Repository ==&lt;br /&gt;
&lt;br /&gt;
Please add the Nielsen maven repository inside the repositories section of your app's module build.gradle file like below:&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;android&amp;quot;&amp;gt;&lt;br /&gt;
repositories {&lt;br /&gt;
   //Copy below code inside repository section of app’s build.gradle file&lt;br /&gt;
maven { url 'https://raw.githubusercontent.com/NielsenDigitalSDK/nielsenappsdk-android/master/'&lt;br /&gt;
            }&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
[[Image:AlertIcon.png|left|60px|link=|class=smallIcon]] Starting on Sept 21, 2021 the Nielsen SDK has moved to a public repository. Credentials are no longer required.&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Add gradle dependency ==&lt;br /&gt;
&lt;br /&gt;
Please add Nielsen app SDK as compile time dependency inside build.gradle file as below&lt;br /&gt;
=== gradle 4.x and above ===&lt;br /&gt;
For gradle version starting with 4.x add the following line inside dependencies section of build.gradle file.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;html&amp;quot;&amp;gt;implementation 'com.nielsenappsdk.${market}:${flavor}:${version}'&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;html&amp;quot;&amp;gt;&lt;br /&gt;
dependencies { ....&lt;br /&gt;
implementation 'com.nielsenappsdk.global:ad:+'  // Using + will provide the latest version&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== gradle prior to 4.x ===&lt;br /&gt;
For gradle version previous to 4.x add below line inside dependencies section of build.gradle file.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;html&amp;quot;&amp;gt;compile 'com.nielsenappsdk.${market}:${flavor}:${version}'&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;html&amp;quot;&amp;gt;&lt;br /&gt;
dependencies { ....&lt;br /&gt;
compile 'com.nielsenappsdk.global:ad:+'  // Using + will provide the latest version&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Version and Flavor Control ==&lt;br /&gt;
With version 8.1.0.0+ of the Nielsen appSDK, it is possible to request a specific '''${flavor}''' that reads the '''Google Ad ID''', '''Android ID''', or is '''Kid app''' friendly (noID).  For example:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;html&amp;quot;&amp;gt;implementation 'com.nielsenappsdk.${market}:${flavor}:${version}'&amp;lt;/source&amp;gt;&lt;br /&gt;
* if the flavor selected is equal to &amp;lt;code&amp;gt;ad&amp;lt;/code&amp;gt; the Nielsen SDK will try to obtain the googleAdID if the user has not opted out. &lt;br /&gt;
* If the flavor is &amp;lt;code&amp;gt;noad&amp;lt;/code&amp;gt; then the Nielsen SDK will attempt to obtain the AndroidID. &lt;br /&gt;
* If the flavor selected is &amp;lt;code&amp;gt;noid&amp;lt;/code&amp;gt; then the Nielsen SDK will not request any identifier which is required for many kid apps.&lt;br /&gt;
&amp;lt;blockquote&amp;gt;To ensure backward compatability, &amp;lt;code&amp;gt; implementation 'com.nielsenappsdk:${market}:${version}'&amp;lt;/code&amp;gt; will continue to be supported.&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
! SDK  Version&lt;br /&gt;
! ${market}&lt;br /&gt;
! ${flavor}&lt;br /&gt;
! ${version}&lt;br /&gt;
! Examples&lt;br /&gt;
|-&lt;br /&gt;
| Appsdk 8.1.0.0+&lt;br /&gt;
|&amp;lt;code&amp;gt;global&amp;lt;/code&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;code&amp;gt;agf&amp;lt;/code&amp;gt;&lt;br /&gt;
|&amp;lt;code&amp;gt;ad&amp;lt;/code&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;code&amp;gt;noad&amp;lt;/code&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;code&amp;gt;noid&amp;lt;/code&amp;gt;&lt;br /&gt;
| + is most recent version&amp;lt;br /&amp;gt;&amp;lt;code&amp;gt;8.1.0.0&amp;lt;/code&amp;gt;&lt;br /&gt;
|&amp;lt;code&amp;gt;'com.nielsenappsdk.global:ad:+'&amp;lt;br /&amp;gt;'com.nielsenappsdk.global:noad:+'&amp;lt;br /&amp;gt;'com.nielsenappsdk.global:noad:8.1.0.0'&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| AppSDK 7 to 8.0.0.0&lt;br /&gt;
|&amp;lt;code&amp;gt;globalx&amp;lt;/code&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;code&amp;gt;global&amp;lt;/code&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;code&amp;gt;agf&amp;lt;/code&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;code&amp;gt;agfx&amp;lt;/code&amp;gt;&lt;br /&gt;
|not used&lt;br /&gt;
| + is most recent version&amp;lt;br /&amp;gt;&amp;lt;code&amp;gt;7.1.0.0&amp;lt;/code&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;code&amp;gt;8.0.0.0&amp;lt;/code&amp;gt;&lt;br /&gt;
|&amp;lt;code&amp;gt;'com.nielsenappsdk:globalx:+'&amp;lt;br /&amp;gt;'com.nielsenappsdk:global:8.0.0.0'&amp;lt;br /&amp;gt;'com.nielsenappsdk:agf:8.0.0.0'&amp;lt;/code&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;blockquote&amp;gt;If using version control, a warning message will be displayed within the console trace during the build of your app,&lt;br /&gt;
and it will show all sdk versions released to-date, allowing a developer to select a more recent build if desired. &amp;lt;/blockquote&amp;gt; Starting with Version 8.x, the Nielsen SDK will only support Androidx.&lt;br /&gt;
&lt;br /&gt;
== Ensuring you have the latest release information ==&lt;br /&gt;
It is recommended to use &amp;lt;code&amp;gt;+&amp;lt;/code&amp;gt; for &amp;lt;code&amp;gt;${version}&amp;lt;/code&amp;gt; to ensure you receive the most recent version of the NielsenSDK; however, if you are specifying the exact version of the SDK, please use only the first 3 digits.  EG: 8.1.0&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A sample if using AppSDK 8.1.0.0 + would be:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;html&amp;quot;&amp;gt;&lt;br /&gt;
dependencies { ....&lt;br /&gt;
implementation 'com.nielsenappsdk.global:ad:+'&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
If using AppSDK 7 to 8.0.0.0&lt;br /&gt;
&amp;lt;source lang=&amp;quot;html&amp;quot;&amp;gt;&lt;br /&gt;
dependencies { ....&lt;br /&gt;
implementation 'com.nielsenappsdk:globalx:8.0.0'&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
In addition, please add below gradle task inside your &amp;lt;code&amp;gt; build.gradle (Module:app)&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;build.gradle(Project:My-app)&amp;lt;/code&amp;gt; file to fetch latest release details of nielsen app sdk as below:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;Please note: The &amp;lt;code&amp;gt; build.gradle (Module:app)&amp;lt;/code&amp;gt;  can overwrite the &amp;lt;code&amp;gt;build.gradle(Project:My-app)&amp;lt;/code&amp;gt;.&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;task NielsenSdkReleaseCheck {&lt;br /&gt;
    def p = ['curl',&amp;quot;https://raw.githubusercontent.com/NielsenDigitalSDK/&amp;quot; +&lt;br /&gt;
            &amp;quot;nielsenappsdk-android/master/com/nielsenappsdk/global/&amp;quot; +&lt;br /&gt;
            &amp;quot;NielsenAppSdk-ReadMe.md&amp;quot;].execute().text&lt;br /&gt;
    project.logger.log(LogLevel.ERROR,p)&lt;br /&gt;
}&lt;br /&gt;
preBuild.dependsOn('NielsenSdkReleaseCheck')&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== App Suffix Reference ===&lt;br /&gt;
The Nielsen AppSDK has various configurations per market and distribution type, which can be determined by reviewing the [[Digital Measurement Android Suffix Guide|sdk suffix]].  The first part will be the SDK version: 3 digits for the major SDK version and 1 digit for the minor SDK version. EG: &amp;lt;code&amp;gt;aa.8.1.0.0_abc&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Sync ==&lt;br /&gt;
&lt;br /&gt;
If you are finished with all previous steps then you can sync your build.gradle and after successful build you are ready to use Nielsen App SDK library in your code.&lt;br /&gt;
&lt;br /&gt;
== Sample file ==&lt;br /&gt;
The below is an example of a very basic app build.gradle file&lt;br /&gt;
&amp;lt;syntaxhighlight lang=Java&amp;gt;&lt;br /&gt;
plugins {&lt;br /&gt;
    id 'com.android.application'&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
android {&lt;br /&gt;
    compileSdkVersion 30&lt;br /&gt;
    buildToolsVersion &amp;quot;30.0.3&amp;quot;&lt;br /&gt;
&lt;br /&gt;
    defaultConfig {&lt;br /&gt;
        applicationId &amp;quot;com.nielsen.simplestandardandroidart&amp;quot;&lt;br /&gt;
        minSdkVersion 23&lt;br /&gt;
        targetSdkVersion 30&lt;br /&gt;
        versionCode 1&lt;br /&gt;
        versionName &amp;quot;1.0&amp;quot;&lt;br /&gt;
&lt;br /&gt;
        testInstrumentationRunner &amp;quot;androidx.test.runner.AndroidJUnitRunner&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    buildTypes {&lt;br /&gt;
        release {&lt;br /&gt;
            minifyEnabled false&lt;br /&gt;
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
    repositories {&lt;br /&gt;
        //Copy below code inside repository section of app’s build.gradle file&lt;br /&gt;
        maven { url 'https://raw.githubusercontent.com/NielsenDigitalSDK/nielsenappsdk-android/master/'&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
    compileOptions {&lt;br /&gt;
        sourceCompatibility JavaVersion.VERSION_1_8&lt;br /&gt;
        targetCompatibility JavaVersion.VERSION_1_8&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
dependencies {&lt;br /&gt;
&lt;br /&gt;
    implementation 'androidx.appcompat:appcompat:1.2.0'&lt;br /&gt;
    implementation 'com.google.android.material:material:1.1.0'&lt;br /&gt;
    implementation 'androidx.constraintlayout:constraintlayout:2.0.4'&lt;br /&gt;
    testImplementation 'junit:junit:4.+'&lt;br /&gt;
    androidTestImplementation 'androidx.test.ext:junit:1.1.2'&lt;br /&gt;
    androidTestImplementation 'androidx.test.espresso:espresso-core:3.3.0'&lt;br /&gt;
    implementation 'androidx.lifecycle:lifecycle-extensions:2.2.0'&lt;br /&gt;
    implementation 'com.google.android.gms:play-services-ads:20.3.0'&lt;br /&gt;
    implementation 'com.nielsenappsdk.global:ad:+'&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
task NielsenSdkReleaseCheck {&lt;br /&gt;
    def p = ['curl',&amp;quot;https://raw.githubusercontent.com/NielsenDigitalSDK/&amp;quot; +&lt;br /&gt;
            &amp;quot;nielsenappsdk-android/master/com/nielsenappsdk/global/&amp;quot; +&lt;br /&gt;
            &amp;quot;NielsenAppSdk-ReadMe.md&amp;quot;].execute().text&lt;br /&gt;
    project.logger.log(LogLevel.ERROR,p)&lt;br /&gt;
}&lt;br /&gt;
preBuild.dependsOn('NielsenSdkReleaseCheck')&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>AmySockanathan</name></author>
	</entry>
	<entry>
		<id>https://nielsentest.mywikis.net/w/index.php?title=Template:Browser_Privacy_and_Opt-Out&amp;diff=6864</id>
		<title>Template:Browser Privacy and Opt-Out</title>
		<link rel="alternate" type="text/html" href="https://nielsentest.mywikis.net/w/index.php?title=Template:Browser_Privacy_and_Opt-Out&amp;diff=6864"/>
		<updated>2025-08-05T20:46:45Z</updated>

		<summary type="html">&lt;p&gt;AmySockanathan: Remove Opt Out Overview&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Privacy and Opt-Out ==&lt;br /&gt;
There are two primary methods for implementing user Opt-out preferences:&lt;br /&gt;
# [[#User Opt Out|User Opt Out]] - Provide a link to the Nielsen Privacy Policy page when a User can make their selection&lt;br /&gt;
# [[#Initialization Opt Out|Initialization Opt Out]] - Global OptOut Parameter&lt;br /&gt;
&lt;br /&gt;
=== User Opt Out === &lt;br /&gt;
The site must provide a means for the user to opt-out of, or opt back into, Nielsen Measurement. A user can opt-out if they would prefer not to participate in any Nielsen online measurement research. To implement the User Opt-Out option, include the following two items in your privacy policy.&lt;br /&gt;
*A notice that the player (or page in relation to static measurement) includes proprietary measurement software that allows users to contribute to market research (such as Nielsen TV Ratings).&lt;br /&gt;
*A link to the Nielsen Digital Measurement Privacy Policy at https://www.nielsen.com/digitalprivacy&lt;br /&gt;
&lt;br /&gt;
On the Nielsen Digital Measurement Privacy Policy page, users can click Choices to read more detailed information about the measurement software, learn about their options with regard to Nielsen measurement, and, if they do not want to participate in Nielsen online measurement, click a link to opt-out.&lt;br /&gt;
&lt;br /&gt;
The following paragraph is a template for a Privacy Statement.&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
The properties may feature Nielsen proprietary measurement software, which will allow users to contribute to market research, such as Nielsen TV Ratings. To learn more about the information that Nielsen software may collect and your choices with regard to it, please see the Nielsen Digital Measurement Privacy Policy at https://www.nielsen.com/digitalprivacy&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== User Opt Back In ====&lt;br /&gt;
Once users have opted-out, they can choose to opt back into Nielsen Measurement at anytime by selecting the opt back in link on the Nielsen Digital Privacy Policy page. When a user selects the link, they will be able to be measured.&lt;br /&gt;
&lt;br /&gt;
=== Initialization Opt Out ===&lt;br /&gt;
The BSDK600 now supports the ability to optout on initialization of the SDK by allowing an optout global parameter to be passed.  This optout will be maintained through the session of the SDK instance. Specifications and limitations are specified below.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Type&lt;br /&gt;
! Supported Values&lt;br /&gt;
! Notes&lt;br /&gt;
! Optout&lt;br /&gt;
|-&lt;br /&gt;
||optout||True, Yes, or 1|| Case is insensitive and can be string or bool&lt;br /&gt;
Example: nlsQ(&amp;quot;XXXXXXXX-BH45-JKY6-BKH7-67GJKY68GJK7&amp;quot;, &amp;quot;myInstance&amp;quot;, { optout: true});&lt;br /&gt;
|| Ping parameter will set uoo=true.&lt;br /&gt;
|-&lt;br /&gt;
||optout|| False, No, or 0 || Case is insensitive and can be string or bool&lt;br /&gt;
Example: nlsQ(&amp;quot;XXXXXXXX-BH45-JKY6-BKH7-67GJKY68GJK7&amp;quot;, &amp;quot;myInstance&amp;quot;, { optout: false});&lt;br /&gt;
|| Ping parameter will set uoo to blank.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
==== Example of using OptOut ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
var nSdkInstance = NOLBUNDLE.nlsQ(&amp;quot;XXXXXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXX&amp;quot;, &amp;quot;nlsnInstance&amp;quot;, {&lt;br /&gt;
  nol_sdkDebug: &amp;quot;debug&amp;quot;,&lt;br /&gt;
  optout: &amp;quot;true&amp;quot;&lt;br /&gt;
});&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>AmySockanathan</name></author>
	</entry>
	<entry>
		<id>https://nielsentest.mywikis.net/w/index.php?title=Template:Browser_Privacy_and_Opt-Out&amp;diff=6863</id>
		<title>Template:Browser Privacy and Opt-Out</title>
		<link rel="alternate" type="text/html" href="https://nielsentest.mywikis.net/w/index.php?title=Template:Browser_Privacy_and_Opt-Out&amp;diff=6863"/>
		<updated>2025-08-05T20:45:34Z</updated>

		<summary type="html">&lt;p&gt;AmySockanathan: Remove details of optout process&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Privacy and Opt-Out ==&lt;br /&gt;
There are two primary methods for implementing user Opt-out preferences:&lt;br /&gt;
# [[#User Opt Out|User Opt Out]] - Provide a link to the Nielsen Privacy Policy page when a User can make their selection&lt;br /&gt;
# [[#Initialization Opt Out|Initialization Opt Out]] - Global OptOut Parameter&lt;br /&gt;
&lt;br /&gt;
=== User Opt Out === &lt;br /&gt;
The site must provide a means for the user to opt-out of, or opt back into, Nielsen Measurement. A user can opt-out if they would prefer not to participate in any Nielsen online measurement research. To implement the User Opt-Out option, include the following two items in your privacy policy.&lt;br /&gt;
*A notice that the player (or page in relation to static measurement) includes proprietary measurement software that allows users to contribute to market research (such as Nielsen TV Ratings).&lt;br /&gt;
*A link to the Nielsen Digital Measurement Privacy Policy at https://www.nielsen.com/digitalprivacy&lt;br /&gt;
&lt;br /&gt;
On the Nielsen Digital Measurement Privacy Policy page, users can click Choices to read more detailed information about the measurement software, learn about their options with regard to Nielsen measurement, and, if they do not want to participate in Nielsen online measurement, click a link to opt-out.&lt;br /&gt;
&lt;br /&gt;
The following paragraph is a template for a Privacy Statement.&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
The properties may feature Nielsen proprietary measurement software, which will allow users to contribute to market research, such as Nielsen TV Ratings. To learn more about the information that Nielsen software may collect and your choices with regard to it, please see the Nielsen Digital Measurement Privacy Policy at https://www.nielsen.com/digitalprivacy&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== User Opt Back In ====&lt;br /&gt;
Once users have opted-out, they can choose to opt back into Nielsen Measurement at anytime by selecting the opt back in link on the Nielsen Digital Privacy Policy page. When a user selects the link, they will be able to be measured.&lt;br /&gt;
&lt;br /&gt;
=== Initialization Opt Out ===&lt;br /&gt;
The BSDK600 now supports the ability to optout on initialization of the SDK by allowing an optout global parameter to be passed.  This optout will be maintained through the session of the SDK instance. Specifications and limitations are specified below.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Type&lt;br /&gt;
! Supported Values&lt;br /&gt;
! Notes&lt;br /&gt;
! Optout&lt;br /&gt;
|-&lt;br /&gt;
||optout||True, Yes, or 1|| Case is insensitive and can be string or bool&lt;br /&gt;
Example: nlsQ(&amp;quot;XXXXXXXX-BH45-JKY6-BKH7-67GJKY68GJK7&amp;quot;, &amp;quot;myInstance&amp;quot;, { optout: true});&lt;br /&gt;
|| Ping parameter will set uoo=true.&lt;br /&gt;
|-&lt;br /&gt;
||optout|| False, No, or 0 || Case is insensitive and can be string or bool&lt;br /&gt;
Example: nlsQ(&amp;quot;XXXXXXXX-BH45-JKY6-BKH7-67GJKY68GJK7&amp;quot;, &amp;quot;myInstance&amp;quot;, { optout: false});&lt;br /&gt;
|| Ping parameter will set uoo to blank.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
==== Example of using OptOut ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
var nSdkInstance = NOLBUNDLE.nlsQ(&amp;quot;XXXXXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXX&amp;quot;, &amp;quot;nlsnInstance&amp;quot;, {&lt;br /&gt;
  nol_sdkDebug: &amp;quot;debug&amp;quot;,&lt;br /&gt;
  optout: &amp;quot;true&amp;quot;&lt;br /&gt;
});&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
=== Opt Out Overview ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Browser Cookie&lt;br /&gt;
! uoo value in session ping&lt;br /&gt;
! Final Optout Status&lt;br /&gt;
|-&lt;br /&gt;
||Default Value || no uoo value or uoo=0 || Not Opted Out&lt;br /&gt;
|-&lt;br /&gt;
||Default Value || uoo=1 || Opted Out&lt;br /&gt;
|-&lt;br /&gt;
||TOTAL_OPTOUT || uoo=0 || Opted Out&lt;br /&gt;
|-&lt;br /&gt;
||TOTAL_OPTOUT || uoo=1 || Opted Out&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>AmySockanathan</name></author>
	</entry>
	<entry>
		<id>https://nielsentest.mywikis.net/w/index.php?title=TV&amp;diff=6860</id>
		<title>TV</title>
		<link rel="alternate" type="text/html" href="https://nielsentest.mywikis.net/w/index.php?title=TV&amp;diff=6860"/>
		<updated>2025-07-23T19:49:58Z</updated>

		<summary type="html">&lt;p&gt;AmySockanathan: Changed link to Nielsen Audio Code Analysis Tool 3 to TV page&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:TV]]&lt;br /&gt;
{{Banner|Encoder Support|{{Breadcrumb|}} {{CurrentBreadcrumb}}}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
 {{Alert|'''Download:''' '''https://nielsendownloads.digitalengsdk.com/tv/REMINDER_Spring_2019_DST.pdf Reminder: Daylight Savings Time (DST) changes November 3]''' &amp;lt;br&amp;gt; '''See also:''' '''[https://nielsendownloads-blue.digitalengsdk.com/tv/Quick_Reference_Guide_Spring_2019_DST.pdf Daylight Savings Time Quick Reference Guide Spring 2019]''' }}&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
{{Alert|&lt;br /&gt;
'''Nielsen Encoder Installation and Configuration Policy 2022 Now Available:'''&amp;lt;br&amp;gt;&lt;br /&gt;
'''Official release notification:  [https://nielsendownloads.digitalengsdk.com/tv/Encoding/Encoder+Policy+2022+-+04-01-22.pdf Nielsen Encoder Installation and Configuration Policy 2022]&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&amp;lt;!--   --&amp;gt;&lt;br /&gt;
{{Alert|&lt;br /&gt;
'''Nielsen Encoder Installation and Configuration Policy 2022 Now Available:'''&amp;lt;br&amp;gt;&lt;br /&gt;
'''Official release notification:  [https://nielsendownloads.digitalengsdk.com/tv/Nielsen-Encoder-Policy-Rev-H-2025-03.pdf.pdf Nielsen Encoder Installation and Configuration Policy 2025]&lt;br /&gt;
&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: 50px;&amp;quot; |&lt;br /&gt;
! Certified Vendors&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;1&amp;quot; | &lt;br /&gt;
| '''[[Nielsen Encoder Certified Vendors]]'''&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;1&amp;quot; | &lt;br /&gt;
| '''[[Nielsen Decoder Certified Vendors]]'''&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;1&amp;quot; | &lt;br /&gt;
| '''[[PCM-to-ID3 Certified Vendors]]'''&lt;br /&gt;
|-&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: 50px;&amp;quot; |&lt;br /&gt;
! Reference &amp;amp; Policy Supplements&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;1&amp;quot; | {{SmallIcon|PDFIcon.png}}&lt;br /&gt;
| '''[https://nielsendownloads.digitalengsdk.com/tv/Nielsen-Encoder-Policy-Rev-H-2025-03.pdf.pdf Nielsen Encoder Installation and Configuration Policy 2025]'''&lt;br /&gt;
|-&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;1&amp;quot; | {{SmallIcon|PDFIcon.png}}&lt;br /&gt;
| '''[https://nielsendownloads.digitalengsdk.com/tv/Encoding/Encoder+Policy+2022+-+04-01-22.pdf Nielsen Encoder Installation and Configuration Policy 2022]'''&lt;br /&gt;
|-&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
| rowspan=&amp;quot;1&amp;quot; | {{SmallIcon|PDFIcon.png}}&lt;br /&gt;
| '''[https://nielsendownloads-blue.digitalengsdk.com/tv/Encoding/Internet_Distribution_Policy_Rev_A.pdf Internet Distribution Policy]'''&lt;br /&gt;
|-&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
| rowspan=&amp;quot;1&amp;quot; | {{SmallIcon|PDFIcon.png}}&lt;br /&gt;
| '''[https://nielsendownloads.digitalengsdk.com/tv/Encoding/Nielsen+Encoder+Solutions+2023.pdf Nielsen Encoder Solutions 2023]'''&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;1&amp;quot; | {{SmallIcon|PDFIcon.png}}&lt;br /&gt;
| '''[https://nielsendownloads.digitalengsdk.com/tv/Encoding/Nielsen+Encoder+Solutions+2024.pdf Nielsen Encoder Solutions 2024]'''&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;1&amp;quot; | {{SmallIcon|PDFIcon.png}}&lt;br /&gt;
| '''[https://nielsendownloads-blue.digitalengsdk.com/tv/Encoding/MVPD%20provided%20Direct%20Feeds%20with%20Unique%20Commercial%20Content.pdf MVPD provided Direct Feeds with Unique Commercial Content]'''&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;1&amp;quot; | {{SmallIcon|PDFIcon.png}}&lt;br /&gt;
| '''[https://nielsendownloads-blue.digitalengsdk.com/tv/Encoder%20Alert%20Distribution%20List%20Instructions_Final.pdf Nielsen Encoder Alert Distribution List - Instructions]'''&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{CategoryIcon|EncodingIcon.png|TV Audio Encoding}}&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;width: 75px;&amp;quot; |&lt;br /&gt;
! style=&amp;quot;width: 35%;&amp;quot; | Software&lt;br /&gt;
! style=&amp;quot;width: 45px;&amp;quot; | OS &lt;br /&gt;
! Download&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
| {{SmallIcon|CircuitIcon.png}}&lt;br /&gt;
| '''[[NWE-3GA]]''' || {{OSIcon|WindowsIcon.png}} || &lt;br /&gt;
{{TVDownloadRequestLink|name=NWE-3GA Software package Rev 2.5.0.0 |dlid= 5a3f0ecbef6bfe4c9339fb8346a0064a645ebebf}} &amp;lt;small&amp;gt;''('''New!''')''&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
|-&lt;br /&gt;
| {{SmallIcon|CircuitIcon.png}}&lt;br /&gt;
| '''[[NWE-3GA]]''' || {{OSIcon|WindowsIcon.png}} || &lt;br /&gt;
{{TVDownloadRequestLink|name=NWE-3GA NWE-3G Software package Rev 2.3.0.9 |dlid=73aeefb5972bb1f556aa5093c14b981d223bec8e}}&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| {{SmallIcon|RackIcon.png}}&lt;br /&gt;
| '''[[NWE-TS]]'''&lt;br /&gt;
|| {{OSIcon|FirmwareIcon.png}} ||&lt;br /&gt;
&lt;br /&gt;
{{TVDownloadRequestLink|name=NWE-TS Firmware 4.8.1|dlid=ee2f22f3a7347b52627e2d393fab7f3d90d90943}} &amp;lt;small&amp;gt;''('''New!''')''&amp;lt;/small&amp;gt;&lt;br /&gt;
{{TVDownloadRequestLink|name=NWE-TS Firmware 4.6.10|dlid=31e04631784a2438fc41c81f34a49c33cd513ec6}}&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
{{TVDownloadRequestLink|name=NWE-TS Firmware 4.5.1|dlid=5126ebc2699eda28002ba6e2e84fb8a1031827f5}}&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
| {{SmallIcon|RackIcon.png}}&lt;br /&gt;
| '''[[Multi-Channel Encoder]]'''&lt;br /&gt;
|| {{OSIcon|FirmwareIcon.png}} || &lt;br /&gt;
*[[Encoder Downloads| Multi-Channel Encoder v1.2.4]]&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
| {{SmallIcon|VODIcon.png}}&lt;br /&gt;
| '''[[VOD Content Encoder]]'''&lt;br /&gt;
|| {{OSIcon|WindowsIcon.png}} || &lt;br /&gt;
*[[Encoder Downloads| VOD Content Encoder]]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
| {{SmallIcon|VODIcon.png}}&lt;br /&gt;
| '''[[VOD in TV Ratings]]'''  ''&amp;lt;small&amp;gt;(formerly RTVOD)&amp;lt;/small&amp;gt;''&lt;br /&gt;
|| {{OSIcon|WindowsIcon.png}} || &lt;br /&gt;
*[[Encoder Downloads| VOD in TV Ratings]] ''&amp;lt;small&amp;gt;(formerly RTVOD)&amp;lt;/small&amp;gt;''&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
| {{SmallIcon|ComputerWaveIcon.png}}&lt;br /&gt;
| '''[[SpoTTrac®]]'''&lt;br /&gt;
|| {{OSIcon|FirmwareIcon.png}} || &lt;br /&gt;
*[[Encoder Downloads| SpoTTrac Firmware]]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
| {{SmallIcon|EncoderGrayIcon.png}}&lt;br /&gt;
| '''[[NAVE II]]'''&lt;br /&gt;
|| {{OSIcon|WindowsIcon.png}} || &lt;br /&gt;
*NAVE II Firmware v38&lt;br /&gt;
*NAVE II Manager&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
| {{SmallIcon|EncoderGrayIcon.png}}&lt;br /&gt;
| '''[[NAVE IIC]]'''&lt;br /&gt;
|| {{OSIcon|WindowsIcon.png}} || &lt;br /&gt;
*NAVE IIC Firmware v3.4.15&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{CategoryIcon|ID3Icon.png|ID3 Transcoding}}&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;width: 75px;&amp;quot; |&lt;br /&gt;
! style=&amp;quot;width: 35%;&amp;quot; | Software&lt;br /&gt;
! style=&amp;quot;width: 45px;&amp;quot; | OS &lt;br /&gt;
! Download &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|rowspan=&amp;quot;3&amp;quot;| {{SmallIcon|ID3XcodeIcon.png}}&lt;br /&gt;
|rowspan=&amp;quot;3&amp;quot;| '''[[ID3 Transcoders]]'''&lt;br /&gt;
''&amp;lt;small&amp;gt;(Click for Documentation, Software Updates, and Test Streams)&amp;lt;/small&amp;gt;''&lt;br /&gt;
|| {{OSIcon|WindowsIcon.png}} || &lt;br /&gt;
{{TVDownloadRequestLink|name=PCM-to-ID3 SDK (Windows) v2.3.2|dlid=ac5b0e72a84b1a6e86da1a8fe0a89e24083468eb}}&lt;br /&gt;
{{TVDownloadRequestLink|name=PCM-to-ID3 SDK (Windows Visual Studio 2013) v2.3|dlid=533cee44e69c6859e56acd9cbb38334d6b215c00}}&lt;br /&gt;
|-&lt;br /&gt;
|| {{OSIcon|LinuxIcon.png}} || &lt;br /&gt;
{{TVDownloadRequestLink|name=PCM-to-ID3 SDK (Linux x64 GLIBC 2.12) v2.3.2|dlid=c499535f6ce9a0326a408b167079e01a0596e141}}&lt;br /&gt;
{{TVDownloadRequestLink|name=PCM-to-ID3 SDK (Linux x64 GLIBC 2.17) v2.3.2|dlid=b353e404994a1d26726b196960efe40c30427571}}&lt;br /&gt;
{{TVDownloadRequestLink|name=PCM-to-ID3 SDK (Linux x86 GLIBC 2.17) v2.3.2|dlid=f82dfbde6f5f68ccf677b63e32fc83e68fa82cd6}}&lt;br /&gt;
|-&lt;br /&gt;
|| {{OSIcon|macOSIcon.png}} || &lt;br /&gt;
{{TVDownloadRequestLink|name=PCM-to-ID3 SDK (MacOS) v2.3|dlid=3a9d04be165f39ac956278c8292cd1b87ce34b62}}&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|rowspan=&amp;quot;1&amp;quot;| {{SmallIcon|ID3DashIcon.png}}&lt;br /&gt;
|rowspan=&amp;quot;1&amp;quot;| '''[[ID3 in MPEG-DASH]]'''&lt;br /&gt;
''&amp;lt;small&amp;gt;(Click for Documentation, and Sample Audio Files)&amp;lt;/small&amp;gt;''&lt;br /&gt;
|| {{OSIcon|StaticIcon.png}} || &lt;br /&gt;
*[https://nielsendownloads-blue.digitalengsdk.com/tv/ID3%20Transcoding/ID3%20in%20MPEG-DASH/bbb-MPEG-DASH.zip Big Buck Bunny MPEG-DASH Nielsen Tagged]&lt;br /&gt;
*[https://nielsendownloads-blue.digitalengsdk.com/tv/ID3%20Transcoding/ID3%20in%20MPEG-DASH/nielsenconsumer-MPEG-DASH.zip Nielsen Consumer MPEG-DASH Nielsen Tagged]&lt;br /&gt;
*[https://nielsendownloads-blue.digitalengsdk.com/tv/ID3%20Transcoding/ID3%20in%20MPEG-DASH/nielsenxplatform-MPEG-DASH.zip Nielsen Cross Platform MPEG-DASH Nielsen Tagged]&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|rowspan=&amp;quot;3&amp;quot;| {{SmallIcon|ID3ValidateIcon.png}} &lt;br /&gt;
|rowspan=&amp;quot;3&amp;quot;| '''[[PCM-to-ID3 Validator]]'''&lt;br /&gt;
''&amp;lt;small&amp;gt;(Click for Documentation, and Downloads)&amp;lt;/small&amp;gt;''&lt;br /&gt;
|| {{OSIcon|WindowsIcon.png}} || &lt;br /&gt;
{{TVDownloadRequestLink|name=PCM-to-ID3 Validator (Windows) v1.8|dlid=67d34c64d1ed349c1ad92ac47adf62c877f47fcb}}&lt;br /&gt;
|-&lt;br /&gt;
|| {{OSIcon|LinuxIcon.png}} || &lt;br /&gt;
{{TVDownloadRequestLink|name=PCM-to-ID3 Validator (CentOS) v1.7|dlid=dd6b62c76995aa7e1702c60e02076348ceaf573b}}&lt;br /&gt;
|-&lt;br /&gt;
|| {{OSIcon|macOSIcon.png}} || &lt;br /&gt;
{{TVDownloadRequestLink|name=PCM-to-ID3 Validator (MacOS) v1.7|dlid=3afc5a7ec29593e2eb47daa9746b6d16cbd785e1}}&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|rowspan=&amp;quot;3&amp;quot;| {{SmallIcon|ID3ValidateIcon.png}} &lt;br /&gt;
|rowspan=&amp;quot;3&amp;quot;| '''[[PCM-to-ID3 Validator SDK]]'''&lt;br /&gt;
''&amp;lt;small&amp;gt;(Click for Documentation, and Downloads)&amp;lt;/small&amp;gt;''&lt;br /&gt;
|| {{OSIcon|WindowsIcon.png}} || &lt;br /&gt;
{{TVDownloadRequestLink|name=PCM-to-ID3 Validator SDK (Windows) v1.8|dlid=78a936556ebc5caf57d2fc4d09de3a272ace9fea}}&lt;br /&gt;
|-&lt;br /&gt;
|| {{OSIcon|LinuxIcon.png}} || &lt;br /&gt;
{{TVDownloadRequestLink|name=PCM-to-ID3 Validator SDK (CentOS) v1.7|dlid=ccb9af4ef45cfcf7aa4406ca63ab3b7c6efdad11}}&lt;br /&gt;
|-&lt;br /&gt;
|| {{OSIcon|macOSIcon.png}} || &lt;br /&gt;
{{TVDownloadRequestLink|name=PCM-to-ID3 Validator SDK (MacOS) v1.7|dlid=05e99551d28ef4a65eab6168ad2872648346aab2}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{CategoryIcon|DiagnosisToolsIcon.png|Diagnostic Tools}}&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;width: 75px;&amp;quot; |&lt;br /&gt;
! style=&amp;quot;width: 35%;&amp;quot; | Software&lt;br /&gt;
! style=&amp;quot;width: 45px;&amp;quot; | OS &lt;br /&gt;
! Download &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
| {{SmallIcon|NACATIcon.png}} &lt;br /&gt;
|| '''[[Nielsen Audio Code Analysis Tool 3 for TV|Nielsen Audio Code Analysis Tool 3 (NACAT3)]]'''&lt;br /&gt;
|| {{OSIcon|WindowsIcon.png}} || &lt;br /&gt;
{{TVDownloadRequestLink|name=NACAT3 3.0.0.1|dlid=ce2cba3d4b4231a0978c632028c1a45479a8184d}} &amp;lt;small&amp;gt;''('''New!''')''&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
| {{SmallIcon|NDICEIcon.png}}&lt;br /&gt;
|| '''[[Nielsen Digital Code Extractor]]'''&lt;br /&gt;
|| {{OSIcon|WindowsIcon.png}} || &lt;br /&gt;
{{TVDownloadRequestLink|name=Nielsen Digital Code Extractor Installer|dlid=c0eb8eb1802bd08956f6e215473ef1881274a6df}} &amp;lt;BR&amp;gt; (See special installation instructions in [[Nielsen Digital Code Extractor|guide]])&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|rowspan=&amp;quot;3&amp;quot;| {{SmallIcon|SDKIcon.png}} &lt;br /&gt;
|rowspan=&amp;quot;3&amp;quot;| '''[[Decoder SDK Monitor]]'''&lt;br /&gt;
|| {{OSIcon|WindowsIcon.png}} || &lt;br /&gt;
{{TVDownloadRequestLink|name=Decoder SDK Monitor (Windows vs2017) v1.4|dlid=b3ae411765cfa2b878c3f50c0824e61d81a58fbb}}&lt;br /&gt;
|-&lt;br /&gt;
|| {{OSIcon|WindowsIcon.png}} || &lt;br /&gt;
{{TVDownloadRequestLink|name=Decoder SDK Monitor (Windows vs2015) v1.4|dlid=68d1fd697862e663a7aa2efc46377f053c983a5a}}&lt;br /&gt;
|-&lt;br /&gt;
|| {{OSIcon|LinuxIcon.png}} || &lt;br /&gt;
{{TVDownloadRequestLink|name=Decoder SDK Monitor (CentOS) v1.4|dlid=c978921ba90736bf7f2c82287a0a97af89109bec}}&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
| {{SmallIcon|NDICEIcon.png}}&lt;br /&gt;
|| '''[[Nielsen Monitor Application]]'''&lt;br /&gt;
|| {{OSIcon|WindowsIcon.png}} || &lt;br /&gt;
{{TVDownloadRequestLink|name=Nielsen Monitor Application (Windows) v1.4|dlid=6ddf77a8f67dff67b4cbad1fee630ee80318b5bf}}&lt;br /&gt;
&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>AmySockanathan</name></author>
	</entry>
	<entry>
		<id>https://nielsentest.mywikis.net/w/index.php?title=Nielsen_Audio_Code_Analysis_Tool_3_for_TV&amp;diff=6859</id>
		<title>Nielsen Audio Code Analysis Tool 3 for TV</title>
		<link rel="alternate" type="text/html" href="https://nielsentest.mywikis.net/w/index.php?title=Nielsen_Audio_Code_Analysis_Tool_3_for_TV&amp;diff=6859"/>
		<updated>2025-07-23T18:58:29Z</updated>

		<summary type="html">&lt;p&gt;AmySockanathan: /* Software Downloads */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:TV]]&lt;br /&gt;
{{Breadcrumb|}} {{Breadcrumb|TV}} {{CurrentBreadcrumb}}&lt;br /&gt;
&lt;br /&gt;
''' NACAT3® — Nielsen Audio Code Analysis Tool''' — The Nielsen Company has developed NACAT, a Microsoft® Windows 10/11 operating system (64-bit) PC tool to aid in diagnosing audio watermarks embedded in an audio stream.&lt;br /&gt;
&lt;br /&gt;
NACAT is a Graphical User Interface (GUI) application that captures audio, extracts Nielsen codes from that audio, decodes Nielsen audio codes (including UCC), and reports the extracted audio codes.&lt;br /&gt;
The Nielsen EVS department uses the NACAT application for monitoring, assisting in troubleshooting, and verifying NAVE encoder installations.&lt;br /&gt;
&lt;br /&gt;
'''This release has significant enhancements.'''&lt;br /&gt;
&lt;br /&gt;
This version incorporates Decoder SDK v6.0.16 with its underlying UCC/Commercial Codes and sub-minute capabilities.&lt;br /&gt;
&lt;br /&gt;
Enhancements include decode, display, and log both the left and right channels simultaneously for more complete monitoring. NACAT3® enables decoding of all 6 channels.&lt;br /&gt;
&lt;br /&gt;
NACAT 3 for Radio requires the use of a code mapping file (SIDMAP). To request a SIDMAP file that contains the mapping for your station/station groups audio codes, please email encoding@nielsen.com. You will need to provide the list of station call letters or station ownership for the codes you’re requesting.&lt;br /&gt;
&lt;br /&gt;
== Documentation ==&lt;br /&gt;
*[https://nielsendownloads.digitalengsdk.com/radio/Diagnostic+Tools/NACAT3%C2%AE+%E2%80%94+Nielsen+Audio+Code+Analysis+Tool.pdf NACAT3® Product Overview]&lt;br /&gt;
&lt;br /&gt;
== Software Downloads ==&lt;br /&gt;
{{TVDownloadRequestLink|name=NACAT3 3.0.0.1|dlid=ce2cba3d4b4231a0978c632028c1a45479a8184d}}&lt;/div&gt;</summary>
		<author><name>AmySockanathan</name></author>
	</entry>
	<entry>
		<id>https://nielsentest.mywikis.net/w/index.php?title=Nielsen_Audio_Code_Analysis_Tool_3_for_TV&amp;diff=6858</id>
		<title>Nielsen Audio Code Analysis Tool 3 for TV</title>
		<link rel="alternate" type="text/html" href="https://nielsentest.mywikis.net/w/index.php?title=Nielsen_Audio_Code_Analysis_Tool_3_for_TV&amp;diff=6858"/>
		<updated>2025-07-23T18:45:17Z</updated>

		<summary type="html">&lt;p&gt;AmySockanathan: NACAT3 - Nielsen Audio Code Analysis Tool page for TV&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:TV]]&lt;br /&gt;
{{Breadcrumb|}} {{Breadcrumb|TV}} {{CurrentBreadcrumb}}&lt;br /&gt;
&lt;br /&gt;
''' NACAT3® — Nielsen Audio Code Analysis Tool''' — The Nielsen Company has developed NACAT, a Microsoft® Windows 10/11 operating system (64-bit) PC tool to aid in diagnosing audio watermarks embedded in an audio stream.&lt;br /&gt;
&lt;br /&gt;
NACAT is a Graphical User Interface (GUI) application that captures audio, extracts Nielsen codes from that audio, decodes Nielsen audio codes (including UCC), and reports the extracted audio codes.&lt;br /&gt;
The Nielsen EVS department uses the NACAT application for monitoring, assisting in troubleshooting, and verifying NAVE encoder installations.&lt;br /&gt;
&lt;br /&gt;
'''This release has significant enhancements.'''&lt;br /&gt;
&lt;br /&gt;
This version incorporates Decoder SDK v6.0.16 with its underlying UCC/Commercial Codes and sub-minute capabilities.&lt;br /&gt;
&lt;br /&gt;
Enhancements include decode, display, and log both the left and right channels simultaneously for more complete monitoring. NACAT3® enables decoding of all 6 channels.&lt;br /&gt;
&lt;br /&gt;
NACAT 3 for Radio requires the use of a code mapping file (SIDMAP). To request a SIDMAP file that contains the mapping for your station/station groups audio codes, please email encoding@nielsen.com. You will need to provide the list of station call letters or station ownership for the codes you’re requesting.&lt;br /&gt;
&lt;br /&gt;
== Documentation ==&lt;br /&gt;
*[https://nielsendownloads.digitalengsdk.com/radio/Diagnostic+Tools/NACAT3%C2%AE+%E2%80%94+Nielsen+Audio+Code+Analysis+Tool.pdf NACAT3® Product Overview]&lt;br /&gt;
&lt;br /&gt;
== Software Downloads ==&lt;br /&gt;
{{TVDownloadRequestLink|name=NACAT3 3.0.0.1|dlid=ce2cba3d4b4231a0978c632028c1a45479a8184d&amp;amp;section=r}}&lt;/div&gt;</summary>
		<author><name>AmySockanathan</name></author>
	</entry>
	<entry>
		<id>https://nielsentest.mywikis.net/w/index.php?title=Browser_SDK_Release_Notes&amp;diff=6813</id>
		<title>Browser SDK Release Notes</title>
		<link rel="alternate" type="text/html" href="https://nielsentest.mywikis.net/w/index.php?title=Browser_SDK_Release_Notes&amp;diff=6813"/>
		<updated>2025-07-15T16:26:42Z</updated>

		<summary type="html">&lt;p&gt;AmySockanathan: Update Release notes&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Breadcrumb|}} {{Breadcrumb|Digital}} {{CurrentBreadcrumb}}&lt;br /&gt;
[[Category:Digital]]&lt;br /&gt;
__NOTOC__&lt;br /&gt;
&lt;br /&gt;
== Release R1(v6.0.0.734) (07-08-2025) ==&lt;br /&gt;
&lt;br /&gt;
* Support for DTVR Subminute feature&lt;br /&gt;
&lt;br /&gt;
== Release V1(v6.0.110) (05-21-2024) ==&lt;br /&gt;
&lt;br /&gt;
* Suppression of v60/v52/v53 legacy pings&lt;br /&gt;
&lt;br /&gt;
== Release R2(v6.0.0.702) (10-30-2024) ==&lt;br /&gt;
&lt;br /&gt;
* 2nd release of DOMless SDK&lt;br /&gt;
* Support DCR Static&lt;br /&gt;
* Support Debug interface which can be used to view API calls and SDK pings&lt;br /&gt;
* Support caching of pings when network is not available&lt;br /&gt;
&lt;br /&gt;
== Release R1(v6.0.0.692) (07-31-2024) ==&lt;br /&gt;
&lt;br /&gt;
* DOMless SDK Release with support for Amazon, ReactNative and other DOM less platforms&lt;br /&gt;
&lt;br /&gt;
== Release R6(v6.0.0.673) (09-05-2023) ==&lt;br /&gt;
&lt;br /&gt;
* Fix for stream id of stream 2 is populated in the last duration ping of stream 1 when mandatory END is not called&lt;br /&gt;
&lt;br /&gt;
== Release R5(v6.0.0.673) (08-14-2023) (AGF Release) ==&lt;br /&gt;
&lt;br /&gt;
* Fix for stream id of stream 2 is populated in the last duration ping of stream 1 when mandatory END is not called&lt;br /&gt;
&lt;br /&gt;
== Release R4(v6.0.0.672) (08-01-2023) ==&lt;br /&gt;
&lt;br /&gt;
* Viewability build with support for Viewability and Audibility features&lt;br /&gt;
&lt;br /&gt;
== Release R3(v6.0.0.663) (05-30-2023) ==&lt;br /&gt;
&lt;br /&gt;
* Support to measure static on hbbtv with the iFrame fixes.&lt;br /&gt;
&lt;br /&gt;
== Release R2(v.6.0.0.648) (05-03-2023) (AGF Release) ==&lt;br /&gt;
&lt;br /&gt;
* Support to measure DCR static when browser sdk is initialized on parent page while video is played within the iFrame&lt;br /&gt;
* Fix to propagate correct starttm value in postroll content trailing ping&lt;br /&gt;
* Fix the 1st party cookie expiry date&lt;br /&gt;
* Fix first party id time to live parameter (nol_fpid_ttl) override&lt;br /&gt;
* Update the sessionURL in BSDK600 code with FPID parameters&lt;br /&gt;
* SIVT support for DCR &amp;amp; DTVR&lt;br /&gt;
* StaticEnd support for Hybrid App&lt;br /&gt;
&lt;br /&gt;
== Release R1.2(v6.0.0.662) (04-19-2023) ==&lt;br /&gt;
* Support to measure DCR static when browser sdk is initialized on parent page while video is played within the iFrame&lt;br /&gt;
* Support to measure DCR static on a Single Page Application when staticEnd is not called while navigating from one page to another&lt;br /&gt;
&lt;br /&gt;
== Release R1(v6.0.0.648) (03-06-2023) ==&lt;br /&gt;
* SIVT support for DCR &amp;amp; DTVR&lt;br /&gt;
* StaticEnd support for Hybrid App&lt;br /&gt;
&lt;br /&gt;
== Release R4(v6.0.0.623) (05-02-2022) ==&lt;br /&gt;
* Fix the 1st party cookie expiry date&lt;br /&gt;
* Fix first party id time to live parameter (nol_fpid_ttl) override&lt;br /&gt;
* Update the sessionURL in BSDK600 code with FPID parameters&lt;br /&gt;
&lt;br /&gt;
== Release R3(v6.0.0.618) (03-29-2022) ==&lt;br /&gt;
* Fix to measure dcr static while video is in focus and within an iFrame&lt;br /&gt;
* Fix to propagate correct starttm value in postroll content trailing ping&lt;br /&gt;
&lt;br /&gt;
== Release v6.0.0.355 ==&lt;br /&gt;
* Performance improvements through the use of cachable configuration via the Static Queue Snippet.&lt;br /&gt;
* Dynamic Configuration File&lt;br /&gt;
* Session Ping/UAID - A unique identifier of the device which allows for a single facebook ping per session.&lt;br /&gt;
* Support for iOS 12.2&lt;br /&gt;
&lt;br /&gt;
== Release 5.1.0 (Build 2) ==&lt;br /&gt;
*Support for DCR Static Lite Measurement&lt;br /&gt;
*Advanced Dynamic Script Initialization&lt;br /&gt;
*Removal of Configuration file dependency&lt;br /&gt;
&lt;br /&gt;
== Release 5.0.0 (Build 17) ==   &lt;br /&gt;
*Support for Nielsen Digital Content Ratings (DCR) product&lt;br /&gt;
*Support for measurement of static content&lt;br /&gt;
*Support for Ad measurement&lt;br /&gt;
*Support for Facebook Pings&lt;br /&gt;
*Support for multiple instances of the SDK&lt;br /&gt;
*General bug fix and performance improvements&lt;/div&gt;</summary>
		<author><name>AmySockanathan</name></author>
	</entry>
	<entry>
		<id>https://nielsentest.mywikis.net/w/index.php?title=DTVR_Domless_SDK&amp;diff=6812</id>
		<title>DTVR Domless SDK</title>
		<link rel="alternate" type="text/html" href="https://nielsentest.mywikis.net/w/index.php?title=DTVR_Domless_SDK&amp;diff=6812"/>
		<updated>2025-06-09T19:49:45Z</updated>

		<summary type="html">&lt;p&gt;AmySockanathan: Add information about Implementation hooks&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== License ==&lt;br /&gt;
Nielsen SDK contains material that is protected by copyright laws, patent laws, trade secret laws, and by international treaty provisions and is Copyright © 2024 The Nielsen Company (US) LLC. All intellectual property rights and licenses therein are reserved by The Nielsen Company (US) LLC and its licensors. Please read the license agreement presented [[Special:ClickThrough|here]], which must be accepted in order to download the Nielsen SDKs. For more information, reach out to your Nielsen Technical Account Manager(TAM).&lt;br /&gt;
&lt;br /&gt;
== DOM-less SDK DTVR Video Introduction ==&lt;br /&gt;
The Nielsen DOM-less SDK is a Javascript based cross-platform library that clients can use to integrate the Nielsen Digital Content Rating or Digital TV Rating measurement in ReactNative or NodeJS apps.&lt;br /&gt;
&lt;br /&gt;
The Digital TV Ratings (DTVR) product provides content consumption measurement on client mobile apps or webpages. This measurement includes insight into the total time a user spent watching the tracked content, video player events, and much more. This example provides the steps to implement the DTVR Video product in a sample NodeJS app. It includes:&lt;br /&gt;
&lt;br /&gt;
* DOM-less SDK Initialization&lt;br /&gt;
* DTVR Metadata: information about the content being tracked&lt;br /&gt;
* DTVR Events/API calls&lt;br /&gt;
&lt;br /&gt;
By the end of this guide you will have the needed steps to integrate Nielsen's DOM-less SDK in your app.&lt;br /&gt;
&lt;br /&gt;
=== DOM-less SDK DTVR Video Step 1 - Obtain AppID ===&lt;br /&gt;
To begin using the DOM-less SDK you will need to obtain an Application ID (AppId)&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!&lt;br /&gt;
!Item&lt;br /&gt;
!Description&lt;br /&gt;
!Source&lt;br /&gt;
|-&lt;br /&gt;
|✅&lt;br /&gt;
|App ID (appid)&lt;br /&gt;
|Unique ID assigned to the player/site and configured by product&lt;br /&gt;
|Contact your Nielsen TAM&lt;br /&gt;
|}&lt;br /&gt;
The appid is a 37 character unique ID assigned to the player/site and configured by product and is required when creating a new instance of the DOM-less SDK on the app.&lt;br /&gt;
&lt;br /&gt;
Example: '''PXXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXX'''&lt;br /&gt;
&lt;br /&gt;
=== DOM-less SDK DTVR Video Step 2 - SDK Initialization ===&lt;br /&gt;
This project is an API that allows clients to integrate the Nielsen SDK in DOM-less environments like React Native, NodeJS, etc.&lt;br /&gt;
 &lt;br /&gt;
Refer to the &amp;quot; [[Domless_SDK_API_Reference#DOM-less SDK Initialization|DOM-less SDK initialization]] &amp;quot; section in the [[Domless_SDK_API_Reference|DOM-less SDK API Reference Guide]].&lt;br /&gt;
&lt;br /&gt;
==== SDK Initialization ====&lt;br /&gt;
The following table contains the list of arguments that can be passed&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Parameter / Argument&lt;br /&gt;
!Description&lt;br /&gt;
!Source&lt;br /&gt;
!Required?&lt;br /&gt;
!Example&lt;br /&gt;
|-&lt;br /&gt;
|appid&lt;br /&gt;
|Unique Nielsen ID for the application. The ID is a GUID data type. If you did not receive your App ID, let us know and we will provide you.&lt;br /&gt;
|Nielsen-specified&lt;br /&gt;
|Yes&lt;br /&gt;
|PXXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX&lt;br /&gt;
|-&lt;br /&gt;
|instanceName&lt;br /&gt;
|DOM-less SDK instance name&lt;br /&gt;
|Client provided&lt;br /&gt;
|Yes&lt;br /&gt;
|String eg. abcdefg&lt;br /&gt;
|-&lt;br /&gt;
|appName&lt;br /&gt;
|Application name&lt;br /&gt;
|Client provided&lt;br /&gt;
|Yes&lt;br /&gt;
|appName: 'BSDK RN Sample App'&lt;br /&gt;
|-&lt;br /&gt;
|deviceId&lt;br /&gt;
|Device ID&lt;br /&gt;
|Client provided&lt;br /&gt;
|Yes&lt;br /&gt;
|deviceId: '38400000-8cf0-11bd-b23e-10b96e40000d'&lt;br /&gt;
|-&lt;br /&gt;
|nol_sdkDebug&lt;br /&gt;
|Enables Nielsen console logging. Only required for testing&lt;br /&gt;
|Client-provided&lt;br /&gt;
|No&lt;br /&gt;
|nol_sdkDebug: 'debug'&lt;br /&gt;
|-&lt;br /&gt;
|domlessEnv&lt;br /&gt;
|Specify the domless environment.&lt;br /&gt;
&amp;quot;1&amp;quot; for ReactNative &amp;quot;2&amp;quot; for Amazon &amp;quot;3&amp;quot; for NodeJS &amp;quot;4&amp;quot; for Custom&lt;br /&gt;
|Client-provided&lt;br /&gt;
|Yes&lt;br /&gt;
|domlessEnv: '1'&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Implementation Hooks====&lt;br /&gt;
Implementation hooks are essential for the DOM-less SDK to work as expected. Please refer to the &amp;quot;[[Domless_SDK_API_Reference#Implementation Hooks | Implementation Hooks]] &amp;quot; section in the [[Domless_SDK_API_Reference | DOM-less SDK API Reference Guide]].&lt;br /&gt;
&lt;br /&gt;
====Nielsen Debug Node.js Server for Event Tracking====&lt;br /&gt;
We are excited to announce the beta version of our Debug Node.js server, designed to track requests and events sent from our Dom-less SDK using WebSocket connections. While this feature is not officially released, we are currently looking for users interested in beta testing.&lt;br /&gt;
&lt;br /&gt;
If you'd like to try this tool and provide feedback, please reach out to your Nielsen Technical Account Manager (TAM) for more information. Your insights would be invaluable in helping us refine this feature for a future release!&lt;br /&gt;
&lt;br /&gt;
=== DOM-less SDK DTVR Video Step 3 - Create DTVR Metadata Object ===&lt;br /&gt;
&lt;br /&gt;
==== Events that can be passed to `ggPM` method ====&lt;br /&gt;
1. &amp;lt;code&amp;gt;loadMetadata&amp;lt;/code&amp;gt; - This event is used to send DTVR metadata to the Nielsen SDK. This event should be called when the video metadata is loaded.&lt;br /&gt;
     instance.ggPM('loadMetadata', {&lt;br /&gt;
         'type': 'content',&lt;br /&gt;
         'adModel': '1'&lt;br /&gt;
     });&lt;br /&gt;
2. &amp;lt;code&amp;gt;sendID3&amp;lt;/code&amp;gt; - This event is used to send the id3 event to the Nielsen SDK. This event should be called when the id3 event is triggered, passing the id3 data from the stream.&lt;br /&gt;
     instance.ggPM('sendID3', '&amp;lt;id3 metadata received&amp;gt;');&lt;br /&gt;
3. &amp;lt;code&amp;gt;end&amp;lt;/code&amp;gt; - This event is used to send the end event to the Nielsen SDK. This event should be called when the video playback is finished, passing the playhead at that time.&lt;br /&gt;
     instance.ggPM('end', 300);&lt;br /&gt;
&lt;br /&gt;
====== Events that can be passed to and processed by &amp;lt;code&amp;gt;processEvent&amp;lt;/code&amp;gt; method ======&lt;br /&gt;
1. &amp;lt;code&amp;gt;`blur`&amp;lt;/code&amp;gt; - This event should be passed to processEvent when the app goes to the background.&lt;br /&gt;
     instance.processEvent({'type': 'blur', 'timestamp': Date.now()});&lt;br /&gt;
2. &amp;lt;code&amp;gt;`focus`&amp;lt;/code&amp;gt; - This event should be passed to processEvent when the app goes to the foreground.&lt;br /&gt;
     instance.processEvent({'type': 'focus', 'timestamp': Date.now()});&lt;br /&gt;
3. &amp;lt;code&amp;gt;`appclose`&amp;lt;/code&amp;gt; - This event should be passed prior to closing the app.&lt;br /&gt;
     instance.processEvent({'type': 'appclose', 'timestamp': Date.now()});&lt;br /&gt;
&lt;br /&gt;
===== ID3 Tags =====&lt;br /&gt;
ID3_Payload is the container to pass the retrieved ID3 tag from the stream. The player should look for 'PRIV' ID3 tags and send 'owner' field (which typically starts from &amp;quot;www.nielsen.com&amp;quot;) through this API. Refer to DTVR Event Listeners section below for more information.&lt;br /&gt;
&lt;br /&gt;
'''Sample ID3 Tags'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;www.nielsen.com/X100zdCIGeIlgZnkYj6UvQ==/X100zdCIGeIlgZnkYj6UvQ==/AAAB2Jz2_k74GXSzx4npHuI_&amp;lt;wbr /&amp;gt;JwJd3QSUpW30rDkGTcbHEzIMWleCzM-uvNOP9fzJcQMWQLJqzXMCAxParOb5sGijSV9dNM3QiBniJYGZ5GI-lL1fXTTN0IgZ4iWBmeRiPpS9AAAAAAAAAAAAAAAAAAAAAFJWFM5SVhTONNU=/00000/00000/00&lt;br /&gt;
&lt;br /&gt;
www.nielsen.com/X100zdCIGeIlgZnkYj6UvQ==/R8WHe7pEBeqBhu8jTeXydg==/AAICoyitYqlxT7n6aZ0oMCGhe&amp;lt;wbr /&amp;gt;Fi4CXFp46AMUPZz1lMr_M9tr3_cjee1SHqxrOiVerMDLeyn9xzocZSKwi746Re8vNOtpNCAZjYABs_J0R25IHpvOc1HS8&amp;lt;wbr /&amp;gt;QHGgD5TgOJeS6gX100zdCIGeIlgZnkYj6UvVJWFNhSVhTiPE0=/00000/46016/00&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== DOM-less SDK DTVR Step 4 - Basic Set of Events - Sample Playback ===&lt;br /&gt;
&lt;br /&gt;
==== Sample Nielsen BSDK-Domless NodeJS Example ====&lt;br /&gt;
&lt;br /&gt;
* [https://github.com/NielsenDigitalSDK/bsdk-domless-samples/tree/main/nodejs Nielsen bsdk-domless NodeJS Repository Example]&lt;br /&gt;
&lt;br /&gt;
==== Sample DTVR Video Integration ====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
import { BsdkInstance } from 'bsdk-domless'; &lt;br /&gt;
const nsdkConfig = { &lt;br /&gt;
    app_id: 'PXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX',&lt;br /&gt;
    instance_name: 'videoInstance',&lt;br /&gt;
};&lt;br /&gt;
const implementationHooks = { &lt;br /&gt;
    Log: {&lt;br /&gt;
        info: function (log: string) {&lt;br /&gt;
                console.info(log);&lt;br /&gt;
            },&lt;br /&gt;
        debug: function (log: string) {&lt;br /&gt;
                console.debug(log);&lt;br /&gt;
            },&lt;br /&gt;
        warn: function (log: string) {&lt;br /&gt;
                console.warn(log);&lt;br /&gt;
            },&lt;br /&gt;
        error: function (error: string) {&lt;br /&gt;
                console.error(error);&lt;br /&gt;
            }&lt;br /&gt;
        },&lt;br /&gt;
    Storage: {&lt;br /&gt;
        setItem: async function (key: any, value: string) {&lt;br /&gt;
            /** &lt;br /&gt;
            * Sets a string value for given key. This operation can either modify an existing entry,&lt;br /&gt;
            * if it did exist for given key, or add new one otherwise. &lt;br /&gt;
            * In order to store object value, you need to serialize it, e.g. using JSON.stringify().&lt;br /&gt;
            */&lt;br /&gt;
        },&lt;br /&gt;
        getItem: async function (key: any) {&lt;br /&gt;
            /**&lt;br /&gt;
            * Gets a string value for given key. This function can either return a string value for&lt;br /&gt;
            * existing key or return null otherwise. &lt;br /&gt;
            * In order to store object value, you need to deserialize it, e.g. using JSON.parse().&lt;br /&gt;
            */ &lt;br /&gt;
        },&lt;br /&gt;
        removeItem: async function (key: any) {&lt;br /&gt;
            /**&lt;br /&gt;
            * Removes item for a key, invokes (optional) callback once completed. &lt;br /&gt;
            */&lt;br /&gt;
        }&lt;br /&gt;
    },&lt;br /&gt;
    Fetch: async function (url: string | URL | Request, options: any) {&lt;br /&gt;
        /** &lt;br /&gt;
        * We require that client pass in User-Agent header via options in Fetch request&lt;br /&gt;
        */&lt;br /&gt;
        const clientOpts = { &lt;br /&gt;
            headers: {&lt;br /&gt;
                &amp;quot;User-Agent&amp;quot;: &amp;quot;react-native-domless/1.6.7.42 Dalvik/2.1.0 (Linux; U; Android 5.1.1; Android SDK built for x86 Build/LMY48X)&amp;quot;&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
        const data = Object.assign(options, clientOpts);&lt;br /&gt;
        const response = await fetch(url, data);&lt;br /&gt;
        if (response.ok) {&lt;br /&gt;
            return response;&lt;br /&gt;
        } else {&lt;br /&gt;
            throw new Error('Request failed');&lt;br /&gt;
        }&lt;br /&gt;
    },&lt;br /&gt;
    SetTimeout: function (callback: () =&amp;gt; void, timeout: number | undefined) {&lt;br /&gt;
        return setTimeout(callback, timeout);&lt;br /&gt;
    },&lt;br /&gt;
    SetInterval: function (callback: () =&amp;gt; void, interval: number | undefined) {&lt;br /&gt;
        return setInterval(callback, interval);&lt;br /&gt;
    },&lt;br /&gt;
    ClearTimeout: function (timeout: string | number | NodeJS.Timeout | undefined) {&lt;br /&gt;
        return clearTimeout(timeout); &lt;br /&gt;
    },&lt;br /&gt;
    ClearInterval: function (interval: string | number | NodeJS.Timeout | undefined) {&lt;br /&gt;
        return clearInterval(interval);&lt;br /&gt;
    }&lt;br /&gt;
};&lt;br /&gt;
const nSdkInstance = new BsdkInstance(&lt;br /&gt;
    nsdkConfig.app_id,&lt;br /&gt;
    nsdkConfig.instance_name,&lt;br /&gt;
    {&lt;br /&gt;
        appName: 'BSDK RN Sample App',&lt;br /&gt;
        deviceId: 'testDeviceId',&lt;br /&gt;
        nol_sdkDebug: 'debug', // remove debug flag when going to production &lt;br /&gt;
        domlessEnv: // &amp;quot;1&amp;quot; for React Native | &amp;quot;2&amp;quot; for Amazon | &amp;quot;3&amp;quot; for NodeJS | &amp;quot;4&amp;quot; for Custom&lt;br /&gt;
        // reference SDK interface documentation&lt;br /&gt;
        // for additonal metadata properties&lt;br /&gt;
    },&lt;br /&gt;
    implementationHooks&lt;br /&gt;
); &lt;br /&gt;
// Sample VideoPlayer component&lt;br /&gt;
const VideoPlayer = (props) =&amp;gt; {&lt;br /&gt;
    /**&lt;br /&gt;
    * Implementation of video player component will vary across the board, for Nielsen DOM-less SDK integration&lt;br /&gt;
    * clients need only setup event listeners with corresponding ggPM() calls. &lt;br /&gt;
    * Please refer to chosen video player documentation on available events&lt;br /&gt;
    */&lt;br /&gt;
    const video = useRef&amp;lt;Video&amp;gt;(null);&lt;br /&gt;
    let previousPlayhead = 0; // keep track of previous playhead position&lt;br /&gt;
    let metadataLoaded = false; // in case of replay scenario set flag for metadata load &lt;br /&gt;
    // Sample video metadata &lt;br /&gt;
    const videometadata = {&lt;br /&gt;
        'type': 'content',&lt;br /&gt;
        'adModel': '1'&lt;br /&gt;
    }&lt;br /&gt;
    const setUpEventListeners = (): void =&amp;gt; {&lt;br /&gt;
        video.addEventListener('ended', onEnded);&lt;br /&gt;
        video.addEventListener('playing', onPlay);&lt;br /&gt;
        video.addEventListener('metadata', onMetadata )&lt;br /&gt;
    };&lt;br /&gt;
&lt;br /&gt;
    const onEnded = () =&amp;gt; {&lt;br /&gt;
        // Nielsen SDK ggPM 'end' event&lt;br /&gt;
        if (nSdkInstance) {&lt;br /&gt;
        nSdkInstance.then((instance: any) =&amp;gt; {&lt;br /&gt;
            instance.ggPM('end', Math.round(video.currentTime));&lt;br /&gt;
            metadataLoaded = false;&lt;br /&gt;
        });&lt;br /&gt;
        }&lt;br /&gt;
    };&lt;br /&gt;
&lt;br /&gt;
    // NOTE: some players may have an event when video metadata is loaded, recommended to use if available. E.g. loadedmetadata&lt;br /&gt;
    const onPlay = () =&amp;gt; {&lt;br /&gt;
        // Nielsen SDK ggPM 'loadMetadata' event&lt;br /&gt;
        if (nSdkInstance &amp;amp;&amp;amp; !metadataLoaded) {&lt;br /&gt;
            nSdkInstance.then((instance: any) =&amp;gt; {&lt;br /&gt;
                instance.ggPM('loadMetadata', videometadata);&lt;br /&gt;
                metadataLoaded = true;&lt;br /&gt;
            });&lt;br /&gt;
        }&lt;br /&gt;
    };&lt;br /&gt;
&lt;br /&gt;
    // NOTE: retireval of ID3 tags will vary by player and is primarily used for DTVR measurement&lt;br /&gt;
    const onMetadata = (data) = {&lt;br /&gt;
        if (data.metadata &amp;amp;&amp;amp; data.metadata.key === 'PRIV') {&lt;br /&gt;
            nSdkInstance.then(instance =&amp;gt; {&lt;br /&gt;
            instance.ggPM('sendID3', data.metadata.info);&lt;br /&gt;
            });&lt;br /&gt;
        }&lt;br /&gt;
    };&lt;br /&gt;
&lt;br /&gt;
    return (&lt;br /&gt;
        &amp;lt;View&amp;gt;&lt;br /&gt;
            &amp;lt;Video&lt;br /&gt;
                source={{ uri: 'https://www.w3schools.com/html/mov_bbb.mp4' }}&lt;br /&gt;
            /&amp;gt;&lt;br /&gt;
        &amp;lt;/View&amp;gt;&lt;br /&gt;
    );&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>AmySockanathan</name></author>
	</entry>
	<entry>
		<id>https://nielsentest.mywikis.net/w/index.php?title=Domless_SDK_API_Reference&amp;diff=6811</id>
		<title>Domless SDK API Reference</title>
		<link rel="alternate" type="text/html" href="https://nielsentest.mywikis.net/w/index.php?title=Domless_SDK_API_Reference&amp;diff=6811"/>
		<updated>2025-06-09T19:28:52Z</updated>

		<summary type="html">&lt;p&gt;AmySockanathan: /* Note: Implementation Hooks are mandatory for the DOM-less SDK to function as expected. */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==License==&lt;br /&gt;
Nielsen SDK contains material that is protected by copyright laws, patent laws, trade secret laws, and by international treaty provisions and is Copyright © 2024 The Nielsen Company (US) LLC. All intellectual property rights and licenses therein are reserved by The Nielsen Company (US) LLC and its licensors. Please read the license agreement presented [https://engineeringportal.nielsen.com/wiki/Special:ClickThrough here], which must be accepted in order to download the Nielsen SDKs. For more information, reach out to your Nielsen Technical Account Manager(TAM).&lt;br /&gt;
&lt;br /&gt;
== Overview ==&lt;br /&gt;
The Nielsen DOM-less SDK provides APIs that allows our clients to integrate the Nielsen SDK in DOM-less environments, e.g., React Native, Node, etc.&lt;br /&gt;
&lt;br /&gt;
== DOM-less SDK Initialization ==&lt;br /&gt;
&lt;br /&gt;
=== Obtain the Nielsen Application ID (apid) ===&lt;br /&gt;
The Nielsen &amp;lt;code&amp;gt;apid&amp;lt;/code&amp;gt; is required to enable SDK functionality. Technical Account Manager will provide an apid for each player configuration. Browser SDK can support URLs that use any of the protocols – HTTPS and HTTP.&lt;br /&gt;
&lt;br /&gt;
=== Configure the DOM-less SDK ===&lt;br /&gt;
====Installation====&lt;br /&gt;
Install with &amp;lt;code&amp;gt;npm install &amp;lt;nowiki&amp;gt;https://github.com/NielsenDigitalSDK/bsdk-domless&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; and import the &amp;lt;code&amp;gt;BsdkInstance&amp;lt;/code&amp;gt; into video player component&lt;br /&gt;
 import { BsdkInstance } from 'bsdk-domless'&lt;br /&gt;
======status.ok()======&lt;br /&gt;
Initialization of the instance can be done with &amp;lt;code&amp;gt;status.ok()&amp;lt;/code&amp;gt; function or use Promise handling approach&lt;br /&gt;
 const instance = await new BsdkInstance(appID, instanceName, instanceMetadata, implementationHooks);&lt;br /&gt;
 &lt;br /&gt;
 if (instance &amp;amp;&amp;amp; instance.status.ok()) {&lt;br /&gt;
     expect(instance).not.toBe(undefined);&lt;br /&gt;
     expect(instance.status.ok()).toBe(true);&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Note: ImplementationHooks are mandatory for the DOM-less SDK instance. Please refer to the ImplementationHooks section below for details.&lt;br /&gt;
&lt;br /&gt;
====Exposed Interface====&lt;br /&gt;
The exposed interface is as follows:&lt;br /&gt;
&lt;br /&gt;
1. &amp;lt;code&amp;gt;`ggPM`&amp;lt;/code&amp;gt; - method to send messages to the Nielsen SDK&lt;br /&gt;
&lt;br /&gt;
2. &amp;lt;code&amp;gt;`processEvent`&amp;lt;/code&amp;gt; - method to send app state to the Nielsen SDK, e.g., focus, blur, appclose&lt;br /&gt;
=== Initialization Global Parameters ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
!'''Parameter'''&lt;br /&gt;
!'''Description'''&lt;br /&gt;
!'''Value'''&lt;br /&gt;
|-&lt;br /&gt;
|apid&lt;br /&gt;
|UniqueID assigned to player/site.&lt;br /&gt;
|'XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX'&lt;br /&gt;
|-&lt;br /&gt;
|instanceName&lt;br /&gt;
|Name of SDK instance&lt;br /&gt;
|&amp;quot;any string value&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|domlessEnv&lt;br /&gt;
|Type of Dom-less environment like ReactNative, Node, etc.&lt;br /&gt;
|&amp;quot;domlessEnv&amp;quot;: &amp;quot;1&amp;quot;, // For ReactNative&lt;br /&gt;
&amp;quot;domlessEnv&amp;quot;: &amp;quot;2&amp;quot;, // For Amazon&lt;br /&gt;
&lt;br /&gt;
&amp;quot;domlessEnv&amp;quot;: &amp;quot;3&amp;quot;, // For NodeJS&lt;br /&gt;
&lt;br /&gt;
“domlessEnv”: “4”, // For Custom&lt;br /&gt;
|-&lt;br /&gt;
|deviceId&lt;br /&gt;
|Device Identifier&lt;br /&gt;
|Alphanumeric string eg. &lt;br /&gt;
|-&lt;br /&gt;
|nol_sdkDebug&lt;br /&gt;
|Enables Nielsen console logging. Only required for testing&lt;br /&gt;
|&amp;quot;{nol_sdkDebug: &amp;quot;debug&amp;quot;})&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|optout&lt;br /&gt;
|User optout status&lt;br /&gt;
|&amp;quot;true&amp;quot;, &amp;quot;false&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|hem_sha256&lt;br /&gt;
|SHA256-hashed email address (client-supplied unique 32-character hexadecimal string)&lt;br /&gt;
|&amp;quot;tMmiiTI7IaAcPpQPFQ65uMVCWH8av9jw4cwf/F5HVRQ=&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|hem_sha1&lt;br /&gt;
|SHA1-hashed email address (client-supplied unique 32-character hexadecimal string)&lt;br /&gt;
|&amp;quot;XvBniTI7IaAcPpQPFQ65uMVCWH8av9jw4cwf/F5HVRQ=&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|hem_md5&lt;br /&gt;
|MD5-hashed email address (client-supplied unique 32-character hexadecimal string)&lt;br /&gt;
|&amp;quot;JnIbdTI7IaAcPpQPFQ65uMVCWH8av9jw4cwf/F5HVRQ=&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|uid2&lt;br /&gt;
|An identifier based on a user’s verifiable PII (e.g. hashed email). UID2.0 was initially created by The Trade Desk (TTD) and is now managed by Prebid.&lt;br /&gt;
|&amp;quot;MTKVpUAzwYAPnHrtfE0wlINOMzhU7UUEjjVdCdRu63k=&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|uid2_token&lt;br /&gt;
|Encrypted Unified ID 2.0&lt;br /&gt;
|&amp;quot;AgAAAAPFR0zA5ogv/yaAPiUsAdZPsfqS8Ql&lt;br /&gt;
DSGxAB+rr8yekFs3AjLYVk5qqqiyV2XHbSuwzHmxSlLeQeK QI1mp015jsNnpX5/xGgXldcgVz+gFnyh3T8/3agMwRmyrhC xG4oH2C7fc48AQk2eotE7FW0ZDEYM8fD9ZxDaxFUC/OV3OuZA&amp;amp;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|luid&lt;br /&gt;
|Living Unit ID - Experian Household ID&lt;br /&gt;
'''Note: This parameter is applicable only for CTV and First Party Livestream data'''&lt;br /&gt;
|&amp;quot;B0EOFEDgD&amp;quot;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Implementation Hooks ===&lt;br /&gt;
This object captures the required entities for the DOM-less SDK to operate correctly. These are normally platform dependent and are expected to be passed on to the DOM-less SDK as part of its initialization. See below for the descriptions of each key.&lt;br /&gt;
&lt;br /&gt;
==== '''log''' ====&lt;br /&gt;
Log the DOM-less SDK messages to an external stream, e.g. the browser console, stdout.&lt;br /&gt;
&lt;br /&gt;
e.g. Log.debug('debug', 'NIELSEN TAGS EXPECTED TO FIRE:')&lt;br /&gt;
&lt;br /&gt;
===== Methods =====&lt;br /&gt;
&amp;lt;blockquote&amp;gt;info()&lt;br /&gt;
&lt;br /&gt;
Log.info(label: string, ...message: string[]): void&lt;br /&gt;
&lt;br /&gt;
debug()&lt;br /&gt;
&lt;br /&gt;
Log.debug(label: string, ...message: string[]): void&lt;br /&gt;
&lt;br /&gt;
warn()&lt;br /&gt;
&lt;br /&gt;
Log.warn(label: string, ...message: string[]): void&lt;br /&gt;
&lt;br /&gt;
error()&lt;br /&gt;
&lt;br /&gt;
Log.error(label: string, ...message: string[]): void&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Parameters =====&lt;br /&gt;
&amp;lt;blockquote&amp;gt;label Required&lt;br /&gt;
&lt;br /&gt;
● string - severity type, e.g. info, debug, warn, error or custom label&lt;br /&gt;
&lt;br /&gt;
message Required&lt;br /&gt;
&lt;br /&gt;
● string - message that will be output to the console&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== storage ====&lt;br /&gt;
Persistent storage of key/values, similar in behavior to browser localStorage.&lt;br /&gt;
&lt;br /&gt;
e.g. storage.set('nol_lsid', 'umy3w4ik9usw2ppqmw2vkecckxfob1697308388')&lt;br /&gt;
&lt;br /&gt;
===== Methods =====&lt;br /&gt;
&amp;lt;blockquote&amp;gt;set()&lt;br /&gt;
&lt;br /&gt;
storage.set(key: string, value: string)&lt;br /&gt;
&lt;br /&gt;
get()&lt;br /&gt;
&lt;br /&gt;
storage.get(key: string)&lt;br /&gt;
&lt;br /&gt;
remove()&lt;br /&gt;
&lt;br /&gt;
storage.remove(key: string)&lt;br /&gt;
&lt;br /&gt;
clear()&lt;br /&gt;
&lt;br /&gt;
storage.clear()&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== fetch ====&lt;br /&gt;
Function to fetch resources from the network. Required for the transmission of the DOM-less SDK requests (pings) to the Nielsen endpoints.&lt;br /&gt;
&lt;br /&gt;
e.g. Fetch(resource: string, options: object)&lt;br /&gt;
&lt;br /&gt;
===== Parameters =====&lt;br /&gt;
&amp;lt;blockquote&amp;gt;resource Required&lt;br /&gt;
&lt;br /&gt;
● A string that provides the URL of the resource to fetch&lt;br /&gt;
&lt;br /&gt;
options Optional Object containing settings to apply to the request:&lt;br /&gt;
&lt;br /&gt;
method&lt;br /&gt;
&lt;br /&gt;
● string - request method: &amp;quot;GET&amp;quot;, &amp;quot;POST&amp;quot;. If one is not provided SDK will default to &amp;quot;GET&amp;quot;&lt;br /&gt;
&lt;br /&gt;
headers&lt;br /&gt;
&lt;br /&gt;
● object - headers to add to the outgoing request, an object literal with String values&lt;br /&gt;
&lt;br /&gt;
body&lt;br /&gt;
&lt;br /&gt;
● string - body to add to the request; SDK will send out string&lt;br /&gt;
&lt;br /&gt;
mode&lt;br /&gt;
&lt;br /&gt;
● string - mode for request: cors, no-cors, same-origin&lt;br /&gt;
&lt;br /&gt;
referrer&lt;br /&gt;
&lt;br /&gt;
● string - a string specifying the referrer of the request&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====='''''&amp;lt;pre style=&amp;quot;color: green; font-weight: bold; font-size: 20px&amp;quot;&amp;gt;Note: Implementation Hooks are mandatory for the DOM-less SDK to function as expected.&amp;lt;/pre&amp;gt;'''''=====&lt;br /&gt;
&lt;br /&gt;
==== Nielsen Debug Node.js Server for Event Tracking ====&lt;br /&gt;
We are excited to announce the beta version of our Debug Node.js server, designed to track requests and events sent from our Dom-less SDK using WebSocket connections. While this feature is not officially released, we are currently looking for users interested in beta testing.&lt;br /&gt;
&lt;br /&gt;
If you'd like to try this tool and provide feedback, please reach out to your Nielsen Technical Account Manager (TAM) for more information. Your insights would be invaluable in helping us refine this feature for a future release!&lt;br /&gt;
&lt;br /&gt;
== DOM-less SDK API Methods &amp;amp; Properties ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
!Method/Property&lt;br /&gt;
!Event #&lt;br /&gt;
!DTVR&lt;br /&gt;
!DAR&lt;br /&gt;
!DCR&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|[[play (Browser)|play]]&lt;br /&gt;
|5&lt;br /&gt;
|✔&lt;br /&gt;
|✘&lt;br /&gt;
|✔&lt;br /&gt;
|Used when there is an ID3 fed product such as DTVR and the client does not want to send in all the CMS metadata that is sent in loadMetadata. This allows the client to send in at least the required “channel name” value associated to the ID3 feed. When the client passes in the channelName, they can change the CMS data stored by passing new values. If this event is not called then the “channel name” value populated will be the default value of “defaultChannelName”.&lt;br /&gt;
|-&lt;br /&gt;
|[[stop (Browser)|stop]]&lt;br /&gt;
|7&lt;br /&gt;
|✘&lt;br /&gt;
|✘&lt;br /&gt;
|✔&lt;br /&gt;
|Used when switching between ad and content or content and ad.&lt;br /&gt;
|-&lt;br /&gt;
|[[loadMetadata (Browser)|loadMetadata]]&lt;br /&gt;
|15&lt;br /&gt;
|✔&lt;br /&gt;
|✔&lt;br /&gt;
|✔&lt;br /&gt;
|Used when there is a preroll ad that needs to be associated with content metadata. The loadMetadata will first be called to populate the content metadata values and then the loadMetadata for ad metadata will be called. This allows sending a content ping with the ad info, even if the user bails out during the preroll ad.&lt;br /&gt;
|-&lt;br /&gt;
|[[setPlayheadPosition (Browser)|setPlayheadPosition]]&lt;br /&gt;
|49&lt;br /&gt;
|✘&lt;br /&gt;
|✘&lt;br /&gt;
|✔&lt;br /&gt;
|Used to send the playhead position.&lt;br /&gt;
|-&lt;br /&gt;
|[[sendID3 (Browser)|sendID3]]&lt;br /&gt;
|55&lt;br /&gt;
|✔&lt;br /&gt;
|✘&lt;br /&gt;
|✘&lt;br /&gt;
|Used to send the ID3 metadata.&lt;br /&gt;
|-&lt;br /&gt;
|[[end (Browser)|end]]&lt;br /&gt;
|57&lt;br /&gt;
|✔&lt;br /&gt;
|✘&lt;br /&gt;
|✔&lt;br /&gt;
|This is triggered 1) at the end of the content stream, 2) if the user switches to another piece of content 3) when the browser is refreshed or closed&lt;br /&gt;
|-&lt;br /&gt;
|[[setVolume (Browser)|setVolume]]&lt;br /&gt;
|61&lt;br /&gt;
|✔&lt;br /&gt;
|✘&lt;br /&gt;
|✔&lt;br /&gt;
|Used to pass in the player volume levels in %. Default value is -1.&lt;br /&gt;
|-&lt;br /&gt;
|[[staticstart (Browser)|staticstart]]&lt;br /&gt;
|14&lt;br /&gt;
|✘&lt;br /&gt;
|✘&lt;br /&gt;
|✔&lt;br /&gt;
|Used to send the metadata for the static page.&lt;br /&gt;
|-&lt;br /&gt;
|[[StaticEnd (Browser)|staticend]]&lt;br /&gt;
|56&lt;br /&gt;
|✘&lt;br /&gt;
|✘&lt;br /&gt;
|✔&lt;br /&gt;
|In Single Page Application (SPA) it is imperative that staticend is called prior to the loading of new metadata. This allows the SDK to properly credit the previous section/content being viewed before measuring the new one.&lt;br /&gt;
|-&lt;br /&gt;
|[[onPaginate (Browser)|onPaginate]]&lt;br /&gt;
|30&lt;br /&gt;
|✘&lt;br /&gt;
|✘&lt;br /&gt;
|✔&lt;br /&gt;
|Used to initialize the SDK object&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>AmySockanathan</name></author>
	</entry>
</feed>