<?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=ColinBrown</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=ColinBrown"/>
	<link rel="alternate" type="text/html" href="https://nielsentest.mywikis.net/wiki/Special:Contributions/ColinBrown"/>
	<updated>2026-04-08T21:38:58Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.39.5</generator>
	<entry>
		<id>https://nielsentest.mywikis.net/w/index.php?title=Mobile_DAR_Attributes_Requirements&amp;diff=5974</id>
		<title>Mobile DAR Attributes Requirements</title>
		<link rel="alternate" type="text/html" href="https://nielsentest.mywikis.net/w/index.php?title=Mobile_DAR_Attributes_Requirements&amp;diff=5974"/>
		<updated>2022-09-21T19:08:04Z</updated>

		<summary type="html">&lt;p&gt;ColinBrown: /* Additional DAR Tag Parameters for Mobile App Audience Measurement */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Breadcrumb|}} {{Breadcrumb|Digital}} {{Breadcrumb|Digital Ad Ratings}}  {{CurrentBreadcrumb}}&lt;br /&gt;
[[Category:Digital]]&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
The standard Nielsen Digital Ad Rating (DAR) tag only supports cookie based '''web browser''' viewing on PCs, MACs, and tablets/smartphone (web-browser). However, when ads are served to tablets/smartphones via native '''app-store applications''', the cookie based tag does not function correctly. Additional tag attributes are needed in order for audience reach measurement to function. Example tags are detailed later in this document.&lt;br /&gt;
&lt;br /&gt;
One way Nielsen clients can accomplish this is by the use of Nielsen’s native iOS/Android App SDK. Nielsen’s App SDK automatically adds these additional tag attributes to the standard cookie based webbrowser tag before the tag is forwarded on to the Nielsen census collection system. However, there is a significant portion of the publisher mobile app universe where it is either not feasible, or desirable to integrate Nielsen’s native App SDK into 3rd party applications.&lt;br /&gt;
&lt;br /&gt;
The purpose of this document is to detail the tag URL parameters required that are '''additional''' to the standard cookie based web-browser tag.&lt;br /&gt;
&lt;br /&gt;
The most critical additional parameter required is the insertion of the Advertising ID (IFA / IDFA / AdID) from the users device that has been exposed to the Ad creative.&lt;br /&gt;
&lt;br /&gt;
If you are reading this document as an Ad server representative then it is assumed that you have published a specification that mobile app publishers follow to pass the appropriate Advertising ID in the Ad request payload. Typically, your Ad server will then expand a macro or label with that value passed in the Ad request URL, insert into the DAR mobile app tag and redirect to Nielsen collections. See s. See  [[#Appendix A: Example Implementation]], figure 2 for an example tag workflow.&lt;br /&gt;
&lt;br /&gt;
The standard way of triggering a Digital Ad Ratings (DAR) tag on Mobile-App is for the publisher app to trigger (either directly or via Ad server) the tag upon Ad exposure to the user. i.e. a client-side initiated tag. If you wish to implement server-side dispatch of mobile in-app DAR tags then see additional section in this document titled '''server-side tag dispatch'''. Please read the rest of this document before reading the section on server-server.&lt;br /&gt;
&lt;br /&gt;
Once you have completed your integration, you will be required to submit to a short certification. See [[#Appendix B: Implementation, Testing &amp;amp; Certification]]. Certification also grants inclusion to the approved publisher and certified Ad server vendor list.&lt;br /&gt;
&lt;br /&gt;
'''Important Note:''' for 2018, the MRC has mandated a series of changes to audience measurement that will require additional tag events to be communicated to Nielsen so that we may compute duration weighting etc. You are strongly urged to contact your Nielsen client service representative to seek a briefing from Nielsen on the best technical methods for tagging in order to be compliant with these changes.&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
== Standard DAR Tag ==&lt;br /&gt;
The DAR tag is available as a 1x1 pixel. The following pixel/tag parameters must be specified for all DAR tags, 1x1, regardless of implementation type: browser, mobile browser, mobile app or connected device.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
! Tag Parameter&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| CI&lt;br /&gt;
| Client ID: the ID that is associated with the DAR account that processed tag data is associated with. Will always be hardcoded to a Nielsen generated value that comes from the Nielsen campaign management system&lt;br /&gt;
|- style=&amp;quot;background-color:#eff8ef;&amp;quot;&lt;br /&gt;
| AM&lt;br /&gt;
| Ad Server: an ad server participating on the campaign media-plan. This is an internal Nielsen generated value when the ad server is indicated on the campaign during setup&lt;br /&gt;
|-&lt;br /&gt;
| CA&lt;br /&gt;
| Campaign Id: this is the ID associated with your DAR campaign. Unless you are creating and managing the Nielsen campaign via the DAR Tag API, then this parameter value will always be generated from the Nielsen campaign management system. Note: often maps to a media-plan I/O Id&lt;br /&gt;
|- style=&amp;quot;background-color:#eff8ef;&amp;quot;&lt;br /&gt;
| CR&lt;br /&gt;
| Creative Id: DAR does not currently report at the creative level; can be hard coded ad server id or associated with a macro expansion&lt;br /&gt;
|-&lt;br /&gt;
| PC&lt;br /&gt;
| Placement Id: can be generated by the ad server via macro expansion or generated by the Nielsen campaign management system. Note: often maps to one of Ad Unit Id, Line Item Id or Video Ad Id&lt;br /&gt;
|- style=&amp;quot;background-color:#eff8ef;&amp;quot;&lt;br /&gt;
| CE&lt;br /&gt;
| Site Id: the Id that identifies a publisher site that the placement needs to be mapped to. Maps into the Nielsen MarketView database. Note: can be hardcoded to a pre-registered ad server site id in the Nielsen system or a macro expansion where more than one pre-existing site ids have been made known to Nielsen&lt;br /&gt;
|-&lt;br /&gt;
| R&lt;br /&gt;
| Cachebuster (web): timestamp / random number. Generated by ad server&lt;br /&gt;
|- style=&amp;quot;background-color:#eff8ef;&amp;quot;&lt;br /&gt;
| AT&lt;br /&gt;
| Fixed value: “view”&lt;br /&gt;
|-&lt;br /&gt;
| RT&lt;br /&gt;
| Fixed value: “banner”&lt;br /&gt;
|- style=&amp;quot;background-color:#eff8ef;&amp;quot;&lt;br /&gt;
| ST&lt;br /&gt;
| Fixed value: “image”&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;blockquote&amp;gt; Do not URL encode the values&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Additional DAR Tag Parameters for Mobile App Audience Measurement ==&lt;br /&gt;
In this section, the additional URL parameters required beyond the standard cookie based web-browser tag are described in detail.&lt;br /&gt;
&lt;br /&gt;
For each of the tag examples detailed below, we can support both non-secure (http) and secure (https) flavors. The standard cookie based web-browser tag is included below for reference purposes.&lt;br /&gt;
&lt;br /&gt;
'''Important note:''' the values against each value-pair in the following tags are for illustrative purposes only. Values for CA, PC and CE will vary depending on the specific campaign being measured and capabilities of the Ad server for macro/value expansion. For more detail on the core DAR  parameters, please see the '''Nielsen DAR Tag Implementation Guide.'''&lt;br /&gt;
&lt;br /&gt;
'''Web Browser DAR tag (cookie based persons identification)'''&lt;br /&gt;
&amp;lt;code&amp;gt; //secure-gl.imrworldwide.com/cgi-bin/m?ci=nlsnci535&amp;amp;am=3&amp;amp;at=view&amp;amp;rt=banner&amp;amp;st=image&amp;amp;ca=nlsn12452&amp;amp;cr=crtve&amp;amp;pc=&amp;lt;creativeid&amp;gt;_plc0001&amp;amp;ce=&amp;lt;siteid&amp;gt;&amp;amp;r=&amp;lt;timestamp&amp;gt; &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Mobile-App DAR Tag Extension (IFA based persons identification)'''&lt;br /&gt;
&amp;lt;code&amp;gt; //secure-gl.imrworldwide.com/cgi-bin/m?ci=nlsnci535&amp;amp;am=3&amp;amp;at=view&amp;amp;rt=banner&amp;amp;st=image&amp;amp;ca=nlsn12452&amp;amp;cr=crtve&amp;amp;pc=&amp;lt;creativeid&amp;gt;_plc0001&amp;amp;ce=&amp;lt;siteid&amp;gt;&amp;amp;c7=osgrp,IOS&amp;amp;c8=devgrp,PHN&amp;amp;c9=devid,XXXX-XX-XXXXX-XXXX &amp;amp;c10=plt,MBL&amp;amp;c12=apv,&amp;lt;appVersion&amp;gt;&amp;amp;c13=asid,NIELSEN-PROVIDEDID&amp;amp;c14=osver,7.0.4&amp;amp;uoo=0&amp;amp;r=&amp;lt;timestamp&amp;gt; &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|- style=&amp;quot;font-weight:bold; &amp;quot;&lt;br /&gt;
! style=&amp;quot;vertical-align:middle;&amp;quot; | Additional DAR Tag&amp;lt;br /&amp;gt; Parameters for Mobile&lt;br /&gt;
! style=&amp;quot;vertical-align:middle;&amp;quot; | Example&lt;br /&gt;
! style=&amp;quot;vertical-align:middle;&amp;quot; | Description&lt;br /&gt;
! style=&amp;quot;vertical-align:middle;&amp;quot; | Mandatory parameter&amp;lt;br /&amp;gt;for mDAR?&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;&amp;quot; | &amp;amp;c7&lt;br /&gt;
| &amp;amp;c7=osgrp,IOS&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;&amp;quot; | OS Grouping&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;&amp;quot; | &lt;br /&gt;
|- style=&amp;quot;background-color:#eff8ef;&amp;quot;&lt;br /&gt;
|  &amp;amp;c8&lt;br /&gt;
| &amp;amp;c8=devgrp,PHN&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;&amp;quot; | Device Grouping&lt;br /&gt;
 | ✔&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;&amp;quot; | &amp;amp;c9&lt;br /&gt;
| &amp;amp;c9=devid,CB6E9220-EA64-440B-9456-33AD2294C658&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; &amp;quot; | Advertising ID&lt;br /&gt;
|   ✔&lt;br /&gt;
|- style=&amp;quot;background-color:#eff8ef;&amp;quot;&lt;br /&gt;
| &amp;amp;c10&lt;br /&gt;
| &amp;amp;c10=plt,MBL&lt;br /&gt;
|  Platform&lt;br /&gt;
|  ✔&lt;br /&gt;
|-&lt;br /&gt;
| &amp;amp;c12&lt;br /&gt;
| &amp;amp;c12=apv,1&lt;br /&gt;
|  App Version&lt;br /&gt;
| &lt;br /&gt;
|- style=&amp;quot;background-color:#eff8ef;&amp;quot;&lt;br /&gt;
|  &amp;amp;c13&lt;br /&gt;
| c13=asid,DD8136-4F0B-470B-9ACA-231E818D95BC&lt;br /&gt;
|  AppID (Nielsen assigned App ID)&lt;br /&gt;
| | ✔&lt;br /&gt;
|-&lt;br /&gt;
|  &amp;amp;c14&lt;br /&gt;
| &amp;amp;c14=osver,15.1.3&lt;br /&gt;
| OS Version&lt;br /&gt;
|  &lt;br /&gt;
|- style=&amp;quot;background-color:#eff8ef;&amp;quot;&lt;br /&gt;
|&amp;amp;uoo&lt;br /&gt;
| &amp;amp;uoo=0&lt;br /&gt;
| Opt-out indicator&lt;br /&gt;
|  ✔&lt;br /&gt;
|-&lt;br /&gt;
|  | &amp;amp;hem_md5&lt;br /&gt;
| &amp;amp;hem_md5=53d8c474c1e871bdd34f14785dbcfd94&lt;br /&gt;
| | MD5 Hashed Email&lt;br /&gt;
| &lt;br /&gt;
|- style=&amp;quot;background-color:#eff8ef;&amp;quot;&lt;br /&gt;
| &amp;amp;hem_sha1&lt;br /&gt;
| &lt;br /&gt;
| SHA1 Hashed Email&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
|&amp;amp;hem_sha256&lt;br /&gt;
| &lt;br /&gt;
| SHA256 Hashed Email&lt;br /&gt;
 | &lt;br /&gt;
|- style=&amp;quot;background-color:#eff8ef;&amp;quot;&lt;br /&gt;
 | &amp;amp;hem_unknown&lt;br /&gt;
| &lt;br /&gt;
| Unknown Hashed Algorithm Email&lt;br /&gt;
 | &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;'''Note''': Clients are encouraged to make an effort to always fill-in optional parameters.&lt;br /&gt;
&lt;br /&gt;
'''Note''': Do not URL encode the values.&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== C7 - OS Grouping (Optional) ==&lt;br /&gt;
Valid device OS Grouping data values are the following literal values:&lt;br /&gt;
* osgrp,IOS&lt;br /&gt;
* osgrp,DROID&lt;br /&gt;
* osgrp,ANDROID&lt;br /&gt;
&amp;lt;blockquote&amp;gt;'''Note''': If one of the above values cannot be specific, then the parameter should not be included in the call.&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== C8 - Device Grouping (Mandatory)==&lt;br /&gt;
Valid literal values for phone, tablet, portable media player (iPod) and unknown are as follows:&lt;br /&gt;
* devgrp,PHN - Phone&lt;br /&gt;
* devgrp,TAB - Tablet&lt;br /&gt;
* devgrp,PMP - Portable Media Player (iPod)&lt;br /&gt;
* devgrp,UNWN - Unknown/Unclassified&lt;br /&gt;
* devgrp,DSK - Desktop&lt;br /&gt;
* devgrp,STV ←​ CTV/OTT Device&lt;br /&gt;
==== Notes ====&lt;br /&gt;
* Mandatory for accurate measurement, and if unable to pass, Nielsen cannot guarantee the impression will be classified correctly. &lt;br /&gt;
* “​UNWN” will result in Nielsen attempting an introspection of the User Agent in the HTTP request sent against Device Atlas for classification. &lt;br /&gt;
* “STV” is the default value for OTT when the specific device value isn’t passed.&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== C9 - Advertising ID (Mandatory) ==&lt;br /&gt;
This is the advertiser ID for the client’s mobile device. IDFA for iOS, Google Advertising ID for Android:&lt;br /&gt;
* devid,&amp;lt;IDFA&amp;gt;&lt;br /&gt;
* devid,&amp;lt;IFA&amp;gt;&lt;br /&gt;
* devid,&amp;lt;Google Advertising ID&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|- style=&amp;quot;background-color:#efefef;&amp;quot;&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot; | Below are the supported hash methods for the devid value:&lt;br /&gt;
|- style=&amp;quot;vertical-align:bottom;&amp;quot;&lt;br /&gt;
| Clear Text&lt;br /&gt;
| c9=devid,CB6E9220-EA64-440B-9456-33AD2294C658&lt;br /&gt;
|- style=&amp;quot;vertical-align:bottom;&amp;quot;&lt;br /&gt;
| sha256&lt;br /&gt;
| c9=devid,136844f58ab7f7e991ea4b5150ec767c9327e1391c839a3b3612d418ae875391&lt;br /&gt;
|- style=&amp;quot;vertical-align:bottom;&amp;quot;&lt;br /&gt;
| Sha1&lt;br /&gt;
| c9=devid,a08039967f4817ada4a7f331369eea522ad415a7&lt;br /&gt;
|- style=&amp;quot;vertical-align:bottom;&amp;quot;&lt;br /&gt;
| md5&lt;br /&gt;
| c9=devid,53d8c474c1e871bdd34f14785dbcfd94&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Notes ====&lt;br /&gt;
For Android devices, the Google Advertiser ID should be used as the default and the Android ID as the second option.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* If C9 is &amp;lt;empty&amp;gt;, upon receiving the ping, the Nielsen collection server will attempt a 302 redirect to the data provider per the regular DAR pixel for browsers.&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
* As of August 1, 2014, Google is enforcing use of the Advertising ID for advertising and user analytics (http://play.google.com/about/developer-content-policy.html).&lt;br /&gt;
&amp;lt;blockquote&amp;gt;'' &amp;quot;Beginning August 1st 2014, all updates and new apps uploaded to the Play Store must use the advertising ID (when available on a device) in lieu of any other device identifiers for any advertising purposes.&amp;quot;&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
* It is preferred that the IDFA or Google Advertising ID be sent as is from the mobile device (“cleartext”). However, if mandated, we will support SHA256 hashed values with no-salt. Passing a hashed value (and/or salting) using any other standard will result in a failed match by the data provider upon receiving the ping. In turn, this results in impressions surfacing in the DAR unmeasurable audience totals. Please contact Nielsen if you anticipate a large percentage of hashed values coming in from your publisher clients.&lt;br /&gt;
&lt;br /&gt;
=== Privacy, Ad Tracking, and Ad Targeting ===&lt;br /&gt;
In newer iterations of the iOS and Android device operating systems, a facility exists allowing users to “opt-out” of “Ad Tracking”. It is Nielsen’s interpretation that this setting is primarily designed to allow users to specify opt-out of Ad Targeting rather than Ad Measurement. DAR&lt;br /&gt;
does not provide Ad Targeting data.&lt;br /&gt;
&lt;br /&gt;
However, it is also Nielsen’s position that the publisher or Ad network should provide a mechanism to also allow a user to opt-out of Ad Measurement. The Nielsen SDK will honor the Nielsen Ad Measurement opt-out settings configurable @ http://www.nielsen.com/us/en/campaigns/privacy-policy-opt-out.html.&lt;br /&gt;
&lt;br /&gt;
However if the integration approach described in this document is being used instead of the Nielsen SDK then '''YOU''' as the publisher or Ad network must provide a capability to opt-out of Ad Measurement as the configuration on www.nielsen.com will not be detectable. You may&lt;br /&gt;
elect to interpret the iOS / Android “Ad Tracking” setting for the purpose of limit Ad measurement or provide a separate discreet mechanism to allow a user to opt-out of Ad measurement.&lt;br /&gt;
&lt;br /&gt;
Please see '''&amp;amp;uoo''' later in this document for implementation details of the optout indicator.&lt;br /&gt;
&lt;br /&gt;
For additional clarification on privacy policy, please contact your Nielsen representative.&lt;br /&gt;
&lt;br /&gt;
== C10 - Platform (Mandatory) ==&lt;br /&gt;
To determine this value, Nielsen suggests that the ad network leverage user agent information to determine if the client device is either a mobile or desktop device.&lt;br /&gt;
&lt;br /&gt;
Valid literal values for mobile and desktop data values are as follows:&lt;br /&gt;
* plt,MBL&lt;br /&gt;
* plt,DSK&lt;br /&gt;
* plt,OTT&lt;br /&gt;
==== Notes ====&lt;br /&gt;
* Mandatory for accurate measurement, and if unable to pass, Nielsen cannot guarantee the impression will be classified correctly. &lt;br /&gt;
* Omitting c10, or a value in c10, will result in Nielsen attempting an introspection of the User Agent in the HTTP request sent against Device Atlas for classification. &lt;br /&gt;
* “OTT” (Connective Devices) is a valid value that is populated by participating vendors (Amazon, Hulu and Roku).  Non-participating vendors will be unmeasurable volumetric metric only.&lt;br /&gt;
&lt;br /&gt;
== C12 - App Version (Optional) ==&lt;br /&gt;
This is the version of the ad network system software or SDK that is implemented in this extension. Although this field is not required, this feature can be useful for troubleshooting purposes following deployment.&lt;br /&gt;
* apv,&amp;lt;N.N&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== C13 - AppID ==&lt;br /&gt;
This Nielsen provided ID is unique to the ad network and is required for certification.&lt;br /&gt;
* asid,&amp;lt;NNNNNNNNN-NNNN-NNNN-NNNN-NNNNNNNNNNNN&amp;gt;&lt;br /&gt;
An App ID will be provided for testing. A separate App ID will be provided for production use. Please request from your Nielsen representative.&lt;br /&gt;
&amp;lt;blockquote&amp;gt;'''Note''': If you are a publisher leveraging the non-SDK solution, you will be provided with a unique App ID for each combination of app and device OS type.&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== C14 - OS Version (Optional) ==&lt;br /&gt;
Operating system version&lt;br /&gt;
* osver,&amp;lt;OS Version&amp;gt;&lt;br /&gt;
Example: for iOS -&amp;gt; 7.0.4&lt;br /&gt;
&lt;br /&gt;
== UOO - Opt Out ==&lt;br /&gt;
Opt-out parameter&lt;br /&gt;
* &amp;lt;Boolean state&amp;gt;&lt;br /&gt;
&amp;lt;Boolean state&amp;gt; is a Boolean representation of whether the user is opting out or not.&lt;br /&gt;
&lt;br /&gt;
The absence of uoo in the tag is interpreted as an implicit opt-in. i.e. not opting out.&lt;br /&gt;
&lt;br /&gt;
The following pairings of opt-out are supported. '''Important:''' you must choose one set of paired values only and inform your Nielsen representative.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Opt-out !! Opt-in&lt;br /&gt;
|-&lt;br /&gt;
| uoo=true || uoo=false&lt;br /&gt;
|-&lt;br /&gt;
| uoo=1 || uoo=0&lt;br /&gt;
|-&lt;br /&gt;
| uoo=yes || uoo=no&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;blockquote&amp;gt;'''Note''':  if your Ad server is not capable os supporting the discrete &amp;amp;uoo parameter then you can set the c9 value to &amp;lt;code&amp;gt;devid,optout&amp;lt;/code&amp;gt; (for example &amp;lt;code&amp;gt;…&amp;amp;c8=PHN&amp;amp;c9=devid,optout&amp;amp;c10=MBL…&amp;lt;/code&amp;gt;)&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
== Additional Parameters == &lt;br /&gt;
This section describes several important additional parameters that the DAR tag can support, specifically Hashed Email, and UID2 values. Please note that all parameters are case-sensitive.&lt;br /&gt;
&lt;br /&gt;
Please work with your Nielsen Technical Account Manager to decide which of the following parameters to append to the standard DAR tag.&lt;br /&gt;
=== HEM Support (Hashed Email) ===&lt;br /&gt;
Please use the parameter that matches your hashing algorithm. For example, if you are using sha256 to encode the email address, then use hem_sha256={encrypted_value_here}&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-weight:bold; background-color:#EAECF0;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Name&lt;br /&gt;
! Description&lt;br /&gt;
! Available Tag Parameters&lt;br /&gt;
|- style=&amp;quot;font-weight:normal; background-color:#F8F9FA;&amp;quot;&lt;br /&gt;
| Hashed Email&lt;br /&gt;
| User’s email address that has been run through a hashing algorithm&amp;lt;br /&amp;gt;(e.g. SHA256, MD5, SHA1) to create a unique hexadecimal string.&amp;lt;br /&amp;gt; If a client is unable to determine hashing type, they should pass&amp;lt;br /&amp;gt;using &amp;amp;hem_unknown parameter.&lt;br /&gt;
| &amp;amp;hem_unknown&amp;lt;br /&amp;gt;&amp;amp;hem_sha256&amp;lt;br /&amp;gt;&amp;amp;hem_md5&amp;lt;br /&amp;gt;&amp;amp;hem_sha1&lt;br /&gt;
|}&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-weight:bold;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background-color:#dae8fc; color:#002041;&amp;quot;&lt;br /&gt;
! Example&lt;br /&gt;
|- style=&amp;quot;font-weight:normal;&amp;quot;&lt;br /&gt;
| hem_sha256=tMmiiTI7IaAcPpQPFQ65uMVCWH8av9jw4cwf/F5HVRQ=&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Unified ID ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;background-color:#F8F9FA;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;font-weight:bold; background-color:#EAECF0;&amp;quot;&lt;br /&gt;
! Name&lt;br /&gt;
! Description&lt;br /&gt;
! Available Tag Parameters&lt;br /&gt;
|-&lt;br /&gt;
| Unified ID 2.0&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)&amp;lt;br /&amp;gt;and is now managed by Prebid.&lt;br /&gt;
| &amp;amp;uid2&lt;br /&gt;
|-&lt;br /&gt;
| Unified ID 2.0 Token&lt;br /&gt;
| Encrypted Unified ID 2.0&lt;br /&gt;
| &amp;amp;uid_token&lt;br /&gt;
|}&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-weight:bold;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background-color:#32BBB9; color:#002041;&amp;quot;&lt;br /&gt;
! Example&lt;br /&gt;
|- style=&amp;quot;font-weight:normal;&amp;quot;&lt;br /&gt;
| uid2=MTKVpUAzwYAPnHrtfE0wlINOMzhU7UUEjjVdCdRu63k=&amp;lt;br /&amp;gt;uid_token=AgAAAAPFR0zA5ogv/yaAPiUsAdZPsfqS8QlDSGxAB+rr8yekFs3AjLYVk5qqqiyV2XHbSuwzHmxSlLeQeKQI1mp015jsNnpX5&amp;lt;br /&amp;gt;/xGgXldcgVz+gFnyh3T8/3agMwRmyrhCxG4oH2C7fc48AQk2eotE7FW0ZDEYM8fD9ZxDaxFUC/OV3OuZA&amp;amp;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Server-Side Tag Dispatch ==&lt;br /&gt;
The standard way of triggering a Digital Ad Ratings (DAR) tag on Mobile-App is for the publisher app to trigger (either directly or via Ad server) the tag upon Ad exposure to the user. i.e. a client-side initiated tag.&lt;br /&gt;
&lt;br /&gt;
It is important to note that MRC/IAB measurement standards stipulate that the Ad exposure event still be initiated and recorded from the client-side, even if the Ad measurement tag (in this case a DAR tag) is physically initiated from the server-side. Evidence may be required (publisher log file or similar) from the MRC/IAB that the user was exposed to the Ad creative on their device.&lt;br /&gt;
&lt;br /&gt;
The following additional changes to the standard mobile-app DAR tag are required to support dispatch the DAR tag from a '''server-side''' publisher ad server:&lt;br /&gt;
&lt;br /&gt;
#'''X-Forwarded-For (XFF) IP:''' The original client IP address must be passed in the X-Forwarded-For (XFF) HTTP header field. When the impression is fired directly from the Ad Server, the XReal-IP will be the Ad Server IP.&lt;br /&gt;
#'''Cachebuster:''' Already present in the DAR tag, this now becomes mandatory. A cachebuster or random number ensures a new call is made to the Ad Server. By including a cachebuster ('r' parameter), the tag will not be cached. The timestamp of when the Ad was served can be used.&lt;br /&gt;
#'''User Agent (UA):''' The HTTP UA from the client device should be used to populate the HTTP UA in the server-server connection/ping.&lt;br /&gt;
#'''TLS:''' the tag received by Nielsen must be TLS v1.2 compliant or greater.&lt;br /&gt;
&lt;br /&gt;
==== Important notes ====&lt;br /&gt;
* the current iteration of server-server tag collection only supports mobile-app (IFA and AAID) and will NOT support cookie based audience measurement.&lt;br /&gt;
* The client’s server-server setup that is going to trigger/send the DAR tag should ​suppress​ any Nielsen cookie returned by the Nielsen collection server as a result of the first DAR tag received. If the Nielsen cookie (returned upon receiving the first DAR tag into secure.imrworldwide.com) is not suppressed then invalid traffic (IVT) filtration will quickly be triggered upon receiving the 2​nd and nth tag.&lt;br /&gt;
&lt;br /&gt;
== Appendix A: Example Implementation ==&lt;br /&gt;
In the below examples, you will see the overall DAR flow (Figure 1) and a detailed illustrative Ad Request / Response model (Figure 2).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div align=&amp;quot;center&amp;quot;&amp;gt;'''Figure 1 – End to End Data Flow'''&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:mDAR_Dataflow.png|center|link=]]&lt;br /&gt;
&lt;br /&gt;
Nielsen certified publishers and platforms will append the new parameters (below) with the appropriate URL safe values passed to Nielsen’s current DAR tag. The current DAR tag should be acquired using the existing processes for each campaign/placement. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&amp;lt;code&amp;gt;'''&amp;amp;c7'''=osgrp,IOS'''&amp;amp;c8'''=devgrp,PHN'''&amp;amp;c9'''=devid,XXXX-XX-XXXXXXXXX'''&amp;amp;c10'''=plt,MBL'''&amp;amp;c12'''=apv,AppVersion'''&amp;amp;c13'''=asid,XXXX-XX-XXXX-XXXX&amp;lt;/code&amp;gt;&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div align=&amp;quot;center&amp;quot;&amp;gt;'''Figure 2 – Illustrative Ad Request / Ad Response'''&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:ad_response.png|center|link=]]&lt;br /&gt;
&lt;br /&gt;
The above is an example of how an Ad server is supporting the build of mobile DAR tags for its publisher clients.&lt;br /&gt;
*Step 2 in Figure 1 is a summary of steps 1 and 2 in Figure 2 above.&lt;br /&gt;
*Steps 3 and 4 in Figure 1 is a summary of steps 3 through 9 in Figure 2 above.&lt;br /&gt;
&lt;br /&gt;
== Appendix B: Implementation, Testing &amp;amp; Certification ==&lt;br /&gt;
Once you have integrated the ping per the above specs, Nielsen requires you to pass through a one-time certification before traffic can be accepted into the production environment.&lt;br /&gt;
&lt;br /&gt;
The overall process is:&lt;br /&gt;
* Valid DAR contract or NDA is in place.&lt;br /&gt;
* Kick-off meeting with Nielsen onboarding team.&lt;br /&gt;
* Confirm meet minimums testing requirements:&lt;br /&gt;
** Host Ad/Tag for in-app delivery&lt;br /&gt;
** Can pass opt-out back to Nielsen&lt;br /&gt;
** Can pass Device ID in cleartext or SHA-256&lt;br /&gt;
* Nielsen provides the mDAR testing form that includes the test App ID and the test tag&lt;br /&gt;
* Identify the live campaigns for initial testing and run the test tag; suggest 5,000-10,000 impressions.&lt;br /&gt;
* Nielsen validates the data received from the test and confirms the initial test successful and provides the production App ID.&lt;br /&gt;
* Ensure contracts are in place for external test campaign with Nielsen Client Service team.&lt;br /&gt;
* Identify another live campaigns for production testing with production tag and app ID.&lt;br /&gt;
* Nielsen validates the data received from the final test and confirms certification for any DAR countries tested.&lt;br /&gt;
==== Goals ====&lt;br /&gt;
* To test in full DAR E2E environment, receive matches from data provider for demographics and correct identification of mobile impressions.&lt;br /&gt;
* To test that all minimum requirements in step 3 are passed to Nielsen with no issues.&lt;br /&gt;
* To test in a full DAR end-to-end environment, receive matches from data providers for demographics and correct identification of mobile impressions.&lt;/div&gt;</summary>
		<author><name>ColinBrown</name></author>
	</entry>
	<entry>
		<id>https://nielsentest.mywikis.net/w/index.php?title=Mobile_DAR_Attributes_Requirements&amp;diff=5973</id>
		<title>Mobile DAR Attributes Requirements</title>
		<link rel="alternate" type="text/html" href="https://nielsentest.mywikis.net/w/index.php?title=Mobile_DAR_Attributes_Requirements&amp;diff=5973"/>
		<updated>2022-09-21T19:06:07Z</updated>

		<summary type="html">&lt;p&gt;ColinBrown: /* Additional DAR Tag Parameters for Mobile App Audience Measurement */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Breadcrumb|}} {{Breadcrumb|Digital}} {{Breadcrumb|Digital Ad Ratings}}  {{CurrentBreadcrumb}}&lt;br /&gt;
[[Category:Digital]]&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
The standard Nielsen Digital Ad Rating (DAR) tag only supports cookie based '''web browser''' viewing on PCs, MACs, and tablets/smartphone (web-browser). However, when ads are served to tablets/smartphones via native '''app-store applications''', the cookie based tag does not function correctly. Additional tag attributes are needed in order for audience reach measurement to function. Example tags are detailed later in this document.&lt;br /&gt;
&lt;br /&gt;
One way Nielsen clients can accomplish this is by the use of Nielsen’s native iOS/Android App SDK. Nielsen’s App SDK automatically adds these additional tag attributes to the standard cookie based webbrowser tag before the tag is forwarded on to the Nielsen census collection system. However, there is a significant portion of the publisher mobile app universe where it is either not feasible, or desirable to integrate Nielsen’s native App SDK into 3rd party applications.&lt;br /&gt;
&lt;br /&gt;
The purpose of this document is to detail the tag URL parameters required that are '''additional''' to the standard cookie based web-browser tag.&lt;br /&gt;
&lt;br /&gt;
The most critical additional parameter required is the insertion of the Advertising ID (IFA / IDFA / AdID) from the users device that has been exposed to the Ad creative.&lt;br /&gt;
&lt;br /&gt;
If you are reading this document as an Ad server representative then it is assumed that you have published a specification that mobile app publishers follow to pass the appropriate Advertising ID in the Ad request payload. Typically, your Ad server will then expand a macro or label with that value passed in the Ad request URL, insert into the DAR mobile app tag and redirect to Nielsen collections. See s. See  [[#Appendix A: Example Implementation]], figure 2 for an example tag workflow.&lt;br /&gt;
&lt;br /&gt;
The standard way of triggering a Digital Ad Ratings (DAR) tag on Mobile-App is for the publisher app to trigger (either directly or via Ad server) the tag upon Ad exposure to the user. i.e. a client-side initiated tag. If you wish to implement server-side dispatch of mobile in-app DAR tags then see additional section in this document titled '''server-side tag dispatch'''. Please read the rest of this document before reading the section on server-server.&lt;br /&gt;
&lt;br /&gt;
Once you have completed your integration, you will be required to submit to a short certification. See [[#Appendix B: Implementation, Testing &amp;amp; Certification]]. Certification also grants inclusion to the approved publisher and certified Ad server vendor list.&lt;br /&gt;
&lt;br /&gt;
'''Important Note:''' for 2018, the MRC has mandated a series of changes to audience measurement that will require additional tag events to be communicated to Nielsen so that we may compute duration weighting etc. You are strongly urged to contact your Nielsen client service representative to seek a briefing from Nielsen on the best technical methods for tagging in order to be compliant with these changes.&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
== Standard DAR Tag ==&lt;br /&gt;
The DAR tag is available as a 1x1 pixel. The following pixel/tag parameters must be specified for all DAR tags, 1x1, regardless of implementation type: browser, mobile browser, mobile app or connected device.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
! Tag Parameter&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| CI&lt;br /&gt;
| Client ID: the ID that is associated with the DAR account that processed tag data is associated with. Will always be hardcoded to a Nielsen generated value that comes from the Nielsen campaign management system&lt;br /&gt;
|- style=&amp;quot;background-color:#eff8ef;&amp;quot;&lt;br /&gt;
| AM&lt;br /&gt;
| Ad Server: an ad server participating on the campaign media-plan. This is an internal Nielsen generated value when the ad server is indicated on the campaign during setup&lt;br /&gt;
|-&lt;br /&gt;
| CA&lt;br /&gt;
| Campaign Id: this is the ID associated with your DAR campaign. Unless you are creating and managing the Nielsen campaign via the DAR Tag API, then this parameter value will always be generated from the Nielsen campaign management system. Note: often maps to a media-plan I/O Id&lt;br /&gt;
|- style=&amp;quot;background-color:#eff8ef;&amp;quot;&lt;br /&gt;
| CR&lt;br /&gt;
| Creative Id: DAR does not currently report at the creative level; can be hard coded ad server id or associated with a macro expansion&lt;br /&gt;
|-&lt;br /&gt;
| PC&lt;br /&gt;
| Placement Id: can be generated by the ad server via macro expansion or generated by the Nielsen campaign management system. Note: often maps to one of Ad Unit Id, Line Item Id or Video Ad Id&lt;br /&gt;
|- style=&amp;quot;background-color:#eff8ef;&amp;quot;&lt;br /&gt;
| CE&lt;br /&gt;
| Site Id: the Id that identifies a publisher site that the placement needs to be mapped to. Maps into the Nielsen MarketView database. Note: can be hardcoded to a pre-registered ad server site id in the Nielsen system or a macro expansion where more than one pre-existing site ids have been made known to Nielsen&lt;br /&gt;
|-&lt;br /&gt;
| R&lt;br /&gt;
| Cachebuster (web): timestamp / random number. Generated by ad server&lt;br /&gt;
|- style=&amp;quot;background-color:#eff8ef;&amp;quot;&lt;br /&gt;
| AT&lt;br /&gt;
| Fixed value: “view”&lt;br /&gt;
|-&lt;br /&gt;
| RT&lt;br /&gt;
| Fixed value: “banner”&lt;br /&gt;
|- style=&amp;quot;background-color:#eff8ef;&amp;quot;&lt;br /&gt;
| ST&lt;br /&gt;
| Fixed value: “image”&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;blockquote&amp;gt; Do not URL encode the values&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Additional DAR Tag Parameters for Mobile App Audience Measurement ==&lt;br /&gt;
In this section, the additional URL parameters required beyond the standard cookie based web-browser tag are described in detail.&lt;br /&gt;
&lt;br /&gt;
For each of the tag examples detailed below, we can support both non-secure (http) and secure (https) flavors. The standard cookie based web-browser tag is included below for reference purposes.&lt;br /&gt;
&lt;br /&gt;
'''Important note:''' the values against each value-pair in the following tags are for illustrative purposes only. Values for CA, PC and CE will vary depending on the specific campaign being measured and capabilities of the Ad server for macro/value expansion. For more detail on the core DAR  parameters, please see the '''Nielsen DAR Tag Implementation Guide.'''&lt;br /&gt;
&lt;br /&gt;
'''Web Browser DAR tag (cookie based persons identification)'''&lt;br /&gt;
&amp;lt;code&amp;gt; //secure-gl.imrworldwide.com/cgi-bin/m?ci=nlsnci535&amp;amp;am=3&amp;amp;at=view&amp;amp;rt=banner&amp;amp;st=image&amp;amp;ca=nlsn12452&amp;amp;cr=crtve&amp;amp;pc=&amp;lt;creativeid&amp;gt;_plc0001&amp;amp;ce=&amp;lt;siteid&amp;gt;&amp;amp;r=&amp;lt;timestamp&amp;gt; &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Mobile-App DAR Tag Extension (IFA based persons identification)'''&lt;br /&gt;
&amp;lt;code&amp;gt; //secure-gl.imrworldwide.com/cgi-bin/m?ci=nlsnci535&amp;amp;am=3&amp;amp;at=view&amp;amp;rt=banner&amp;amp;st=image&amp;amp;ca=nlsn12452&amp;amp;cr=crtve&amp;amp;pc=&amp;lt;creativeid&amp;gt;_plc0001&amp;amp;ce=&amp;lt;siteid&amp;gt;&amp;amp;c7=osgrp,IOS&amp;amp;c8=devgrp,PHN&amp;amp;c9=devid,XXXX-XX-XXXXX-XXXX &amp;amp;c10=plt,MBL&amp;amp;c12=apv,&amp;lt;appVersion&amp;gt;&amp;amp;c13=asid,NIELSEN-PROVIDEDID&amp;amp;c14=osver,7.0.4&amp;amp;uoo=0&amp;amp;r=&amp;lt;timestamp&amp;gt; &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|- style=&amp;quot;font-weight:bold; &amp;quot;&lt;br /&gt;
! style=&amp;quot;vertical-align:middle;&amp;quot; | Additional DAR Tag&amp;lt;br /&amp;gt; Parameters for Mobile&lt;br /&gt;
! style=&amp;quot;vertical-align:middle;&amp;quot; | Example&lt;br /&gt;
! style=&amp;quot;vertical-align:middle;&amp;quot; | Description&lt;br /&gt;
! style=&amp;quot;vertical-align:middle;&amp;quot; | Mandatory parameter&amp;lt;br /&amp;gt;for mDAR?&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;&amp;quot; | &amp;amp;c7&lt;br /&gt;
| &amp;amp;c7=osgrp,IOS&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;&amp;quot; | OS Grouping&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;&amp;quot; | &lt;br /&gt;
|- style=&amp;quot;background-color:#eff8ef;&amp;quot;&lt;br /&gt;
|  &amp;amp;c8&lt;br /&gt;
| &amp;amp;c8=devgrp,PHN&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;&amp;quot; | Device Grouping&lt;br /&gt;
 | ✔&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;&amp;quot; | &amp;amp;c9&lt;br /&gt;
| &amp;amp;c9=devid,CB6E9220-EA64-440B-9456-33AD2294C658&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; &amp;quot; | Advertising ID&lt;br /&gt;
|   ✔&lt;br /&gt;
|- style=&amp;quot;background-color:#eff8ef;&amp;quot;&lt;br /&gt;
| &amp;amp;c10&lt;br /&gt;
| &amp;amp;c10=plt,MBL&lt;br /&gt;
|  Platform&lt;br /&gt;
|  ✔&lt;br /&gt;
|-&lt;br /&gt;
| &amp;amp;c12&lt;br /&gt;
| &amp;amp;c12=apv,1&lt;br /&gt;
|  App Version&lt;br /&gt;
| &lt;br /&gt;
|- style=&amp;quot;background-color:#eff8ef;&amp;quot;&lt;br /&gt;
|  &amp;amp;c13&lt;br /&gt;
| c13=asid,DD8136-4F0B-470B-9ACA-231E818D95BC&lt;br /&gt;
|  AppID (Nielsen assigned App ID)&lt;br /&gt;
| | ✔&lt;br /&gt;
|-&lt;br /&gt;
|  &amp;amp;c14&lt;br /&gt;
| &amp;amp;c14=osver,15.1.3&lt;br /&gt;
| OS Version&lt;br /&gt;
|  &lt;br /&gt;
|- style=&amp;quot;background-color:#eff8ef;&amp;quot;&lt;br /&gt;
|&amp;amp;uoo&lt;br /&gt;
| &amp;amp;uoo=0&lt;br /&gt;
| Opt-out indicator&lt;br /&gt;
|  ✔&lt;br /&gt;
|-&lt;br /&gt;
|  | &amp;amp;hem_md5&lt;br /&gt;
| &amp;amp;hem_md5=53d8c474c1e871bdd34f14785dbcfd94&lt;br /&gt;
| | MD5 Hashed Email&lt;br /&gt;
| Only use 1 hash type | &lt;br /&gt;
|- style=&amp;quot;background-color:#eff8ef;&amp;quot;&lt;br /&gt;
| &amp;amp;hem_sha1&lt;br /&gt;
| &lt;br /&gt;
| SHA1 Hashed Email&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
|&amp;amp;hem_sha256&lt;br /&gt;
| &lt;br /&gt;
| SHA256 Hashed Email&lt;br /&gt;
 | &lt;br /&gt;
|- style=&amp;quot;background-color:#eff8ef;&amp;quot;&lt;br /&gt;
 | &amp;amp;hem_unknown&lt;br /&gt;
| &lt;br /&gt;
| Unknown Hashed Algorithm Email&lt;br /&gt;
 | &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;'''Note''': Clients are encouraged to make an effort to always fill-in optional parameters.&lt;br /&gt;
&lt;br /&gt;
'''Note''': Do not URL encode the values.&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== C7 - OS Grouping (Optional) ==&lt;br /&gt;
Valid device OS Grouping data values are the following literal values:&lt;br /&gt;
* osgrp,IOS&lt;br /&gt;
* osgrp,DROID&lt;br /&gt;
* osgrp,ANDROID&lt;br /&gt;
&amp;lt;blockquote&amp;gt;'''Note''': If one of the above values cannot be specific, then the parameter should not be included in the call.&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== C8 - Device Grouping (Mandatory)==&lt;br /&gt;
Valid literal values for phone, tablet, portable media player (iPod) and unknown are as follows:&lt;br /&gt;
* devgrp,PHN - Phone&lt;br /&gt;
* devgrp,TAB - Tablet&lt;br /&gt;
* devgrp,PMP - Portable Media Player (iPod)&lt;br /&gt;
* devgrp,UNWN - Unknown/Unclassified&lt;br /&gt;
* devgrp,DSK - Desktop&lt;br /&gt;
* devgrp,STV ←​ CTV/OTT Device&lt;br /&gt;
==== Notes ====&lt;br /&gt;
* Mandatory for accurate measurement, and if unable to pass, Nielsen cannot guarantee the impression will be classified correctly. &lt;br /&gt;
* “​UNWN” will result in Nielsen attempting an introspection of the User Agent in the HTTP request sent against Device Atlas for classification. &lt;br /&gt;
* “STV” is the default value for OTT when the specific device value isn’t passed.&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== C9 - Advertising ID (Mandatory) ==&lt;br /&gt;
This is the advertiser ID for the client’s mobile device. IDFA for iOS, Google Advertising ID for Android:&lt;br /&gt;
* devid,&amp;lt;IDFA&amp;gt;&lt;br /&gt;
* devid,&amp;lt;IFA&amp;gt;&lt;br /&gt;
* devid,&amp;lt;Google Advertising ID&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|- style=&amp;quot;background-color:#efefef;&amp;quot;&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot; | Below are the supported hash methods for the devid value:&lt;br /&gt;
|- style=&amp;quot;vertical-align:bottom;&amp;quot;&lt;br /&gt;
| Clear Text&lt;br /&gt;
| c9=devid,CB6E9220-EA64-440B-9456-33AD2294C658&lt;br /&gt;
|- style=&amp;quot;vertical-align:bottom;&amp;quot;&lt;br /&gt;
| sha256&lt;br /&gt;
| c9=devid,136844f58ab7f7e991ea4b5150ec767c9327e1391c839a3b3612d418ae875391&lt;br /&gt;
|- style=&amp;quot;vertical-align:bottom;&amp;quot;&lt;br /&gt;
| Sha1&lt;br /&gt;
| c9=devid,a08039967f4817ada4a7f331369eea522ad415a7&lt;br /&gt;
|- style=&amp;quot;vertical-align:bottom;&amp;quot;&lt;br /&gt;
| md5&lt;br /&gt;
| c9=devid,53d8c474c1e871bdd34f14785dbcfd94&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Notes ====&lt;br /&gt;
For Android devices, the Google Advertiser ID should be used as the default and the Android ID as the second option.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* If C9 is &amp;lt;empty&amp;gt;, upon receiving the ping, the Nielsen collection server will attempt a 302 redirect to the data provider per the regular DAR pixel for browsers.&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
* As of August 1, 2014, Google is enforcing use of the Advertising ID for advertising and user analytics (http://play.google.com/about/developer-content-policy.html).&lt;br /&gt;
&amp;lt;blockquote&amp;gt;'' &amp;quot;Beginning August 1st 2014, all updates and new apps uploaded to the Play Store must use the advertising ID (when available on a device) in lieu of any other device identifiers for any advertising purposes.&amp;quot;&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
* It is preferred that the IDFA or Google Advertising ID be sent as is from the mobile device (“cleartext”). However, if mandated, we will support SHA256 hashed values with no-salt. Passing a hashed value (and/or salting) using any other standard will result in a failed match by the data provider upon receiving the ping. In turn, this results in impressions surfacing in the DAR unmeasurable audience totals. Please contact Nielsen if you anticipate a large percentage of hashed values coming in from your publisher clients.&lt;br /&gt;
&lt;br /&gt;
=== Privacy, Ad Tracking, and Ad Targeting ===&lt;br /&gt;
In newer iterations of the iOS and Android device operating systems, a facility exists allowing users to “opt-out” of “Ad Tracking”. It is Nielsen’s interpretation that this setting is primarily designed to allow users to specify opt-out of Ad Targeting rather than Ad Measurement. DAR&lt;br /&gt;
does not provide Ad Targeting data.&lt;br /&gt;
&lt;br /&gt;
However, it is also Nielsen’s position that the publisher or Ad network should provide a mechanism to also allow a user to opt-out of Ad Measurement. The Nielsen SDK will honor the Nielsen Ad Measurement opt-out settings configurable @ http://www.nielsen.com/us/en/campaigns/privacy-policy-opt-out.html.&lt;br /&gt;
&lt;br /&gt;
However if the integration approach described in this document is being used instead of the Nielsen SDK then '''YOU''' as the publisher or Ad network must provide a capability to opt-out of Ad Measurement as the configuration on www.nielsen.com will not be detectable. You may&lt;br /&gt;
elect to interpret the iOS / Android “Ad Tracking” setting for the purpose of limit Ad measurement or provide a separate discreet mechanism to allow a user to opt-out of Ad measurement.&lt;br /&gt;
&lt;br /&gt;
Please see '''&amp;amp;uoo''' later in this document for implementation details of the optout indicator.&lt;br /&gt;
&lt;br /&gt;
For additional clarification on privacy policy, please contact your Nielsen representative.&lt;br /&gt;
&lt;br /&gt;
== C10 - Platform (Mandatory) ==&lt;br /&gt;
To determine this value, Nielsen suggests that the ad network leverage user agent information to determine if the client device is either a mobile or desktop device.&lt;br /&gt;
&lt;br /&gt;
Valid literal values for mobile and desktop data values are as follows:&lt;br /&gt;
* plt,MBL&lt;br /&gt;
* plt,DSK&lt;br /&gt;
* plt,OTT&lt;br /&gt;
==== Notes ====&lt;br /&gt;
* Mandatory for accurate measurement, and if unable to pass, Nielsen cannot guarantee the impression will be classified correctly. &lt;br /&gt;
* Omitting c10, or a value in c10, will result in Nielsen attempting an introspection of the User Agent in the HTTP request sent against Device Atlas for classification. &lt;br /&gt;
* “OTT” (Connective Devices) is a valid value that is populated by participating vendors (Amazon, Hulu and Roku).  Non-participating vendors will be unmeasurable volumetric metric only.&lt;br /&gt;
&lt;br /&gt;
== C12 - App Version (Optional) ==&lt;br /&gt;
This is the version of the ad network system software or SDK that is implemented in this extension. Although this field is not required, this feature can be useful for troubleshooting purposes following deployment.&lt;br /&gt;
* apv,&amp;lt;N.N&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== C13 - AppID ==&lt;br /&gt;
This Nielsen provided ID is unique to the ad network and is required for certification.&lt;br /&gt;
* asid,&amp;lt;NNNNNNNNN-NNNN-NNNN-NNNN-NNNNNNNNNNNN&amp;gt;&lt;br /&gt;
An App ID will be provided for testing. A separate App ID will be provided for production use. Please request from your Nielsen representative.&lt;br /&gt;
&amp;lt;blockquote&amp;gt;'''Note''': If you are a publisher leveraging the non-SDK solution, you will be provided with a unique App ID for each combination of app and device OS type.&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== C14 - OS Version (Optional) ==&lt;br /&gt;
Operating system version&lt;br /&gt;
* osver,&amp;lt;OS Version&amp;gt;&lt;br /&gt;
Example: for iOS -&amp;gt; 7.0.4&lt;br /&gt;
&lt;br /&gt;
== UOO - Opt Out ==&lt;br /&gt;
Opt-out parameter&lt;br /&gt;
* &amp;lt;Boolean state&amp;gt;&lt;br /&gt;
&amp;lt;Boolean state&amp;gt; is a Boolean representation of whether the user is opting out or not.&lt;br /&gt;
&lt;br /&gt;
The absence of uoo in the tag is interpreted as an implicit opt-in. i.e. not opting out.&lt;br /&gt;
&lt;br /&gt;
The following pairings of opt-out are supported. '''Important:''' you must choose one set of paired values only and inform your Nielsen representative.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Opt-out !! Opt-in&lt;br /&gt;
|-&lt;br /&gt;
| uoo=true || uoo=false&lt;br /&gt;
|-&lt;br /&gt;
| uoo=1 || uoo=0&lt;br /&gt;
|-&lt;br /&gt;
| uoo=yes || uoo=no&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;blockquote&amp;gt;'''Note''':  if your Ad server is not capable os supporting the discrete &amp;amp;uoo parameter then you can set the c9 value to &amp;lt;code&amp;gt;devid,optout&amp;lt;/code&amp;gt; (for example &amp;lt;code&amp;gt;…&amp;amp;c8=PHN&amp;amp;c9=devid,optout&amp;amp;c10=MBL…&amp;lt;/code&amp;gt;)&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
== Additional Parameters == &lt;br /&gt;
This section describes several important additional parameters that the DAR tag can support, specifically Hashed Email, and UID2 values. Please note that all parameters are case-sensitive.&lt;br /&gt;
&lt;br /&gt;
Please work with your Nielsen Technical Account Manager to decide which of the following parameters to append to the standard DAR tag.&lt;br /&gt;
=== HEM Support (Hashed Email) ===&lt;br /&gt;
Please use the parameter that matches your hashing algorithm. For example, if you are using sha256 to encode the email address, then use hem_sha256={encrypted_value_here}&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-weight:bold; background-color:#EAECF0;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Name&lt;br /&gt;
! Description&lt;br /&gt;
! Available Tag Parameters&lt;br /&gt;
|- style=&amp;quot;font-weight:normal; background-color:#F8F9FA;&amp;quot;&lt;br /&gt;
| Hashed Email&lt;br /&gt;
| User’s email address that has been run through a hashing algorithm&amp;lt;br /&amp;gt;(e.g. SHA256, MD5, SHA1) to create a unique hexadecimal string.&amp;lt;br /&amp;gt; If a client is unable to determine hashing type, they should pass&amp;lt;br /&amp;gt;using &amp;amp;hem_unknown parameter.&lt;br /&gt;
| &amp;amp;hem_unknown&amp;lt;br /&amp;gt;&amp;amp;hem_sha256&amp;lt;br /&amp;gt;&amp;amp;hem_md5&amp;lt;br /&amp;gt;&amp;amp;hem_sha1&lt;br /&gt;
|}&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-weight:bold;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background-color:#dae8fc; color:#002041;&amp;quot;&lt;br /&gt;
! Example&lt;br /&gt;
|- style=&amp;quot;font-weight:normal;&amp;quot;&lt;br /&gt;
| hem_sha256=tMmiiTI7IaAcPpQPFQ65uMVCWH8av9jw4cwf/F5HVRQ=&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Unified ID ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;background-color:#F8F9FA;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;font-weight:bold; background-color:#EAECF0;&amp;quot;&lt;br /&gt;
! Name&lt;br /&gt;
! Description&lt;br /&gt;
! Available Tag Parameters&lt;br /&gt;
|-&lt;br /&gt;
| Unified ID 2.0&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)&amp;lt;br /&amp;gt;and is now managed by Prebid.&lt;br /&gt;
| &amp;amp;uid2&lt;br /&gt;
|-&lt;br /&gt;
| Unified ID 2.0 Token&lt;br /&gt;
| Encrypted Unified ID 2.0&lt;br /&gt;
| &amp;amp;uid_token&lt;br /&gt;
|}&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-weight:bold;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background-color:#32BBB9; color:#002041;&amp;quot;&lt;br /&gt;
! Example&lt;br /&gt;
|- style=&amp;quot;font-weight:normal;&amp;quot;&lt;br /&gt;
| uid2=MTKVpUAzwYAPnHrtfE0wlINOMzhU7UUEjjVdCdRu63k=&amp;lt;br /&amp;gt;uid_token=AgAAAAPFR0zA5ogv/yaAPiUsAdZPsfqS8QlDSGxAB+rr8yekFs3AjLYVk5qqqiyV2XHbSuwzHmxSlLeQeKQI1mp015jsNnpX5&amp;lt;br /&amp;gt;/xGgXldcgVz+gFnyh3T8/3agMwRmyrhCxG4oH2C7fc48AQk2eotE7FW0ZDEYM8fD9ZxDaxFUC/OV3OuZA&amp;amp;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Server-Side Tag Dispatch ==&lt;br /&gt;
The standard way of triggering a Digital Ad Ratings (DAR) tag on Mobile-App is for the publisher app to trigger (either directly or via Ad server) the tag upon Ad exposure to the user. i.e. a client-side initiated tag.&lt;br /&gt;
&lt;br /&gt;
It is important to note that MRC/IAB measurement standards stipulate that the Ad exposure event still be initiated and recorded from the client-side, even if the Ad measurement tag (in this case a DAR tag) is physically initiated from the server-side. Evidence may be required (publisher log file or similar) from the MRC/IAB that the user was exposed to the Ad creative on their device.&lt;br /&gt;
&lt;br /&gt;
The following additional changes to the standard mobile-app DAR tag are required to support dispatch the DAR tag from a '''server-side''' publisher ad server:&lt;br /&gt;
&lt;br /&gt;
#'''X-Forwarded-For (XFF) IP:''' The original client IP address must be passed in the X-Forwarded-For (XFF) HTTP header field. When the impression is fired directly from the Ad Server, the XReal-IP will be the Ad Server IP.&lt;br /&gt;
#'''Cachebuster:''' Already present in the DAR tag, this now becomes mandatory. A cachebuster or random number ensures a new call is made to the Ad Server. By including a cachebuster ('r' parameter), the tag will not be cached. The timestamp of when the Ad was served can be used.&lt;br /&gt;
#'''User Agent (UA):''' The HTTP UA from the client device should be used to populate the HTTP UA in the server-server connection/ping.&lt;br /&gt;
#'''TLS:''' the tag received by Nielsen must be TLS v1.2 compliant or greater.&lt;br /&gt;
&lt;br /&gt;
==== Important notes ====&lt;br /&gt;
* the current iteration of server-server tag collection only supports mobile-app (IFA and AAID) and will NOT support cookie based audience measurement.&lt;br /&gt;
* The client’s server-server setup that is going to trigger/send the DAR tag should ​suppress​ any Nielsen cookie returned by the Nielsen collection server as a result of the first DAR tag received. If the Nielsen cookie (returned upon receiving the first DAR tag into secure.imrworldwide.com) is not suppressed then invalid traffic (IVT) filtration will quickly be triggered upon receiving the 2​nd and nth tag.&lt;br /&gt;
&lt;br /&gt;
== Appendix A: Example Implementation ==&lt;br /&gt;
In the below examples, you will see the overall DAR flow (Figure 1) and a detailed illustrative Ad Request / Response model (Figure 2).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div align=&amp;quot;center&amp;quot;&amp;gt;'''Figure 1 – End to End Data Flow'''&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:mDAR_Dataflow.png|center|link=]]&lt;br /&gt;
&lt;br /&gt;
Nielsen certified publishers and platforms will append the new parameters (below) with the appropriate URL safe values passed to Nielsen’s current DAR tag. The current DAR tag should be acquired using the existing processes for each campaign/placement. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&amp;lt;code&amp;gt;'''&amp;amp;c7'''=osgrp,IOS'''&amp;amp;c8'''=devgrp,PHN'''&amp;amp;c9'''=devid,XXXX-XX-XXXXXXXXX'''&amp;amp;c10'''=plt,MBL'''&amp;amp;c12'''=apv,AppVersion'''&amp;amp;c13'''=asid,XXXX-XX-XXXX-XXXX&amp;lt;/code&amp;gt;&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div align=&amp;quot;center&amp;quot;&amp;gt;'''Figure 2 – Illustrative Ad Request / Ad Response'''&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:ad_response.png|center|link=]]&lt;br /&gt;
&lt;br /&gt;
The above is an example of how an Ad server is supporting the build of mobile DAR tags for its publisher clients.&lt;br /&gt;
*Step 2 in Figure 1 is a summary of steps 1 and 2 in Figure 2 above.&lt;br /&gt;
*Steps 3 and 4 in Figure 1 is a summary of steps 3 through 9 in Figure 2 above.&lt;br /&gt;
&lt;br /&gt;
== Appendix B: Implementation, Testing &amp;amp; Certification ==&lt;br /&gt;
Once you have integrated the ping per the above specs, Nielsen requires you to pass through a one-time certification before traffic can be accepted into the production environment.&lt;br /&gt;
&lt;br /&gt;
The overall process is:&lt;br /&gt;
* Valid DAR contract or NDA is in place.&lt;br /&gt;
* Kick-off meeting with Nielsen onboarding team.&lt;br /&gt;
* Confirm meet minimums testing requirements:&lt;br /&gt;
** Host Ad/Tag for in-app delivery&lt;br /&gt;
** Can pass opt-out back to Nielsen&lt;br /&gt;
** Can pass Device ID in cleartext or SHA-256&lt;br /&gt;
* Nielsen provides the mDAR testing form that includes the test App ID and the test tag&lt;br /&gt;
* Identify the live campaigns for initial testing and run the test tag; suggest 5,000-10,000 impressions.&lt;br /&gt;
* Nielsen validates the data received from the test and confirms the initial test successful and provides the production App ID.&lt;br /&gt;
* Ensure contracts are in place for external test campaign with Nielsen Client Service team.&lt;br /&gt;
* Identify another live campaigns for production testing with production tag and app ID.&lt;br /&gt;
* Nielsen validates the data received from the final test and confirms certification for any DAR countries tested.&lt;br /&gt;
==== Goals ====&lt;br /&gt;
* To test in full DAR E2E environment, receive matches from data provider for demographics and correct identification of mobile impressions.&lt;br /&gt;
* To test that all minimum requirements in step 3 are passed to Nielsen with no issues.&lt;br /&gt;
* To test in a full DAR end-to-end environment, receive matches from data providers for demographics and correct identification of mobile impressions.&lt;/div&gt;</summary>
		<author><name>ColinBrown</name></author>
	</entry>
	<entry>
		<id>https://nielsentest.mywikis.net/w/index.php?title=Mobile_DAR_Attributes_Requirements&amp;diff=5972</id>
		<title>Mobile DAR Attributes Requirements</title>
		<link rel="alternate" type="text/html" href="https://nielsentest.mywikis.net/w/index.php?title=Mobile_DAR_Attributes_Requirements&amp;diff=5972"/>
		<updated>2022-09-21T18:58:06Z</updated>

		<summary type="html">&lt;p&gt;ColinBrown: /* C9 - Advertising ID (Mandatory) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Breadcrumb|}} {{Breadcrumb|Digital}} {{Breadcrumb|Digital Ad Ratings}}  {{CurrentBreadcrumb}}&lt;br /&gt;
[[Category:Digital]]&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
The standard Nielsen Digital Ad Rating (DAR) tag only supports cookie based '''web browser''' viewing on PCs, MACs, and tablets/smartphone (web-browser). However, when ads are served to tablets/smartphones via native '''app-store applications''', the cookie based tag does not function correctly. Additional tag attributes are needed in order for audience reach measurement to function. Example tags are detailed later in this document.&lt;br /&gt;
&lt;br /&gt;
One way Nielsen clients can accomplish this is by the use of Nielsen’s native iOS/Android App SDK. Nielsen’s App SDK automatically adds these additional tag attributes to the standard cookie based webbrowser tag before the tag is forwarded on to the Nielsen census collection system. However, there is a significant portion of the publisher mobile app universe where it is either not feasible, or desirable to integrate Nielsen’s native App SDK into 3rd party applications.&lt;br /&gt;
&lt;br /&gt;
The purpose of this document is to detail the tag URL parameters required that are '''additional''' to the standard cookie based web-browser tag.&lt;br /&gt;
&lt;br /&gt;
The most critical additional parameter required is the insertion of the Advertising ID (IFA / IDFA / AdID) from the users device that has been exposed to the Ad creative.&lt;br /&gt;
&lt;br /&gt;
If you are reading this document as an Ad server representative then it is assumed that you have published a specification that mobile app publishers follow to pass the appropriate Advertising ID in the Ad request payload. Typically, your Ad server will then expand a macro or label with that value passed in the Ad request URL, insert into the DAR mobile app tag and redirect to Nielsen collections. See s. See  [[#Appendix A: Example Implementation]], figure 2 for an example tag workflow.&lt;br /&gt;
&lt;br /&gt;
The standard way of triggering a Digital Ad Ratings (DAR) tag on Mobile-App is for the publisher app to trigger (either directly or via Ad server) the tag upon Ad exposure to the user. i.e. a client-side initiated tag. If you wish to implement server-side dispatch of mobile in-app DAR tags then see additional section in this document titled '''server-side tag dispatch'''. Please read the rest of this document before reading the section on server-server.&lt;br /&gt;
&lt;br /&gt;
Once you have completed your integration, you will be required to submit to a short certification. See [[#Appendix B: Implementation, Testing &amp;amp; Certification]]. Certification also grants inclusion to the approved publisher and certified Ad server vendor list.&lt;br /&gt;
&lt;br /&gt;
'''Important Note:''' for 2018, the MRC has mandated a series of changes to audience measurement that will require additional tag events to be communicated to Nielsen so that we may compute duration weighting etc. You are strongly urged to contact your Nielsen client service representative to seek a briefing from Nielsen on the best technical methods for tagging in order to be compliant with these changes.&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
== Standard DAR Tag ==&lt;br /&gt;
The DAR tag is available as a 1x1 pixel. The following pixel/tag parameters must be specified for all DAR tags, 1x1, regardless of implementation type: browser, mobile browser, mobile app or connected device.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
! Tag Parameter&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| CI&lt;br /&gt;
| Client ID: the ID that is associated with the DAR account that processed tag data is associated with. Will always be hardcoded to a Nielsen generated value that comes from the Nielsen campaign management system&lt;br /&gt;
|- style=&amp;quot;background-color:#eff8ef;&amp;quot;&lt;br /&gt;
| AM&lt;br /&gt;
| Ad Server: an ad server participating on the campaign media-plan. This is an internal Nielsen generated value when the ad server is indicated on the campaign during setup&lt;br /&gt;
|-&lt;br /&gt;
| CA&lt;br /&gt;
| Campaign Id: this is the ID associated with your DAR campaign. Unless you are creating and managing the Nielsen campaign via the DAR Tag API, then this parameter value will always be generated from the Nielsen campaign management system. Note: often maps to a media-plan I/O Id&lt;br /&gt;
|- style=&amp;quot;background-color:#eff8ef;&amp;quot;&lt;br /&gt;
| CR&lt;br /&gt;
| Creative Id: DAR does not currently report at the creative level; can be hard coded ad server id or associated with a macro expansion&lt;br /&gt;
|-&lt;br /&gt;
| PC&lt;br /&gt;
| Placement Id: can be generated by the ad server via macro expansion or generated by the Nielsen campaign management system. Note: often maps to one of Ad Unit Id, Line Item Id or Video Ad Id&lt;br /&gt;
|- style=&amp;quot;background-color:#eff8ef;&amp;quot;&lt;br /&gt;
| CE&lt;br /&gt;
| Site Id: the Id that identifies a publisher site that the placement needs to be mapped to. Maps into the Nielsen MarketView database. Note: can be hardcoded to a pre-registered ad server site id in the Nielsen system or a macro expansion where more than one pre-existing site ids have been made known to Nielsen&lt;br /&gt;
|-&lt;br /&gt;
| R&lt;br /&gt;
| Cachebuster (web): timestamp / random number. Generated by ad server&lt;br /&gt;
|- style=&amp;quot;background-color:#eff8ef;&amp;quot;&lt;br /&gt;
| AT&lt;br /&gt;
| Fixed value: “view”&lt;br /&gt;
|-&lt;br /&gt;
| RT&lt;br /&gt;
| Fixed value: “banner”&lt;br /&gt;
|- style=&amp;quot;background-color:#eff8ef;&amp;quot;&lt;br /&gt;
| ST&lt;br /&gt;
| Fixed value: “image”&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;blockquote&amp;gt; Do not URL encode the values&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Additional DAR Tag Parameters for Mobile App Audience Measurement ==&lt;br /&gt;
In this section, the additional URL parameters required beyond the standard cookie based web-browser tag are described in detail.&lt;br /&gt;
&lt;br /&gt;
For each of the tag examples detailed below, we can support both non-secure (http) and secure (https) flavors. The standard cookie based web-browser tag is included below for reference purposes.&lt;br /&gt;
&lt;br /&gt;
'''Important note:''' the values against each value-pair in the following tags are for illustrative purposes only. Values for CA, PC and CE will vary depending on the specific campaign being measured and capabilities of the Ad server for macro/value expansion. For more detail on the core DAR  parameters, please see the '''Nielsen DAR Tag Implementation Guide.'''&lt;br /&gt;
&lt;br /&gt;
'''Web Browser DAR tag (cookie based persons identification)'''&lt;br /&gt;
&amp;lt;code&amp;gt; //secure-gl.imrworldwide.com/cgi-bin/m?ci=nlsnci535&amp;amp;am=3&amp;amp;at=view&amp;amp;rt=banner&amp;amp;st=image&amp;amp;ca=nlsn12452&amp;amp;cr=crtve&amp;amp;pc=&amp;lt;creativeid&amp;gt;_plc0001&amp;amp;ce=&amp;lt;siteid&amp;gt;&amp;amp;r=&amp;lt;timestamp&amp;gt; &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Mobile-App DAR Tag Extension (IFA based persons identification)'''&lt;br /&gt;
&amp;lt;code&amp;gt; //secure-gl.imrworldwide.com/cgi-bin/m?ci=nlsnci535&amp;amp;am=3&amp;amp;at=view&amp;amp;rt=banner&amp;amp;st=image&amp;amp;ca=nlsn12452&amp;amp;cr=crtve&amp;amp;pc=&amp;lt;creativeid&amp;gt;_plc0001&amp;amp;ce=&amp;lt;siteid&amp;gt;&amp;amp;c7=osgrp,IOS&amp;amp;c8=devgrp,PHN&amp;amp;c9=devid,XXXX-XX-XXXXX-XXXX &amp;amp;c10=plt,MBL&amp;amp;c12=apv,&amp;lt;appVersion&amp;gt;&amp;amp;c13=asid,NIELSEN-PROVIDEDID&amp;amp;c14=osver,7.0.4&amp;amp;uoo=0&amp;amp;r=&amp;lt;timestamp&amp;gt; &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|- style=&amp;quot;font-weight:bold; &amp;quot;&lt;br /&gt;
! style=&amp;quot;vertical-align:middle;&amp;quot; | Additional DAR Tag&amp;lt;br /&amp;gt; Parameters for Mobile&lt;br /&gt;
! style=&amp;quot;vertical-align:middle;&amp;quot; | Example&lt;br /&gt;
! style=&amp;quot;vertical-align:middle;&amp;quot; | Description&lt;br /&gt;
! style=&amp;quot;vertical-align:middle;&amp;quot; | Mandatory parameter&amp;lt;br /&amp;gt;for mDAR?&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;&amp;quot; | &amp;amp;c7&lt;br /&gt;
| &amp;amp;c7=osgrp,IOS&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;&amp;quot; | OS Grouping&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;&amp;quot; | &lt;br /&gt;
|- style=&amp;quot;background-color:#eff8ef;&amp;quot;&lt;br /&gt;
|  &amp;amp;c8&lt;br /&gt;
| &amp;amp;c8=devgrp,PHN&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;&amp;quot; | Device Grouping&lt;br /&gt;
 | ✔&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;&amp;quot; | &amp;amp;c9&lt;br /&gt;
| &amp;amp;c9=devid,CB6E9220-EA64-440B-9456-33AD2294C658&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; &amp;quot; | Advertising ID&lt;br /&gt;
|   ✔&lt;br /&gt;
|- style=&amp;quot;background-color:#eff8ef;&amp;quot;&lt;br /&gt;
| &amp;amp;c10&lt;br /&gt;
| &amp;amp;c10=plt,MBL&lt;br /&gt;
|  Platform&lt;br /&gt;
|  ✔&lt;br /&gt;
|-&lt;br /&gt;
| &amp;amp;c12&lt;br /&gt;
| &amp;amp;c12=apv,1&lt;br /&gt;
|  App Version&lt;br /&gt;
| &lt;br /&gt;
|- style=&amp;quot;background-color:#eff8ef;&amp;quot;&lt;br /&gt;
|  &amp;amp;c13&lt;br /&gt;
| c13=asid,DD8136-4F0B-470B-9ACA-231E818D95BC&lt;br /&gt;
|  AppID (Nielsen assigned App ID)&lt;br /&gt;
| | ✔&lt;br /&gt;
|-&lt;br /&gt;
|  &amp;amp;c14&lt;br /&gt;
| &amp;amp;c14=osver,15.1.3&lt;br /&gt;
| OS Version&lt;br /&gt;
|  &lt;br /&gt;
|- style=&amp;quot;background-color:#eff8ef;&amp;quot;&lt;br /&gt;
|&amp;amp;uoo&lt;br /&gt;
| &amp;amp;uoo=0&lt;br /&gt;
| Opt-out indicator&lt;br /&gt;
|  ✔&lt;br /&gt;
|-&lt;br /&gt;
|  | &amp;amp;hem_md5&lt;br /&gt;
| &amp;amp;hem_md5=53d8c474c1e871bdd34f14785dbcfd94&lt;br /&gt;
| | MD5 Hashed Email&lt;br /&gt;
|  | &lt;br /&gt;
|- style=&amp;quot;background-color:#eff8ef;&amp;quot;&lt;br /&gt;
| &amp;amp;hem_sha1&lt;br /&gt;
| &lt;br /&gt;
| SHA1 Hashed Email&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
|&amp;amp;hem_sha256&lt;br /&gt;
| &lt;br /&gt;
| SHA256 Hashed Email&lt;br /&gt;
 | &lt;br /&gt;
|- style=&amp;quot;background-color:#eff8ef;&amp;quot;&lt;br /&gt;
 | &amp;amp;hem_unknown&lt;br /&gt;
| &lt;br /&gt;
| Unknown Hashed Algorithm Email&lt;br /&gt;
 | &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;'''Note''': Clients are encouraged to make an effort to always fill-in optional parameters.&lt;br /&gt;
&lt;br /&gt;
'''Note''': Do not URL encode the values.&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== C7 - OS Grouping (Optional) ==&lt;br /&gt;
Valid device OS Grouping data values are the following literal values:&lt;br /&gt;
* osgrp,IOS&lt;br /&gt;
* osgrp,DROID&lt;br /&gt;
* osgrp,ANDROID&lt;br /&gt;
&amp;lt;blockquote&amp;gt;'''Note''': If one of the above values cannot be specific, then the parameter should not be included in the call.&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== C8 - Device Grouping (Mandatory)==&lt;br /&gt;
Valid literal values for phone, tablet, portable media player (iPod) and unknown are as follows:&lt;br /&gt;
* devgrp,PHN - Phone&lt;br /&gt;
* devgrp,TAB - Tablet&lt;br /&gt;
* devgrp,PMP - Portable Media Player (iPod)&lt;br /&gt;
* devgrp,UNWN - Unknown/Unclassified&lt;br /&gt;
* devgrp,DSK - Desktop&lt;br /&gt;
* devgrp,STV ←​ CTV/OTT Device&lt;br /&gt;
==== Notes ====&lt;br /&gt;
* Mandatory for accurate measurement, and if unable to pass, Nielsen cannot guarantee the impression will be classified correctly. &lt;br /&gt;
* “​UNWN” will result in Nielsen attempting an introspection of the User Agent in the HTTP request sent against Device Atlas for classification. &lt;br /&gt;
* “STV” is the default value for OTT when the specific device value isn’t passed.&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== C9 - Advertising ID (Mandatory) ==&lt;br /&gt;
This is the advertiser ID for the client’s mobile device. IDFA for iOS, Google Advertising ID for Android:&lt;br /&gt;
* devid,&amp;lt;IDFA&amp;gt;&lt;br /&gt;
* devid,&amp;lt;IFA&amp;gt;&lt;br /&gt;
* devid,&amp;lt;Google Advertising ID&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|- style=&amp;quot;background-color:#efefef;&amp;quot;&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot; | Below are the supported hash methods for the devid value:&lt;br /&gt;
|- style=&amp;quot;vertical-align:bottom;&amp;quot;&lt;br /&gt;
| Clear Text&lt;br /&gt;
| c9=devid,CB6E9220-EA64-440B-9456-33AD2294C658&lt;br /&gt;
|- style=&amp;quot;vertical-align:bottom;&amp;quot;&lt;br /&gt;
| sha256&lt;br /&gt;
| c9=devid,136844f58ab7f7e991ea4b5150ec767c9327e1391c839a3b3612d418ae875391&lt;br /&gt;
|- style=&amp;quot;vertical-align:bottom;&amp;quot;&lt;br /&gt;
| Sha1&lt;br /&gt;
| c9=devid,a08039967f4817ada4a7f331369eea522ad415a7&lt;br /&gt;
|- style=&amp;quot;vertical-align:bottom;&amp;quot;&lt;br /&gt;
| md5&lt;br /&gt;
| c9=devid,53d8c474c1e871bdd34f14785dbcfd94&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Notes ====&lt;br /&gt;
For Android devices, the Google Advertiser ID should be used as the default and the Android ID as the second option.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* If C9 is &amp;lt;empty&amp;gt;, upon receiving the ping, the Nielsen collection server will attempt a 302 redirect to the data provider per the regular DAR pixel for browsers.&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
* As of August 1, 2014, Google is enforcing use of the Advertising ID for advertising and user analytics (http://play.google.com/about/developer-content-policy.html).&lt;br /&gt;
&amp;lt;blockquote&amp;gt;'' &amp;quot;Beginning August 1st 2014, all updates and new apps uploaded to the Play Store must use the advertising ID (when available on a device) in lieu of any other device identifiers for any advertising purposes.&amp;quot;&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
* It is preferred that the IDFA or Google Advertising ID be sent as is from the mobile device (“cleartext”). However, if mandated, we will support SHA256 hashed values with no-salt. Passing a hashed value (and/or salting) using any other standard will result in a failed match by the data provider upon receiving the ping. In turn, this results in impressions surfacing in the DAR unmeasurable audience totals. Please contact Nielsen if you anticipate a large percentage of hashed values coming in from your publisher clients.&lt;br /&gt;
&lt;br /&gt;
=== Privacy, Ad Tracking, and Ad Targeting ===&lt;br /&gt;
In newer iterations of the iOS and Android device operating systems, a facility exists allowing users to “opt-out” of “Ad Tracking”. It is Nielsen’s interpretation that this setting is primarily designed to allow users to specify opt-out of Ad Targeting rather than Ad Measurement. DAR&lt;br /&gt;
does not provide Ad Targeting data.&lt;br /&gt;
&lt;br /&gt;
However, it is also Nielsen’s position that the publisher or Ad network should provide a mechanism to also allow a user to opt-out of Ad Measurement. The Nielsen SDK will honor the Nielsen Ad Measurement opt-out settings configurable @ http://www.nielsen.com/us/en/campaigns/privacy-policy-opt-out.html.&lt;br /&gt;
&lt;br /&gt;
However if the integration approach described in this document is being used instead of the Nielsen SDK then '''YOU''' as the publisher or Ad network must provide a capability to opt-out of Ad Measurement as the configuration on www.nielsen.com will not be detectable. You may&lt;br /&gt;
elect to interpret the iOS / Android “Ad Tracking” setting for the purpose of limit Ad measurement or provide a separate discreet mechanism to allow a user to opt-out of Ad measurement.&lt;br /&gt;
&lt;br /&gt;
Please see '''&amp;amp;uoo''' later in this document for implementation details of the optout indicator.&lt;br /&gt;
&lt;br /&gt;
For additional clarification on privacy policy, please contact your Nielsen representative.&lt;br /&gt;
&lt;br /&gt;
== C10 - Platform (Mandatory) ==&lt;br /&gt;
To determine this value, Nielsen suggests that the ad network leverage user agent information to determine if the client device is either a mobile or desktop device.&lt;br /&gt;
&lt;br /&gt;
Valid literal values for mobile and desktop data values are as follows:&lt;br /&gt;
* plt,MBL&lt;br /&gt;
* plt,DSK&lt;br /&gt;
* plt,OTT&lt;br /&gt;
==== Notes ====&lt;br /&gt;
* Mandatory for accurate measurement, and if unable to pass, Nielsen cannot guarantee the impression will be classified correctly. &lt;br /&gt;
* Omitting c10, or a value in c10, will result in Nielsen attempting an introspection of the User Agent in the HTTP request sent against Device Atlas for classification. &lt;br /&gt;
* “OTT” (Connective Devices) is a valid value that is populated by participating vendors (Amazon, Hulu and Roku).  Non-participating vendors will be unmeasurable volumetric metric only.&lt;br /&gt;
&lt;br /&gt;
== C12 - App Version (Optional) ==&lt;br /&gt;
This is the version of the ad network system software or SDK that is implemented in this extension. Although this field is not required, this feature can be useful for troubleshooting purposes following deployment.&lt;br /&gt;
* apv,&amp;lt;N.N&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== C13 - AppID ==&lt;br /&gt;
This Nielsen provided ID is unique to the ad network and is required for certification.&lt;br /&gt;
* asid,&amp;lt;NNNNNNNNN-NNNN-NNNN-NNNN-NNNNNNNNNNNN&amp;gt;&lt;br /&gt;
An App ID will be provided for testing. A separate App ID will be provided for production use. Please request from your Nielsen representative.&lt;br /&gt;
&amp;lt;blockquote&amp;gt;'''Note''': If you are a publisher leveraging the non-SDK solution, you will be provided with a unique App ID for each combination of app and device OS type.&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== C14 - OS Version (Optional) ==&lt;br /&gt;
Operating system version&lt;br /&gt;
* osver,&amp;lt;OS Version&amp;gt;&lt;br /&gt;
Example: for iOS -&amp;gt; 7.0.4&lt;br /&gt;
&lt;br /&gt;
== UOO - Opt Out ==&lt;br /&gt;
Opt-out parameter&lt;br /&gt;
* &amp;lt;Boolean state&amp;gt;&lt;br /&gt;
&amp;lt;Boolean state&amp;gt; is a Boolean representation of whether the user is opting out or not.&lt;br /&gt;
&lt;br /&gt;
The absence of uoo in the tag is interpreted as an implicit opt-in. i.e. not opting out.&lt;br /&gt;
&lt;br /&gt;
The following pairings of opt-out are supported. '''Important:''' you must choose one set of paired values only and inform your Nielsen representative.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Opt-out !! Opt-in&lt;br /&gt;
|-&lt;br /&gt;
| uoo=true || uoo=false&lt;br /&gt;
|-&lt;br /&gt;
| uoo=1 || uoo=0&lt;br /&gt;
|-&lt;br /&gt;
| uoo=yes || uoo=no&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;blockquote&amp;gt;'''Note''':  if your Ad server is not capable os supporting the discrete &amp;amp;uoo parameter then you can set the c9 value to &amp;lt;code&amp;gt;devid,optout&amp;lt;/code&amp;gt; (for example &amp;lt;code&amp;gt;…&amp;amp;c8=PHN&amp;amp;c9=devid,optout&amp;amp;c10=MBL…&amp;lt;/code&amp;gt;)&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
== Additional Parameters == &lt;br /&gt;
This section describes several important additional parameters that the DAR tag can support, specifically Hashed Email, and UID2 values. Please note that all parameters are case-sensitive.&lt;br /&gt;
&lt;br /&gt;
Please work with your Nielsen Technical Account Manager to decide which of the following parameters to append to the standard DAR tag.&lt;br /&gt;
=== HEM Support (Hashed Email) ===&lt;br /&gt;
Please use the parameter that matches your hashing algorithm. For example, if you are using sha256 to encode the email address, then use hem_sha256={encrypted_value_here}&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-weight:bold; background-color:#EAECF0;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Name&lt;br /&gt;
! Description&lt;br /&gt;
! Available Tag Parameters&lt;br /&gt;
|- style=&amp;quot;font-weight:normal; background-color:#F8F9FA;&amp;quot;&lt;br /&gt;
| Hashed Email&lt;br /&gt;
| User’s email address that has been run through a hashing algorithm&amp;lt;br /&amp;gt;(e.g. SHA256, MD5, SHA1) to create a unique hexadecimal string.&amp;lt;br /&amp;gt; If a client is unable to determine hashing type, they should pass&amp;lt;br /&amp;gt;using &amp;amp;hem_unknown parameter.&lt;br /&gt;
| &amp;amp;hem_unknown&amp;lt;br /&amp;gt;&amp;amp;hem_sha256&amp;lt;br /&amp;gt;&amp;amp;hem_md5&amp;lt;br /&amp;gt;&amp;amp;hem_sha1&lt;br /&gt;
|}&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-weight:bold;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background-color:#dae8fc; color:#002041;&amp;quot;&lt;br /&gt;
! Example&lt;br /&gt;
|- style=&amp;quot;font-weight:normal;&amp;quot;&lt;br /&gt;
| hem_sha256=tMmiiTI7IaAcPpQPFQ65uMVCWH8av9jw4cwf/F5HVRQ=&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Unified ID ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;background-color:#F8F9FA;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;font-weight:bold; background-color:#EAECF0;&amp;quot;&lt;br /&gt;
! Name&lt;br /&gt;
! Description&lt;br /&gt;
! Available Tag Parameters&lt;br /&gt;
|-&lt;br /&gt;
| Unified ID 2.0&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)&amp;lt;br /&amp;gt;and is now managed by Prebid.&lt;br /&gt;
| &amp;amp;uid2&lt;br /&gt;
|-&lt;br /&gt;
| Unified ID 2.0 Token&lt;br /&gt;
| Encrypted Unified ID 2.0&lt;br /&gt;
| &amp;amp;uid_token&lt;br /&gt;
|}&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-weight:bold;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background-color:#32BBB9; color:#002041;&amp;quot;&lt;br /&gt;
! Example&lt;br /&gt;
|- style=&amp;quot;font-weight:normal;&amp;quot;&lt;br /&gt;
| uid2=MTKVpUAzwYAPnHrtfE0wlINOMzhU7UUEjjVdCdRu63k=&amp;lt;br /&amp;gt;uid_token=AgAAAAPFR0zA5ogv/yaAPiUsAdZPsfqS8QlDSGxAB+rr8yekFs3AjLYVk5qqqiyV2XHbSuwzHmxSlLeQeKQI1mp015jsNnpX5&amp;lt;br /&amp;gt;/xGgXldcgVz+gFnyh3T8/3agMwRmyrhCxG4oH2C7fc48AQk2eotE7FW0ZDEYM8fD9ZxDaxFUC/OV3OuZA&amp;amp;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Server-Side Tag Dispatch ==&lt;br /&gt;
The standard way of triggering a Digital Ad Ratings (DAR) tag on Mobile-App is for the publisher app to trigger (either directly or via Ad server) the tag upon Ad exposure to the user. i.e. a client-side initiated tag.&lt;br /&gt;
&lt;br /&gt;
It is important to note that MRC/IAB measurement standards stipulate that the Ad exposure event still be initiated and recorded from the client-side, even if the Ad measurement tag (in this case a DAR tag) is physically initiated from the server-side. Evidence may be required (publisher log file or similar) from the MRC/IAB that the user was exposed to the Ad creative on their device.&lt;br /&gt;
&lt;br /&gt;
The following additional changes to the standard mobile-app DAR tag are required to support dispatch the DAR tag from a '''server-side''' publisher ad server:&lt;br /&gt;
&lt;br /&gt;
#'''X-Forwarded-For (XFF) IP:''' The original client IP address must be passed in the X-Forwarded-For (XFF) HTTP header field. When the impression is fired directly from the Ad Server, the XReal-IP will be the Ad Server IP.&lt;br /&gt;
#'''Cachebuster:''' Already present in the DAR tag, this now becomes mandatory. A cachebuster or random number ensures a new call is made to the Ad Server. By including a cachebuster ('r' parameter), the tag will not be cached. The timestamp of when the Ad was served can be used.&lt;br /&gt;
#'''User Agent (UA):''' The HTTP UA from the client device should be used to populate the HTTP UA in the server-server connection/ping.&lt;br /&gt;
#'''TLS:''' the tag received by Nielsen must be TLS v1.2 compliant or greater.&lt;br /&gt;
&lt;br /&gt;
==== Important notes ====&lt;br /&gt;
* the current iteration of server-server tag collection only supports mobile-app (IFA and AAID) and will NOT support cookie based audience measurement.&lt;br /&gt;
* The client’s server-server setup that is going to trigger/send the DAR tag should ​suppress​ any Nielsen cookie returned by the Nielsen collection server as a result of the first DAR tag received. If the Nielsen cookie (returned upon receiving the first DAR tag into secure.imrworldwide.com) is not suppressed then invalid traffic (IVT) filtration will quickly be triggered upon receiving the 2​nd and nth tag.&lt;br /&gt;
&lt;br /&gt;
== Appendix A: Example Implementation ==&lt;br /&gt;
In the below examples, you will see the overall DAR flow (Figure 1) and a detailed illustrative Ad Request / Response model (Figure 2).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div align=&amp;quot;center&amp;quot;&amp;gt;'''Figure 1 – End to End Data Flow'''&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:mDAR_Dataflow.png|center|link=]]&lt;br /&gt;
&lt;br /&gt;
Nielsen certified publishers and platforms will append the new parameters (below) with the appropriate URL safe values passed to Nielsen’s current DAR tag. The current DAR tag should be acquired using the existing processes for each campaign/placement. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&amp;lt;code&amp;gt;'''&amp;amp;c7'''=osgrp,IOS'''&amp;amp;c8'''=devgrp,PHN'''&amp;amp;c9'''=devid,XXXX-XX-XXXXXXXXX'''&amp;amp;c10'''=plt,MBL'''&amp;amp;c12'''=apv,AppVersion'''&amp;amp;c13'''=asid,XXXX-XX-XXXX-XXXX&amp;lt;/code&amp;gt;&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div align=&amp;quot;center&amp;quot;&amp;gt;'''Figure 2 – Illustrative Ad Request / Ad Response'''&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:ad_response.png|center|link=]]&lt;br /&gt;
&lt;br /&gt;
The above is an example of how an Ad server is supporting the build of mobile DAR tags for its publisher clients.&lt;br /&gt;
*Step 2 in Figure 1 is a summary of steps 1 and 2 in Figure 2 above.&lt;br /&gt;
*Steps 3 and 4 in Figure 1 is a summary of steps 3 through 9 in Figure 2 above.&lt;br /&gt;
&lt;br /&gt;
== Appendix B: Implementation, Testing &amp;amp; Certification ==&lt;br /&gt;
Once you have integrated the ping per the above specs, Nielsen requires you to pass through a one-time certification before traffic can be accepted into the production environment.&lt;br /&gt;
&lt;br /&gt;
The overall process is:&lt;br /&gt;
* Valid DAR contract or NDA is in place.&lt;br /&gt;
* Kick-off meeting with Nielsen onboarding team.&lt;br /&gt;
* Confirm meet minimums testing requirements:&lt;br /&gt;
** Host Ad/Tag for in-app delivery&lt;br /&gt;
** Can pass opt-out back to Nielsen&lt;br /&gt;
** Can pass Device ID in cleartext or SHA-256&lt;br /&gt;
* Nielsen provides the mDAR testing form that includes the test App ID and the test tag&lt;br /&gt;
* Identify the live campaigns for initial testing and run the test tag; suggest 5,000-10,000 impressions.&lt;br /&gt;
* Nielsen validates the data received from the test and confirms the initial test successful and provides the production App ID.&lt;br /&gt;
* Ensure contracts are in place for external test campaign with Nielsen Client Service team.&lt;br /&gt;
* Identify another live campaigns for production testing with production tag and app ID.&lt;br /&gt;
* Nielsen validates the data received from the final test and confirms certification for any DAR countries tested.&lt;br /&gt;
==== Goals ====&lt;br /&gt;
* To test in full DAR E2E environment, receive matches from data provider for demographics and correct identification of mobile impressions.&lt;br /&gt;
* To test that all minimum requirements in step 3 are passed to Nielsen with no issues.&lt;br /&gt;
* To test in a full DAR end-to-end environment, receive matches from data providers for demographics and correct identification of mobile impressions.&lt;/div&gt;</summary>
		<author><name>ColinBrown</name></author>
	</entry>
	<entry>
		<id>https://nielsentest.mywikis.net/w/index.php?title=Mobile_DAR_Attributes_Requirements&amp;diff=5971</id>
		<title>Mobile DAR Attributes Requirements</title>
		<link rel="alternate" type="text/html" href="https://nielsentest.mywikis.net/w/index.php?title=Mobile_DAR_Attributes_Requirements&amp;diff=5971"/>
		<updated>2022-09-21T18:57:37Z</updated>

		<summary type="html">&lt;p&gt;ColinBrown: /* Additional DAR Tag Parameters for Mobile App Audience Measurement */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Breadcrumb|}} {{Breadcrumb|Digital}} {{Breadcrumb|Digital Ad Ratings}}  {{CurrentBreadcrumb}}&lt;br /&gt;
[[Category:Digital]]&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
The standard Nielsen Digital Ad Rating (DAR) tag only supports cookie based '''web browser''' viewing on PCs, MACs, and tablets/smartphone (web-browser). However, when ads are served to tablets/smartphones via native '''app-store applications''', the cookie based tag does not function correctly. Additional tag attributes are needed in order for audience reach measurement to function. Example tags are detailed later in this document.&lt;br /&gt;
&lt;br /&gt;
One way Nielsen clients can accomplish this is by the use of Nielsen’s native iOS/Android App SDK. Nielsen’s App SDK automatically adds these additional tag attributes to the standard cookie based webbrowser tag before the tag is forwarded on to the Nielsen census collection system. However, there is a significant portion of the publisher mobile app universe where it is either not feasible, or desirable to integrate Nielsen’s native App SDK into 3rd party applications.&lt;br /&gt;
&lt;br /&gt;
The purpose of this document is to detail the tag URL parameters required that are '''additional''' to the standard cookie based web-browser tag.&lt;br /&gt;
&lt;br /&gt;
The most critical additional parameter required is the insertion of the Advertising ID (IFA / IDFA / AdID) from the users device that has been exposed to the Ad creative.&lt;br /&gt;
&lt;br /&gt;
If you are reading this document as an Ad server representative then it is assumed that you have published a specification that mobile app publishers follow to pass the appropriate Advertising ID in the Ad request payload. Typically, your Ad server will then expand a macro or label with that value passed in the Ad request URL, insert into the DAR mobile app tag and redirect to Nielsen collections. See s. See  [[#Appendix A: Example Implementation]], figure 2 for an example tag workflow.&lt;br /&gt;
&lt;br /&gt;
The standard way of triggering a Digital Ad Ratings (DAR) tag on Mobile-App is for the publisher app to trigger (either directly or via Ad server) the tag upon Ad exposure to the user. i.e. a client-side initiated tag. If you wish to implement server-side dispatch of mobile in-app DAR tags then see additional section in this document titled '''server-side tag dispatch'''. Please read the rest of this document before reading the section on server-server.&lt;br /&gt;
&lt;br /&gt;
Once you have completed your integration, you will be required to submit to a short certification. See [[#Appendix B: Implementation, Testing &amp;amp; Certification]]. Certification also grants inclusion to the approved publisher and certified Ad server vendor list.&lt;br /&gt;
&lt;br /&gt;
'''Important Note:''' for 2018, the MRC has mandated a series of changes to audience measurement that will require additional tag events to be communicated to Nielsen so that we may compute duration weighting etc. You are strongly urged to contact your Nielsen client service representative to seek a briefing from Nielsen on the best technical methods for tagging in order to be compliant with these changes.&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
== Standard DAR Tag ==&lt;br /&gt;
The DAR tag is available as a 1x1 pixel. The following pixel/tag parameters must be specified for all DAR tags, 1x1, regardless of implementation type: browser, mobile browser, mobile app or connected device.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
! Tag Parameter&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| CI&lt;br /&gt;
| Client ID: the ID that is associated with the DAR account that processed tag data is associated with. Will always be hardcoded to a Nielsen generated value that comes from the Nielsen campaign management system&lt;br /&gt;
|- style=&amp;quot;background-color:#eff8ef;&amp;quot;&lt;br /&gt;
| AM&lt;br /&gt;
| Ad Server: an ad server participating on the campaign media-plan. This is an internal Nielsen generated value when the ad server is indicated on the campaign during setup&lt;br /&gt;
|-&lt;br /&gt;
| CA&lt;br /&gt;
| Campaign Id: this is the ID associated with your DAR campaign. Unless you are creating and managing the Nielsen campaign via the DAR Tag API, then this parameter value will always be generated from the Nielsen campaign management system. Note: often maps to a media-plan I/O Id&lt;br /&gt;
|- style=&amp;quot;background-color:#eff8ef;&amp;quot;&lt;br /&gt;
| CR&lt;br /&gt;
| Creative Id: DAR does not currently report at the creative level; can be hard coded ad server id or associated with a macro expansion&lt;br /&gt;
|-&lt;br /&gt;
| PC&lt;br /&gt;
| Placement Id: can be generated by the ad server via macro expansion or generated by the Nielsen campaign management system. Note: often maps to one of Ad Unit Id, Line Item Id or Video Ad Id&lt;br /&gt;
|- style=&amp;quot;background-color:#eff8ef;&amp;quot;&lt;br /&gt;
| CE&lt;br /&gt;
| Site Id: the Id that identifies a publisher site that the placement needs to be mapped to. Maps into the Nielsen MarketView database. Note: can be hardcoded to a pre-registered ad server site id in the Nielsen system or a macro expansion where more than one pre-existing site ids have been made known to Nielsen&lt;br /&gt;
|-&lt;br /&gt;
| R&lt;br /&gt;
| Cachebuster (web): timestamp / random number. Generated by ad server&lt;br /&gt;
|- style=&amp;quot;background-color:#eff8ef;&amp;quot;&lt;br /&gt;
| AT&lt;br /&gt;
| Fixed value: “view”&lt;br /&gt;
|-&lt;br /&gt;
| RT&lt;br /&gt;
| Fixed value: “banner”&lt;br /&gt;
|- style=&amp;quot;background-color:#eff8ef;&amp;quot;&lt;br /&gt;
| ST&lt;br /&gt;
| Fixed value: “image”&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;blockquote&amp;gt; Do not URL encode the values&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Additional DAR Tag Parameters for Mobile App Audience Measurement ==&lt;br /&gt;
In this section, the additional URL parameters required beyond the standard cookie based web-browser tag are described in detail.&lt;br /&gt;
&lt;br /&gt;
For each of the tag examples detailed below, we can support both non-secure (http) and secure (https) flavors. The standard cookie based web-browser tag is included below for reference purposes.&lt;br /&gt;
&lt;br /&gt;
'''Important note:''' the values against each value-pair in the following tags are for illustrative purposes only. Values for CA, PC and CE will vary depending on the specific campaign being measured and capabilities of the Ad server for macro/value expansion. For more detail on the core DAR  parameters, please see the '''Nielsen DAR Tag Implementation Guide.'''&lt;br /&gt;
&lt;br /&gt;
'''Web Browser DAR tag (cookie based persons identification)'''&lt;br /&gt;
&amp;lt;code&amp;gt; //secure-gl.imrworldwide.com/cgi-bin/m?ci=nlsnci535&amp;amp;am=3&amp;amp;at=view&amp;amp;rt=banner&amp;amp;st=image&amp;amp;ca=nlsn12452&amp;amp;cr=crtve&amp;amp;pc=&amp;lt;creativeid&amp;gt;_plc0001&amp;amp;ce=&amp;lt;siteid&amp;gt;&amp;amp;r=&amp;lt;timestamp&amp;gt; &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Mobile-App DAR Tag Extension (IFA based persons identification)'''&lt;br /&gt;
&amp;lt;code&amp;gt; //secure-gl.imrworldwide.com/cgi-bin/m?ci=nlsnci535&amp;amp;am=3&amp;amp;at=view&amp;amp;rt=banner&amp;amp;st=image&amp;amp;ca=nlsn12452&amp;amp;cr=crtve&amp;amp;pc=&amp;lt;creativeid&amp;gt;_plc0001&amp;amp;ce=&amp;lt;siteid&amp;gt;&amp;amp;c7=osgrp,IOS&amp;amp;c8=devgrp,PHN&amp;amp;c9=devid,XXXX-XX-XXXXX-XXXX &amp;amp;c10=plt,MBL&amp;amp;c12=apv,&amp;lt;appVersion&amp;gt;&amp;amp;c13=asid,NIELSEN-PROVIDEDID&amp;amp;c14=osver,7.0.4&amp;amp;uoo=0&amp;amp;r=&amp;lt;timestamp&amp;gt; &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|- style=&amp;quot;font-weight:bold; &amp;quot;&lt;br /&gt;
! style=&amp;quot;vertical-align:middle;&amp;quot; | Additional DAR Tag&amp;lt;br /&amp;gt; Parameters for Mobile&lt;br /&gt;
! style=&amp;quot;vertical-align:middle;&amp;quot; | Example&lt;br /&gt;
! style=&amp;quot;vertical-align:middle;&amp;quot; | Description&lt;br /&gt;
! style=&amp;quot;vertical-align:middle;&amp;quot; | Mandatory parameter&amp;lt;br /&amp;gt;for mDAR?&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;&amp;quot; | &amp;amp;c7&lt;br /&gt;
| &amp;amp;c7=osgrp,IOS&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;&amp;quot; | OS Grouping&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;&amp;quot; | &lt;br /&gt;
|- style=&amp;quot;background-color:#eff8ef;&amp;quot;&lt;br /&gt;
|  &amp;amp;c8&lt;br /&gt;
| &amp;amp;c8=devgrp,PHN&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;&amp;quot; | Device Grouping&lt;br /&gt;
 | ✔&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;vertical-align:middle;&amp;quot; | &amp;amp;c9&lt;br /&gt;
| &amp;amp;c9=devid,CB6E9220-EA64-440B-9456-33AD2294C658&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; &amp;quot; | Advertising ID&lt;br /&gt;
|   ✔&lt;br /&gt;
|- style=&amp;quot;background-color:#eff8ef;&amp;quot;&lt;br /&gt;
| &amp;amp;c10&lt;br /&gt;
| &amp;amp;c10=plt,MBL&lt;br /&gt;
|  Platform&lt;br /&gt;
|  ✔&lt;br /&gt;
|-&lt;br /&gt;
| &amp;amp;c12&lt;br /&gt;
| &amp;amp;c12=apv,1&lt;br /&gt;
|  App Version&lt;br /&gt;
| &lt;br /&gt;
|- style=&amp;quot;background-color:#eff8ef;&amp;quot;&lt;br /&gt;
|  &amp;amp;c13&lt;br /&gt;
| c13=asid,DD8136-4F0B-470B-9ACA-231E818D95BC&lt;br /&gt;
|  AppID (Nielsen assigned App ID)&lt;br /&gt;
| | ✔&lt;br /&gt;
|-&lt;br /&gt;
|  &amp;amp;c14&lt;br /&gt;
| &amp;amp;c14=osver,15.1.3&lt;br /&gt;
| OS Version&lt;br /&gt;
|  &lt;br /&gt;
|- style=&amp;quot;background-color:#eff8ef;&amp;quot;&lt;br /&gt;
|&amp;amp;uoo&lt;br /&gt;
| &amp;amp;uoo=0&lt;br /&gt;
| Opt-out indicator&lt;br /&gt;
|  ✔&lt;br /&gt;
|-&lt;br /&gt;
|  | &amp;amp;hem_md5&lt;br /&gt;
| &amp;amp;hem_md5=53d8c474c1e871bdd34f14785dbcfd94&lt;br /&gt;
| | MD5 Hashed Email&lt;br /&gt;
|  | &lt;br /&gt;
|- style=&amp;quot;background-color:#eff8ef;&amp;quot;&lt;br /&gt;
| &amp;amp;hem_sha1&lt;br /&gt;
| &lt;br /&gt;
| SHA1 Hashed Email&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
|&amp;amp;hem_sha256&lt;br /&gt;
| &lt;br /&gt;
| SHA256 Hashed Email&lt;br /&gt;
 | &lt;br /&gt;
|- style=&amp;quot;background-color:#eff8ef;&amp;quot;&lt;br /&gt;
 | &amp;amp;hem_unknown&lt;br /&gt;
| &lt;br /&gt;
| Unknown Hashed Algorithm Email&lt;br /&gt;
 | &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;'''Note''': Clients are encouraged to make an effort to always fill-in optional parameters.&lt;br /&gt;
&lt;br /&gt;
'''Note''': Do not URL encode the values.&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== C7 - OS Grouping (Optional) ==&lt;br /&gt;
Valid device OS Grouping data values are the following literal values:&lt;br /&gt;
* osgrp,IOS&lt;br /&gt;
* osgrp,DROID&lt;br /&gt;
* osgrp,ANDROID&lt;br /&gt;
&amp;lt;blockquote&amp;gt;'''Note''': If one of the above values cannot be specific, then the parameter should not be included in the call.&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== C8 - Device Grouping (Mandatory)==&lt;br /&gt;
Valid literal values for phone, tablet, portable media player (iPod) and unknown are as follows:&lt;br /&gt;
* devgrp,PHN - Phone&lt;br /&gt;
* devgrp,TAB - Tablet&lt;br /&gt;
* devgrp,PMP - Portable Media Player (iPod)&lt;br /&gt;
* devgrp,UNWN - Unknown/Unclassified&lt;br /&gt;
* devgrp,DSK - Desktop&lt;br /&gt;
* devgrp,STV ←​ CTV/OTT Device&lt;br /&gt;
==== Notes ====&lt;br /&gt;
* Mandatory for accurate measurement, and if unable to pass, Nielsen cannot guarantee the impression will be classified correctly. &lt;br /&gt;
* “​UNWN” will result in Nielsen attempting an introspection of the User Agent in the HTTP request sent against Device Atlas for classification. &lt;br /&gt;
* “STV” is the default value for OTT when the specific device value isn’t passed.&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== C9 - Advertising ID (Mandatory) ==&lt;br /&gt;
This is the advertiser ID for the client’s mobile device. IDFA for iOS, Google Advertising ID for Android:&lt;br /&gt;
* devid,&amp;lt;IDFA&amp;gt;&lt;br /&gt;
* devid,&amp;lt;IFA&amp;gt;&lt;br /&gt;
* devid,&amp;lt;Google Advertising ID&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Notes ====&lt;br /&gt;
For Android devices, the Google Advertiser ID should be used as the default and the Android ID as the second option.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* If C9 is &amp;lt;empty&amp;gt;, upon receiving the ping, the Nielsen collection server will attempt a 302 redirect to the data provider per the regular DAR pixel for browsers.&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
* As of August 1, 2014, Google is enforcing use of the Advertising ID for advertising and user analytics (http://play.google.com/about/developer-content-policy.html).&lt;br /&gt;
&amp;lt;blockquote&amp;gt;'' &amp;quot;Beginning August 1st 2014, all updates and new apps uploaded to the Play Store must use the advertising ID (when available on a device) in lieu of any other device identifiers for any advertising purposes.&amp;quot;&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
* It is preferred that the IDFA or Google Advertising ID be sent as is from the mobile device (“cleartext”). However, if mandated, we will support SHA256 hashed values with no-salt. Passing a hashed value (and/or salting) using any other standard will result in a failed match by the data provider upon receiving the ping. In turn, this results in impressions surfacing in the DAR unmeasurable audience totals. Please contact Nielsen if you anticipate a large percentage of hashed values coming in from your publisher clients.&lt;br /&gt;
&lt;br /&gt;
=== Privacy, Ad Tracking, and Ad Targeting ===&lt;br /&gt;
In newer iterations of the iOS and Android device operating systems, a facility exists allowing users to “opt-out” of “Ad Tracking”. It is Nielsen’s interpretation that this setting is primarily designed to allow users to specify opt-out of Ad Targeting rather than Ad Measurement. DAR&lt;br /&gt;
does not provide Ad Targeting data.&lt;br /&gt;
&lt;br /&gt;
However, it is also Nielsen’s position that the publisher or Ad network should provide a mechanism to also allow a user to opt-out of Ad Measurement. The Nielsen SDK will honor the Nielsen Ad Measurement opt-out settings configurable @ http://www.nielsen.com/us/en/campaigns/privacy-policy-opt-out.html.&lt;br /&gt;
&lt;br /&gt;
However if the integration approach described in this document is being used instead of the Nielsen SDK then '''YOU''' as the publisher or Ad network must provide a capability to opt-out of Ad Measurement as the configuration on www.nielsen.com will not be detectable. You may&lt;br /&gt;
elect to interpret the iOS / Android “Ad Tracking” setting for the purpose of limit Ad measurement or provide a separate discreet mechanism to allow a user to opt-out of Ad measurement.&lt;br /&gt;
&lt;br /&gt;
Please see '''&amp;amp;uoo''' later in this document for implementation details of the optout indicator.&lt;br /&gt;
&lt;br /&gt;
For additional clarification on privacy policy, please contact your Nielsen representative.&lt;br /&gt;
&lt;br /&gt;
== C10 - Platform (Mandatory) ==&lt;br /&gt;
To determine this value, Nielsen suggests that the ad network leverage user agent information to determine if the client device is either a mobile or desktop device.&lt;br /&gt;
&lt;br /&gt;
Valid literal values for mobile and desktop data values are as follows:&lt;br /&gt;
* plt,MBL&lt;br /&gt;
* plt,DSK&lt;br /&gt;
* plt,OTT&lt;br /&gt;
==== Notes ====&lt;br /&gt;
* Mandatory for accurate measurement, and if unable to pass, Nielsen cannot guarantee the impression will be classified correctly. &lt;br /&gt;
* Omitting c10, or a value in c10, will result in Nielsen attempting an introspection of the User Agent in the HTTP request sent against Device Atlas for classification. &lt;br /&gt;
* “OTT” (Connective Devices) is a valid value that is populated by participating vendors (Amazon, Hulu and Roku).  Non-participating vendors will be unmeasurable volumetric metric only.&lt;br /&gt;
&lt;br /&gt;
== C12 - App Version (Optional) ==&lt;br /&gt;
This is the version of the ad network system software or SDK that is implemented in this extension. Although this field is not required, this feature can be useful for troubleshooting purposes following deployment.&lt;br /&gt;
* apv,&amp;lt;N.N&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== C13 - AppID ==&lt;br /&gt;
This Nielsen provided ID is unique to the ad network and is required for certification.&lt;br /&gt;
* asid,&amp;lt;NNNNNNNNN-NNNN-NNNN-NNNN-NNNNNNNNNNNN&amp;gt;&lt;br /&gt;
An App ID will be provided for testing. A separate App ID will be provided for production use. Please request from your Nielsen representative.&lt;br /&gt;
&amp;lt;blockquote&amp;gt;'''Note''': If you are a publisher leveraging the non-SDK solution, you will be provided with a unique App ID for each combination of app and device OS type.&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== C14 - OS Version (Optional) ==&lt;br /&gt;
Operating system version&lt;br /&gt;
* osver,&amp;lt;OS Version&amp;gt;&lt;br /&gt;
Example: for iOS -&amp;gt; 7.0.4&lt;br /&gt;
&lt;br /&gt;
== UOO - Opt Out ==&lt;br /&gt;
Opt-out parameter&lt;br /&gt;
* &amp;lt;Boolean state&amp;gt;&lt;br /&gt;
&amp;lt;Boolean state&amp;gt; is a Boolean representation of whether the user is opting out or not.&lt;br /&gt;
&lt;br /&gt;
The absence of uoo in the tag is interpreted as an implicit opt-in. i.e. not opting out.&lt;br /&gt;
&lt;br /&gt;
The following pairings of opt-out are supported. '''Important:''' you must choose one set of paired values only and inform your Nielsen representative.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Opt-out !! Opt-in&lt;br /&gt;
|-&lt;br /&gt;
| uoo=true || uoo=false&lt;br /&gt;
|-&lt;br /&gt;
| uoo=1 || uoo=0&lt;br /&gt;
|-&lt;br /&gt;
| uoo=yes || uoo=no&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;blockquote&amp;gt;'''Note''':  if your Ad server is not capable os supporting the discrete &amp;amp;uoo parameter then you can set the c9 value to &amp;lt;code&amp;gt;devid,optout&amp;lt;/code&amp;gt; (for example &amp;lt;code&amp;gt;…&amp;amp;c8=PHN&amp;amp;c9=devid,optout&amp;amp;c10=MBL…&amp;lt;/code&amp;gt;)&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
== Additional Parameters == &lt;br /&gt;
This section describes several important additional parameters that the DAR tag can support, specifically Hashed Email, and UID2 values. Please note that all parameters are case-sensitive.&lt;br /&gt;
&lt;br /&gt;
Please work with your Nielsen Technical Account Manager to decide which of the following parameters to append to the standard DAR tag.&lt;br /&gt;
=== HEM Support (Hashed Email) ===&lt;br /&gt;
Please use the parameter that matches your hashing algorithm. For example, if you are using sha256 to encode the email address, then use hem_sha256={encrypted_value_here}&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-weight:bold; background-color:#EAECF0;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Name&lt;br /&gt;
! Description&lt;br /&gt;
! Available Tag Parameters&lt;br /&gt;
|- style=&amp;quot;font-weight:normal; background-color:#F8F9FA;&amp;quot;&lt;br /&gt;
| Hashed Email&lt;br /&gt;
| User’s email address that has been run through a hashing algorithm&amp;lt;br /&amp;gt;(e.g. SHA256, MD5, SHA1) to create a unique hexadecimal string.&amp;lt;br /&amp;gt; If a client is unable to determine hashing type, they should pass&amp;lt;br /&amp;gt;using &amp;amp;hem_unknown parameter.&lt;br /&gt;
| &amp;amp;hem_unknown&amp;lt;br /&amp;gt;&amp;amp;hem_sha256&amp;lt;br /&amp;gt;&amp;amp;hem_md5&amp;lt;br /&amp;gt;&amp;amp;hem_sha1&lt;br /&gt;
|}&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-weight:bold;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background-color:#dae8fc; color:#002041;&amp;quot;&lt;br /&gt;
! Example&lt;br /&gt;
|- style=&amp;quot;font-weight:normal;&amp;quot;&lt;br /&gt;
| hem_sha256=tMmiiTI7IaAcPpQPFQ65uMVCWH8av9jw4cwf/F5HVRQ=&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Unified ID ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;background-color:#F8F9FA;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;font-weight:bold; background-color:#EAECF0;&amp;quot;&lt;br /&gt;
! Name&lt;br /&gt;
! Description&lt;br /&gt;
! Available Tag Parameters&lt;br /&gt;
|-&lt;br /&gt;
| Unified ID 2.0&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)&amp;lt;br /&amp;gt;and is now managed by Prebid.&lt;br /&gt;
| &amp;amp;uid2&lt;br /&gt;
|-&lt;br /&gt;
| Unified ID 2.0 Token&lt;br /&gt;
| Encrypted Unified ID 2.0&lt;br /&gt;
| &amp;amp;uid_token&lt;br /&gt;
|}&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-weight:bold;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background-color:#32BBB9; color:#002041;&amp;quot;&lt;br /&gt;
! Example&lt;br /&gt;
|- style=&amp;quot;font-weight:normal;&amp;quot;&lt;br /&gt;
| uid2=MTKVpUAzwYAPnHrtfE0wlINOMzhU7UUEjjVdCdRu63k=&amp;lt;br /&amp;gt;uid_token=AgAAAAPFR0zA5ogv/yaAPiUsAdZPsfqS8QlDSGxAB+rr8yekFs3AjLYVk5qqqiyV2XHbSuwzHmxSlLeQeKQI1mp015jsNnpX5&amp;lt;br /&amp;gt;/xGgXldcgVz+gFnyh3T8/3agMwRmyrhCxG4oH2C7fc48AQk2eotE7FW0ZDEYM8fD9ZxDaxFUC/OV3OuZA&amp;amp;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Server-Side Tag Dispatch ==&lt;br /&gt;
The standard way of triggering a Digital Ad Ratings (DAR) tag on Mobile-App is for the publisher app to trigger (either directly or via Ad server) the tag upon Ad exposure to the user. i.e. a client-side initiated tag.&lt;br /&gt;
&lt;br /&gt;
It is important to note that MRC/IAB measurement standards stipulate that the Ad exposure event still be initiated and recorded from the client-side, even if the Ad measurement tag (in this case a DAR tag) is physically initiated from the server-side. Evidence may be required (publisher log file or similar) from the MRC/IAB that the user was exposed to the Ad creative on their device.&lt;br /&gt;
&lt;br /&gt;
The following additional changes to the standard mobile-app DAR tag are required to support dispatch the DAR tag from a '''server-side''' publisher ad server:&lt;br /&gt;
&lt;br /&gt;
#'''X-Forwarded-For (XFF) IP:''' The original client IP address must be passed in the X-Forwarded-For (XFF) HTTP header field. When the impression is fired directly from the Ad Server, the XReal-IP will be the Ad Server IP.&lt;br /&gt;
#'''Cachebuster:''' Already present in the DAR tag, this now becomes mandatory. A cachebuster or random number ensures a new call is made to the Ad Server. By including a cachebuster ('r' parameter), the tag will not be cached. The timestamp of when the Ad was served can be used.&lt;br /&gt;
#'''User Agent (UA):''' The HTTP UA from the client device should be used to populate the HTTP UA in the server-server connection/ping.&lt;br /&gt;
#'''TLS:''' the tag received by Nielsen must be TLS v1.2 compliant or greater.&lt;br /&gt;
&lt;br /&gt;
==== Important notes ====&lt;br /&gt;
* the current iteration of server-server tag collection only supports mobile-app (IFA and AAID) and will NOT support cookie based audience measurement.&lt;br /&gt;
* The client’s server-server setup that is going to trigger/send the DAR tag should ​suppress​ any Nielsen cookie returned by the Nielsen collection server as a result of the first DAR tag received. If the Nielsen cookie (returned upon receiving the first DAR tag into secure.imrworldwide.com) is not suppressed then invalid traffic (IVT) filtration will quickly be triggered upon receiving the 2​nd and nth tag.&lt;br /&gt;
&lt;br /&gt;
== Appendix A: Example Implementation ==&lt;br /&gt;
In the below examples, you will see the overall DAR flow (Figure 1) and a detailed illustrative Ad Request / Response model (Figure 2).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div align=&amp;quot;center&amp;quot;&amp;gt;'''Figure 1 – End to End Data Flow'''&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:mDAR_Dataflow.png|center|link=]]&lt;br /&gt;
&lt;br /&gt;
Nielsen certified publishers and platforms will append the new parameters (below) with the appropriate URL safe values passed to Nielsen’s current DAR tag. The current DAR tag should be acquired using the existing processes for each campaign/placement. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&amp;lt;code&amp;gt;'''&amp;amp;c7'''=osgrp,IOS'''&amp;amp;c8'''=devgrp,PHN'''&amp;amp;c9'''=devid,XXXX-XX-XXXXXXXXX'''&amp;amp;c10'''=plt,MBL'''&amp;amp;c12'''=apv,AppVersion'''&amp;amp;c13'''=asid,XXXX-XX-XXXX-XXXX&amp;lt;/code&amp;gt;&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div align=&amp;quot;center&amp;quot;&amp;gt;'''Figure 2 – Illustrative Ad Request / Ad Response'''&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:ad_response.png|center|link=]]&lt;br /&gt;
&lt;br /&gt;
The above is an example of how an Ad server is supporting the build of mobile DAR tags for its publisher clients.&lt;br /&gt;
*Step 2 in Figure 1 is a summary of steps 1 and 2 in Figure 2 above.&lt;br /&gt;
*Steps 3 and 4 in Figure 1 is a summary of steps 3 through 9 in Figure 2 above.&lt;br /&gt;
&lt;br /&gt;
== Appendix B: Implementation, Testing &amp;amp; Certification ==&lt;br /&gt;
Once you have integrated the ping per the above specs, Nielsen requires you to pass through a one-time certification before traffic can be accepted into the production environment.&lt;br /&gt;
&lt;br /&gt;
The overall process is:&lt;br /&gt;
* Valid DAR contract or NDA is in place.&lt;br /&gt;
* Kick-off meeting with Nielsen onboarding team.&lt;br /&gt;
* Confirm meet minimums testing requirements:&lt;br /&gt;
** Host Ad/Tag for in-app delivery&lt;br /&gt;
** Can pass opt-out back to Nielsen&lt;br /&gt;
** Can pass Device ID in cleartext or SHA-256&lt;br /&gt;
* Nielsen provides the mDAR testing form that includes the test App ID and the test tag&lt;br /&gt;
* Identify the live campaigns for initial testing and run the test tag; suggest 5,000-10,000 impressions.&lt;br /&gt;
* Nielsen validates the data received from the test and confirms the initial test successful and provides the production App ID.&lt;br /&gt;
* Ensure contracts are in place for external test campaign with Nielsen Client Service team.&lt;br /&gt;
* Identify another live campaigns for production testing with production tag and app ID.&lt;br /&gt;
* Nielsen validates the data received from the final test and confirms certification for any DAR countries tested.&lt;br /&gt;
==== Goals ====&lt;br /&gt;
* To test in full DAR E2E environment, receive matches from data provider for demographics and correct identification of mobile impressions.&lt;br /&gt;
* To test that all minimum requirements in step 3 are passed to Nielsen with no issues.&lt;br /&gt;
* To test in a full DAR end-to-end environment, receive matches from data providers for demographics and correct identification of mobile impressions.&lt;/div&gt;</summary>
		<author><name>ColinBrown</name></author>
	</entry>
	<entry>
		<id>https://nielsentest.mywikis.net/w/index.php?title=Mobile_DAR_Attributes_Requirements&amp;diff=5968</id>
		<title>Mobile DAR Attributes Requirements</title>
		<link rel="alternate" type="text/html" href="https://nielsentest.mywikis.net/w/index.php?title=Mobile_DAR_Attributes_Requirements&amp;diff=5968"/>
		<updated>2022-09-20T23:53:22Z</updated>

		<summary type="html">&lt;p&gt;ColinBrown: /* HEM Support (Hashed Email) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Breadcrumb|}} {{Breadcrumb|Digital}} {{Breadcrumb|Digital Ad Ratings}}  {{CurrentBreadcrumb}}&lt;br /&gt;
[[Category:Digital]]&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
The standard Nielsen Digital Ad Rating (DAR) tag only supports cookie based '''web browser''' viewing on PCs, MACs, and tablets/smartphone (web-browser). However, when ads are served to tablets/smartphones via native '''app-store applications''', the cookie based tag does not function correctly. Additional tag attributes are needed in order for audience reach measurement to function. Example tags are detailed later in this document.&lt;br /&gt;
&lt;br /&gt;
One way Nielsen clients can accomplish this is by the use of Nielsen’s native iOS/Android App SDK. Nielsen’s App SDK automatically adds these additional tag attributes to the standard cookie based webbrowser tag before the tag is forwarded on to the Nielsen census collection system. However, there is a significant portion of the publisher mobile app universe where it is either not feasible, or desirable to integrate Nielsen’s native App SDK into 3rd party applications.&lt;br /&gt;
&lt;br /&gt;
The purpose of this document is to detail the tag URL parameters required that are '''additional''' to the standard cookie based web-browser tag.&lt;br /&gt;
&lt;br /&gt;
The most critical additional parameter required is the insertion of the Advertising ID (IFA / IDFA / AdID) from the users device that has been exposed to the Ad creative.&lt;br /&gt;
&lt;br /&gt;
If you are reading this document as an Ad server representative then it is assumed that you have published a specification that mobile app publishers follow to pass the appropriate Advertising ID in the Ad request payload. Typically, your Ad server will then expand a macro or label with that value passed in the Ad request URL, insert into the DAR mobile app tag and redirect to Nielsen collections. See s. See  [[#Appendix A: Example Implementation]], figure 2 for an example tag workflow.&lt;br /&gt;
&lt;br /&gt;
The standard way of triggering a Digital Ad Ratings (DAR) tag on Mobile-App is for the publisher app to trigger (either directly or via Ad server) the tag upon Ad exposure to the user. i.e. a client-side initiated tag. If you wish to implement server-side dispatch of mobile in-app DAR tags then see additional section in this document titled '''server-side tag dispatch'''. Please read the rest of this document before reading the section on server-server.&lt;br /&gt;
&lt;br /&gt;
Once you have completed your integration, you will be required to submit to a short certification. See [[#Appendix B: Implementation, Testing &amp;amp; Certification]]. Certification also grants inclusion to the approved publisher and certified Ad server vendor list.&lt;br /&gt;
&lt;br /&gt;
'''Important Note:''' for 2018, the MRC has mandated a series of changes to audience measurement that will require additional tag events to be communicated to Nielsen so that we may compute duration weighting etc. You are strongly urged to contact your Nielsen client service representative to seek a briefing from Nielsen on the best technical methods for tagging in order to be compliant with these changes.&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
== Standard DAR Tag ==&lt;br /&gt;
The DAR tag is available as a 1x1 pixel. The following pixel/tag parameters must be specified for all DAR tags, 1x1, regardless of implementation type: browser, mobile browser, mobile app or connected device.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
! Tag Parameter&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| CI&lt;br /&gt;
| Client ID: the ID that is associated with the DAR account that processed tag data is associated with. Will always be hardcoded to a Nielsen generated value that comes from the Nielsen campaign management system&lt;br /&gt;
|- style=&amp;quot;background-color:#eff8ef;&amp;quot;&lt;br /&gt;
| AM&lt;br /&gt;
| Ad Server: an ad server participating on the campaign media-plan. This is an internal Nielsen generated value when the ad server is indicated on the campaign during setup&lt;br /&gt;
|-&lt;br /&gt;
| CA&lt;br /&gt;
| Campaign Id: this is the ID associated with your DAR campaign. Unless you are creating and managing the Nielsen campaign via the DAR Tag API, then this parameter value will always be generated from the Nielsen campaign management system. Note: often maps to a media-plan I/O Id&lt;br /&gt;
|- style=&amp;quot;background-color:#eff8ef;&amp;quot;&lt;br /&gt;
| CR&lt;br /&gt;
| Creative Id: DAR does not currently report at the creative level; can be hard coded ad server id or associated with a macro expansion&lt;br /&gt;
|-&lt;br /&gt;
| PC&lt;br /&gt;
| Placement Id: can be generated by the ad server via macro expansion or generated by the Nielsen campaign management system. Note: often maps to one of Ad Unit Id, Line Item Id or Video Ad Id&lt;br /&gt;
|- style=&amp;quot;background-color:#eff8ef;&amp;quot;&lt;br /&gt;
| CE&lt;br /&gt;
| Site Id: the Id that identifies a publisher site that the placement needs to be mapped to. Maps into the Nielsen MarketView database. Note: can be hardcoded to a pre-registered ad server site id in the Nielsen system or a macro expansion where more than one pre-existing site ids have been made known to Nielsen&lt;br /&gt;
|-&lt;br /&gt;
| R&lt;br /&gt;
| Cachebuster (web): timestamp / random number. Generated by ad server&lt;br /&gt;
|- style=&amp;quot;background-color:#eff8ef;&amp;quot;&lt;br /&gt;
| AT&lt;br /&gt;
| Fixed value: “view”&lt;br /&gt;
|-&lt;br /&gt;
| RT&lt;br /&gt;
| Fixed value: “banner”&lt;br /&gt;
|- style=&amp;quot;background-color:#eff8ef;&amp;quot;&lt;br /&gt;
| ST&lt;br /&gt;
| Fixed value: “image”&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;blockquote&amp;gt; Do not URL encode the values&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Additional DAR Tag Parameters for Mobile App Audience Measurement ==&lt;br /&gt;
In this section, the additional URL parameters required beyond the standard cookie based web-browser tag are described in detail.&lt;br /&gt;
&lt;br /&gt;
For each of the tag examples detailed below, we can support both non-secure (http) and secure (https) flavors. The standard cookie based web-browser tag is included below for reference purposes.&lt;br /&gt;
&lt;br /&gt;
'''Important note:''' the values against each value-pair in the following tags are for illustrative purposes only. Values for CA, PC and CE will vary depending on the specific campaign being measured and capabilities of the Ad server for macro/value expansion. For more detail on the core DAR  parameters, please see the '''Nielsen DAR Tag Implementation Guide.'''&lt;br /&gt;
&lt;br /&gt;
'''Web Browser DAR tag (cookie based persons identification)'''&lt;br /&gt;
&amp;lt;code&amp;gt; //secure-gl.imrworldwide.com/cgi-bin/m?ci=nlsnci535&amp;amp;am=3&amp;amp;at=view&amp;amp;rt=banner&amp;amp;st=image&amp;amp;ca=nlsn12452&amp;amp;cr=crtve&amp;amp;pc=&amp;lt;creativeid&amp;gt;_plc0001&amp;amp;ce=&amp;lt;siteid&amp;gt;&amp;amp;r=&amp;lt;timestamp&amp;gt; &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Mobile-App DAR Tag Extension (IFA based persons identification)'''&lt;br /&gt;
&amp;lt;code&amp;gt; //secure-gl.imrworldwide.com/cgi-bin/m?ci=nlsnci535&amp;amp;am=3&amp;amp;at=view&amp;amp;rt=banner&amp;amp;st=image&amp;amp;ca=nlsn12452&amp;amp;cr=crtve&amp;amp;pc=&amp;lt;creativeid&amp;gt;_plc0001&amp;amp;ce=&amp;lt;siteid&amp;gt;&amp;amp;c7=osgrp,IOS&amp;amp;c8=devgrp,PHN&amp;amp;c9=devid,XXXX-XX-XXXXX-XXXX &amp;amp;c10=plt,MBL&amp;amp;c12=apv,&amp;lt;appVersion&amp;gt;&amp;amp;c13=asid,NIELSEN-PROVIDEDID&amp;amp;c14=osver,7.0.4&amp;amp;uoo=0&amp;amp;r=&amp;lt;timestamp&amp;gt; &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Additional DAR Tag Parameters for Mobile !! Description !! Mandatory parameter for mDAR?&lt;br /&gt;
|-&lt;br /&gt;
| &amp;amp;c7 || OS Grouping ||&lt;br /&gt;
|- style=&amp;quot;background-color:#eff8ef;&amp;quot;&lt;br /&gt;
| &amp;amp;c8  || Device Grouping || &amp;lt;center&amp;gt;✔&amp;lt;/center&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;amp;c9 || Advertising ID || &amp;lt;center&amp;gt;✔&amp;lt;/center&amp;gt;&lt;br /&gt;
|- style=&amp;quot;background-color:#eff8ef;&amp;quot;&lt;br /&gt;
| &amp;amp;c10 || Platform || &amp;lt;center&amp;gt;✔&amp;lt;/center&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;amp;c12 || App Version ||&lt;br /&gt;
|- style=&amp;quot;background-color:#eff8ef;&amp;quot;&lt;br /&gt;
| &amp;amp;c13 || AppID (Nielsen assigned App ID) || &amp;lt;center&amp;gt;✔&amp;lt;/center&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;amp;c14 || OS Version ||&lt;br /&gt;
|- style=&amp;quot;background-color:#eff8ef;&amp;quot;&lt;br /&gt;
| &amp;amp;uoo || Opt-out indicator || &amp;lt;center&amp;gt;✔&amp;lt;/center&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;blockquote&amp;gt;'''Note''': Clients are encouraged to make an effort to always fill-in optional parameters.&lt;br /&gt;
&lt;br /&gt;
'''Note''': Do not URL encode the values.&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== C7 - OS Grouping (Optional) ==&lt;br /&gt;
Valid device OS Grouping data values are the following literal values:&lt;br /&gt;
* osgrp,IOS&lt;br /&gt;
* osgrp,DROID&lt;br /&gt;
* osgrp,ANDROID&lt;br /&gt;
&amp;lt;blockquote&amp;gt;'''Note''': If one of the above values cannot be specific, then the parameter should not be included in the call.&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== C8 - Device Grouping (Mandatory)==&lt;br /&gt;
Valid literal values for phone, tablet, portable media player (iPod) and unknown are as follows:&lt;br /&gt;
* devgrp,PHN - Phone&lt;br /&gt;
* devgrp,TAB - Tablet&lt;br /&gt;
* devgrp,PMP - Portable Media Player (iPod)&lt;br /&gt;
* devgrp,UNWN - Unknown/Unclassified&lt;br /&gt;
* devgrp,DSK - Desktop&lt;br /&gt;
* devgrp,STV ←​ CTV/OTT Device&lt;br /&gt;
==== Notes ====&lt;br /&gt;
* Mandatory for accurate measurement, and if unable to pass, Nielsen cannot guarantee the impression will be classified correctly. &lt;br /&gt;
* “​UNWN” will result in Nielsen attempting an introspection of the User Agent in the HTTP request sent against Device Atlas for classification. &lt;br /&gt;
* “STV” is the default value for OTT when the specific device value isn’t passed.&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== C9 - Advertising ID (Mandatory) ==&lt;br /&gt;
This is the advertiser ID for the client’s mobile device. IDFA for iOS, Google Advertising ID for Android:&lt;br /&gt;
* devid,&amp;lt;IDFA&amp;gt;&lt;br /&gt;
* devid,&amp;lt;IFA&amp;gt;&lt;br /&gt;
* devid,&amp;lt;Google Advertising ID&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Notes ====&lt;br /&gt;
For Android devices, the Google Advertiser ID should be used as the default and the Android ID as the second option.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* If C9 is &amp;lt;empty&amp;gt;, upon receiving the ping, the Nielsen collection server will attempt a 302 redirect to the data provider per the regular DAR pixel for browsers.&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
* As of August 1, 2014, Google is enforcing use of the Advertising ID for advertising and user analytics (http://play.google.com/about/developer-content-policy.html).&lt;br /&gt;
&amp;lt;blockquote&amp;gt;'' &amp;quot;Beginning August 1st 2014, all updates and new apps uploaded to the Play Store must use the advertising ID (when available on a device) in lieu of any other device identifiers for any advertising purposes.&amp;quot;&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
* It is preferred that the IDFA or Google Advertising ID be sent as is from the mobile device (“cleartext”). However, if mandated, we will support SHA256 hashed values with no-salt. Passing a hashed value (and/or salting) using any other standard will result in a failed match by the data provider upon receiving the ping. In turn, this results in impressions surfacing in the DAR unmeasurable audience totals. Please contact Nielsen if you anticipate a large percentage of hashed values coming in from your publisher clients.&lt;br /&gt;
&lt;br /&gt;
=== Privacy, Ad Tracking, and Ad Targeting ===&lt;br /&gt;
In newer iterations of the iOS and Android device operating systems, a facility exists allowing users to “opt-out” of “Ad Tracking”. It is Nielsen’s interpretation that this setting is primarily designed to allow users to specify opt-out of Ad Targeting rather than Ad Measurement. DAR&lt;br /&gt;
does not provide Ad Targeting data.&lt;br /&gt;
&lt;br /&gt;
However, it is also Nielsen’s position that the publisher or Ad network should provide a mechanism to also allow a user to opt-out of Ad Measurement. The Nielsen SDK will honor the Nielsen Ad Measurement opt-out settings configurable @ http://www.nielsen.com/us/en/campaigns/privacy-policy-opt-out.html.&lt;br /&gt;
&lt;br /&gt;
However if the integration approach described in this document is being used instead of the Nielsen SDK then '''YOU''' as the publisher or Ad network must provide a capability to opt-out of Ad Measurement as the configuration on www.nielsen.com will not be detectable. You may&lt;br /&gt;
elect to interpret the iOS / Android “Ad Tracking” setting for the purpose of limit Ad measurement or provide a separate discreet mechanism to allow a user to opt-out of Ad measurement.&lt;br /&gt;
&lt;br /&gt;
Please see '''&amp;amp;uoo''' later in this document for implementation details of the optout indicator.&lt;br /&gt;
&lt;br /&gt;
For additional clarification on privacy policy, please contact your Nielsen representative.&lt;br /&gt;
&lt;br /&gt;
== C10 - Platform (Mandatory) ==&lt;br /&gt;
To determine this value, Nielsen suggests that the ad network leverage user agent information to determine if the client device is either a mobile or desktop device.&lt;br /&gt;
&lt;br /&gt;
Valid literal values for mobile and desktop data values are as follows:&lt;br /&gt;
* plt,MBL&lt;br /&gt;
* plt,DSK&lt;br /&gt;
* plt,OTT&lt;br /&gt;
==== Notes ====&lt;br /&gt;
* Mandatory for accurate measurement, and if unable to pass, Nielsen cannot guarantee the impression will be classified correctly. &lt;br /&gt;
* Omitting c10, or a value in c10, will result in Nielsen attempting an introspection of the User Agent in the HTTP request sent against Device Atlas for classification. &lt;br /&gt;
* “OTT” (Connective Devices) is a valid value that is populated by participating vendors (Amazon, Hulu and Roku).  Non-participating vendors will be unmeasurable volumetric metric only.&lt;br /&gt;
&lt;br /&gt;
== C12 - App Version (Optional) ==&lt;br /&gt;
This is the version of the ad network system software or SDK that is implemented in this extension. Although this field is not required, this feature can be useful for troubleshooting purposes following deployment.&lt;br /&gt;
* apv,&amp;lt;N.N&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== C13 - AppID ==&lt;br /&gt;
This Nielsen provided ID is unique to the ad network and is required for certification.&lt;br /&gt;
* asid,&amp;lt;NNNNNNNNN-NNNN-NNNN-NNNN-NNNNNNNNNNNN&amp;gt;&lt;br /&gt;
An App ID will be provided for testing. A separate App ID will be provided for production use. Please request from your Nielsen representative.&lt;br /&gt;
&amp;lt;blockquote&amp;gt;'''Note''': If you are a publisher leveraging the non-SDK solution, you will be provided with a unique App ID for each combination of app and device OS type.&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== C14 - OS Version (Optional) ==&lt;br /&gt;
Operating system version&lt;br /&gt;
* osver,&amp;lt;OS Version&amp;gt;&lt;br /&gt;
Example: for iOS -&amp;gt; 7.0.4&lt;br /&gt;
&lt;br /&gt;
== UOO - Opt Out ==&lt;br /&gt;
Opt-out parameter&lt;br /&gt;
* &amp;lt;Boolean state&amp;gt;&lt;br /&gt;
&amp;lt;Boolean state&amp;gt; is a Boolean representation of whether the user is opting out or not.&lt;br /&gt;
&lt;br /&gt;
The absence of uoo in the tag is interpreted as an implicit opt-in. i.e. not opting out.&lt;br /&gt;
&lt;br /&gt;
The following pairings of opt-out are supported. '''Important:''' you must choose one set of paired values only and inform your Nielsen representative.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Opt-out !! Opt-in&lt;br /&gt;
|-&lt;br /&gt;
| uoo=true || uoo=false&lt;br /&gt;
|-&lt;br /&gt;
| uoo=1 || uoo=0&lt;br /&gt;
|-&lt;br /&gt;
| uoo=yes || uoo=no&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;blockquote&amp;gt;'''Note''':  if your Ad server is not capable os supporting the discrete &amp;amp;uoo parameter then you can set the c9 value to &amp;lt;code&amp;gt;devid,optout&amp;lt;/code&amp;gt; (for example &amp;lt;code&amp;gt;…&amp;amp;c8=PHN&amp;amp;c9=devid,optout&amp;amp;c10=MBL…&amp;lt;/code&amp;gt;)&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
== Additional Parameters == &lt;br /&gt;
This section describes several important additional parameters that the DAR tag can support, specifically Hashed Email, and UID2 values. Please note that all parameters are case-sensitive.&lt;br /&gt;
&lt;br /&gt;
Please work with your Nielsen Technical Account Manager to decide which of the following parameters to append to the standard DAR tag.&lt;br /&gt;
=== HEM Support (Hashed Email) ===&lt;br /&gt;
Please use the parameter that matches your hashing algorithm. For example, if you are using sha256 to encode the email address, then use hem_sha256={encrypted_value_here}&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-weight:bold; background-color:#EAECF0;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Name&lt;br /&gt;
! Description&lt;br /&gt;
! Available Tag Parameters&lt;br /&gt;
|- style=&amp;quot;font-weight:normal; background-color:#F8F9FA;&amp;quot;&lt;br /&gt;
| Hashed Email&lt;br /&gt;
| User’s email address that has been run through a hashing algorithm&amp;lt;br /&amp;gt;(e.g. SHA256, MD5, SHA1) to create a unique hexadecimal string.&amp;lt;br /&amp;gt; If a client is unable to determine hashing type, they should pass&amp;lt;br /&amp;gt;using &amp;amp;hem_unknown parameter.&lt;br /&gt;
| &amp;amp;hem_unknown&amp;lt;br /&amp;gt;&amp;amp;hem_sha256&amp;lt;br /&amp;gt;&amp;amp;hem_md5&amp;lt;br /&amp;gt;&amp;amp;hem_sha1&lt;br /&gt;
|}&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-weight:bold;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background-color:#dae8fc; color:#002041;&amp;quot;&lt;br /&gt;
! Example&lt;br /&gt;
|- style=&amp;quot;font-weight:normal;&amp;quot;&lt;br /&gt;
| hem_sha256=tMmiiTI7IaAcPpQPFQ65uMVCWH8av9jw4cwf/F5HVRQ=&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Unified ID ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;background-color:#F8F9FA;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;font-weight:bold; background-color:#EAECF0;&amp;quot;&lt;br /&gt;
! Name&lt;br /&gt;
! Description&lt;br /&gt;
! Available Tag Parameters&lt;br /&gt;
|-&lt;br /&gt;
| Unified ID 2.0&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)&amp;lt;br /&amp;gt;and is now managed by Prebid.&lt;br /&gt;
| &amp;amp;uid2&lt;br /&gt;
|-&lt;br /&gt;
| Unified ID 2.0 Token&lt;br /&gt;
| Encrypted Unified ID 2.0&lt;br /&gt;
| &amp;amp;uid_token&lt;br /&gt;
|}&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-weight:bold;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background-color:#32BBB9; color:#002041;&amp;quot;&lt;br /&gt;
! Example&lt;br /&gt;
|- style=&amp;quot;font-weight:normal;&amp;quot;&lt;br /&gt;
| uid2=MTKVpUAzwYAPnHrtfE0wlINOMzhU7UUEjjVdCdRu63k=&amp;lt;br /&amp;gt;uid_token=AgAAAAPFR0zA5ogv/yaAPiUsAdZPsfqS8QlDSGxAB+rr8yekFs3AjLYVk5qqqiyV2XHbSuwzHmxSlLeQeKQI1mp015jsNnpX5&amp;lt;br /&amp;gt;/xGgXldcgVz+gFnyh3T8/3agMwRmyrhCxG4oH2C7fc48AQk2eotE7FW0ZDEYM8fD9ZxDaxFUC/OV3OuZA&amp;amp;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Server-Side Tag Dispatch ==&lt;br /&gt;
The standard way of triggering a Digital Ad Ratings (DAR) tag on Mobile-App is for the publisher app to trigger (either directly or via Ad server) the tag upon Ad exposure to the user. i.e. a client-side initiated tag.&lt;br /&gt;
&lt;br /&gt;
It is important to note that MRC/IAB measurement standards stipulate that the Ad exposure event still be initiated and recorded from the client-side, even if the Ad measurement tag (in this case a DAR tag) is physically initiated from the server-side. Evidence may be required (publisher log file or similar) from the MRC/IAB that the user was exposed to the Ad creative on their device.&lt;br /&gt;
&lt;br /&gt;
The following additional changes to the standard mobile-app DAR tag are required to support dispatch the DAR tag from a '''server-side''' publisher ad server:&lt;br /&gt;
&lt;br /&gt;
#'''X-Forwarded-For (XFF) IP:''' The original client IP address must be passed in the X-Forwarded-For (XFF) HTTP header field. When the impression is fired directly from the Ad Server, the XReal-IP will be the Ad Server IP.&lt;br /&gt;
#'''Cachebuster:''' Already present in the DAR tag, this now becomes mandatory. A cachebuster or random number ensures a new call is made to the Ad Server. By including a cachebuster ('r' parameter), the tag will not be cached. The timestamp of when the Ad was served can be used.&lt;br /&gt;
#'''User Agent (UA):''' The HTTP UA from the client device should be used to populate the HTTP UA in the server-server connection/ping.&lt;br /&gt;
#'''TLS:''' the tag received by Nielsen must be TLS v1.2 compliant or greater.&lt;br /&gt;
&lt;br /&gt;
==== Important notes ====&lt;br /&gt;
* the current iteration of server-server tag collection only supports mobile-app (IFA and AAID) and will NOT support cookie based audience measurement.&lt;br /&gt;
* The client’s server-server setup that is going to trigger/send the DAR tag should ​suppress​ any Nielsen cookie returned by the Nielsen collection server as a result of the first DAR tag received. If the Nielsen cookie (returned upon receiving the first DAR tag into secure.imrworldwide.com) is not suppressed then invalid traffic (IVT) filtration will quickly be triggered upon receiving the 2​nd and nth tag.&lt;br /&gt;
&lt;br /&gt;
== Appendix A: Example Implementation ==&lt;br /&gt;
In the below examples, you will see the overall DAR flow (Figure 1) and a detailed illustrative Ad Request / Response model (Figure 2).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div align=&amp;quot;center&amp;quot;&amp;gt;'''Figure 1 – End to End Data Flow'''&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:mDAR_Dataflow.png|center|link=]]&lt;br /&gt;
&lt;br /&gt;
Nielsen certified publishers and platforms will append the new parameters (below) with the appropriate URL safe values passed to Nielsen’s current DAR tag. The current DAR tag should be acquired using the existing processes for each campaign/placement. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&amp;lt;code&amp;gt;'''&amp;amp;c7'''=osgrp,IOS'''&amp;amp;c8'''=devgrp,PHN'''&amp;amp;c9'''=devid,XXXX-XX-XXXXXXXXX'''&amp;amp;c10'''=plt,MBL'''&amp;amp;c12'''=apv,AppVersion'''&amp;amp;c13'''=asid,XXXX-XX-XXXX-XXXX&amp;lt;/code&amp;gt;&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div align=&amp;quot;center&amp;quot;&amp;gt;'''Figure 2 – Illustrative Ad Request / Ad Response'''&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:ad_response.png|center|link=]]&lt;br /&gt;
&lt;br /&gt;
The above is an example of how an Ad server is supporting the build of mobile DAR tags for its publisher clients.&lt;br /&gt;
*Step 2 in Figure 1 is a summary of steps 1 and 2 in Figure 2 above.&lt;br /&gt;
*Steps 3 and 4 in Figure 1 is a summary of steps 3 through 9 in Figure 2 above.&lt;br /&gt;
&lt;br /&gt;
== Appendix B: Implementation, Testing &amp;amp; Certification ==&lt;br /&gt;
Once you have integrated the ping per the above specs, Nielsen requires you to pass through a one-time certification before traffic can be accepted into the production environment.&lt;br /&gt;
&lt;br /&gt;
The overall process is:&lt;br /&gt;
* Valid DAR contract or NDA is in place.&lt;br /&gt;
* Kick-off meeting with Nielsen onboarding team.&lt;br /&gt;
* Confirm meet minimums testing requirements:&lt;br /&gt;
** Host Ad/Tag for in-app delivery&lt;br /&gt;
** Can pass opt-out back to Nielsen&lt;br /&gt;
** Can pass Device ID in cleartext or SHA-256&lt;br /&gt;
* Nielsen provides the mDAR testing form that includes the test App ID and the test tag&lt;br /&gt;
* Identify the live campaigns for initial testing and run the test tag; suggest 5,000-10,000 impressions.&lt;br /&gt;
* Nielsen validates the data received from the test and confirms the initial test successful and provides the production App ID.&lt;br /&gt;
* Ensure contracts are in place for external test campaign with Nielsen Client Service team.&lt;br /&gt;
* Identify another live campaigns for production testing with production tag and app ID.&lt;br /&gt;
* Nielsen validates the data received from the final test and confirms certification for any DAR countries tested.&lt;br /&gt;
==== Goals ====&lt;br /&gt;
* To test in full DAR E2E environment, receive matches from data provider for demographics and correct identification of mobile impressions.&lt;br /&gt;
* To test that all minimum requirements in step 3 are passed to Nielsen with no issues.&lt;br /&gt;
* To test in a full DAR end-to-end environment, receive matches from data providers for demographics and correct identification of mobile impressions.&lt;/div&gt;</summary>
		<author><name>ColinBrown</name></author>
	</entry>
	<entry>
		<id>https://nielsentest.mywikis.net/w/index.php?title=DAR_Tag_Implementation_Guide&amp;diff=5967</id>
		<title>DAR Tag Implementation Guide</title>
		<link rel="alternate" type="text/html" href="https://nielsentest.mywikis.net/w/index.php?title=DAR_Tag_Implementation_Guide&amp;diff=5967"/>
		<updated>2022-09-20T23:50:36Z</updated>

		<summary type="html">&lt;p&gt;ColinBrown: /* HEM Support (Hashed Email) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Breadcrumb|}} {{Breadcrumb|Digital}} {{Breadcrumb|Digital Ad Ratings}}  {{CurrentBreadcrumb}}&lt;br /&gt;
[[Category:Digital]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Introduction =&lt;br /&gt;
&lt;br /&gt;
This document provides an overview of the Nielsen Digital Ad Ratings (DAR) Tags and the steps necessary to implement them as part of your digital advertising campaigns.&lt;br /&gt;
=== What is DAR ===&lt;br /&gt;
DAR is a measurement platform for digital advertising campaigns. The platform provides a clear view of the true audience of a campaign, including Reach, Frequency, and GRP statistics by audience demographic group. &lt;br /&gt;
=== What we measure=== &lt;br /&gt;
All DAR tags allow you to measure campaign impressions and the DAR JavaScript tags measure ad viewability, GIVT (General Invalid Traffic), and SIVT (Sophisticated Invalid Traffic) across platforms including web, mobile, and in-app.&lt;br /&gt;
=== How we measure it=== &lt;br /&gt;
Nielsen’s DAR suite of JavaScript tags together with a pixel tag fallback will be present in your ad placements. We utilize industry-standard APIs to perform measurement cross-browser and cross-platform. In most cases, you will only need to add a simple URL through your ad management interface to fully utilize DAR measurement in your campaigns.&lt;br /&gt;
=== Prerequisites ===&lt;br /&gt;
For steps outlined in this document, you should have access to Nielsen’s Campaign Management Interface (CMI) and a Nielsen Technical Account Manager (TAM) will be working with you during the implementation phase.&lt;br /&gt;
__TOC__&lt;br /&gt;
= DAR Measurement Types =&lt;br /&gt;
&lt;br /&gt;
== DAR Display== &lt;br /&gt;
&lt;br /&gt;
The DAR Display JavaScript tag reports ad impressions as well as measures ad viewability and SIVT. In standard web placements, it will find the ad unit in the surrounding DOM container and will then report viewability as a time series with a 1-second resolution.&lt;br /&gt;
&lt;br /&gt;
The DAR tag will report the MRC-required minimum of 1 second on screen and a continuous viewability time series for the lifetime of the ad session to enable additional viewability qualifiers.&lt;br /&gt;
&lt;br /&gt;
The tag can utilize the IAB’s [https://iabtechlab.com/standards/open-measurement-sdk/ '''Open Measurement SDK'''] (OM SDK) including [https://iabtechlab.com/blog/open-measurement-for-web-video-arrives/ '''OM Web'''] integration if the OM Interface Definition (OMID) is available, or it will use industry-standard web APIs to measure viewability.&lt;br /&gt;
&lt;br /&gt;
=== Requirements ===&lt;br /&gt;
&lt;br /&gt;
The DAR Display tag requires a JavaScript-enabled browser for web environments or the OM SDK for in-app to operate and should be placed close to the corresponding measured ad unit. It should be on the same DOM level (e.g. directly under the same parent) or in a child node under the same parent node. The ad unit should be a content-bearing DOM element (e.g. img, canvas, SVG, iframe, div) with a minimum size of 30x30 pixels.&lt;br /&gt;
&lt;br /&gt;
=== Parameters ===&lt;br /&gt;
&lt;br /&gt;
The minimum required DAR parameters are '''ca, ci, cr, pc, ce''' and '''am'''. See the [[DAR_Tag_Implementation_Guide#Appendix|'''Appendix''']] for a full list of parameters.&lt;br /&gt;
&lt;br /&gt;
=== Example Tag ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;script type=&amp;quot;text/javascript&amp;quot; &lt;br /&gt;
src=&amp;quot;https://dar.imrworldwide.com/js/dar.js?ca=nlsnXXXXXX&amp;amp;cr={AD.ID}&amp;amp;ce={PUBLISHER.ID}&amp;amp;ci=nlsnciXXXX&amp;amp;pc={PLACEMENT.ID}&amp;amp;am=3&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Example OMID Display Placement ===&lt;br /&gt;
&lt;br /&gt;
DAR can be enabled through the OM SDK by passing the required Nielsen OM inputs listed in the table below during setup:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;width: 20%&amp;quot; | OM Parameter&lt;br /&gt;
! style=&amp;quot;width: 40%&amp;quot; | Description&lt;br /&gt;
! style=&amp;quot;width: 40%&amp;quot; | Nielsen Value&lt;br /&gt;
! style=&amp;quot;width: 5%&amp;quot; |Required&lt;br /&gt;
|-&lt;br /&gt;
| Vendor Key&lt;br /&gt;
| ID for measurement provider&lt;br /&gt;
| nielsen.com-omid&lt;br /&gt;
| ✔&lt;br /&gt;
|-&lt;br /&gt;
| JavaScript Resource URL&lt;br /&gt;
| URL for measurement provider’s verification script&lt;br /&gt;
|&amp;lt;syntaxhighlight lang=&amp;quot;html&amp;quot;&amp;gt; https://dar.imrworldwide.com/js/dar.js&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
| ✔&lt;br /&gt;
|-&lt;br /&gt;
| Verification Parameters&lt;br /&gt;
| Measurement provider’s verification tag parameters&lt;br /&gt;
| style=&amp;quot;font-family:'Courier New', Courier, monospace !important; color:#222222;&amp;quot; |&amp;lt;syntaxhighlight lang=&amp;quot;html&amp;quot;&amp;gt;ca=nlsnXXXXXX&amp;amp;cr={AD.ID}&amp;amp;ce=publisherXXXX&amp;amp;ci=nlsnciXXXX&amp;amp;pc=placementID_XXXX1&amp;amp;am=3&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
| ✔&lt;br /&gt;
|-&lt;br /&gt;
| Verification Not Executed URL&lt;br /&gt;
| Error URL when the ad player denies measurement script execution&lt;br /&gt;
| style=&amp;quot;font-family:'Courier New', Courier, monospace !important; color:#222222;&amp;quot; | &amp;lt;syntaxhighlight lang=&amp;quot;html&amp;quot;&amp;gt;https://events.imrworldwide.com/er?ercd=8800&amp;amp;erms=verificationNotExecuted-&lt;br /&gt;
{reason}&amp;amp;ca=nlsnXXXXXX&amp;amp;cr=ad_ID_XXXX&amp;amp;ce=publisherXXXX&amp;amp;&lt;br /&gt;
ci=nlsnciXXXX&amp;amp;pc=placementID_XXXX5&amp;amp;am=3&lt;br /&gt;
&amp;amp;c13={asid,app_id}&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
Note: The verificationNotExecuted Error URL is recommended for better troubleshooting during campaign setup. If your system can provide a macro for the reason of the interrupted measurement session, it can be added in place of the {reason} placeholder in the error URL. This can be an error code or a clear text error message.&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Expected Display Ad Session Pings ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
&lt;br /&gt;
! '''Description'''&lt;br /&gt;
! '''Timing'''&lt;br /&gt;
! '''Path'''&lt;br /&gt;
|-&lt;br /&gt;
| DAR Main Ping&lt;br /&gt;
| At initial load&lt;br /&gt;
| secure-gl.imrworldwide.com/cgi-bin/m&lt;br /&gt;
|-&lt;br /&gt;
| Nielsen Measure Ping&lt;br /&gt;
| Measurement start&lt;br /&gt;
| events.imrworldwide.com/nmp&lt;br /&gt;
|-&lt;br /&gt;
| Primary Standard Ping&lt;br /&gt;
| After 1 second of viewable duration (may not occur based on MRC rules)&lt;br /&gt;
| events.imrworldwide.com/psp&lt;br /&gt;
|-&lt;br /&gt;
| Timed Pings&lt;br /&gt;
| At 1, 5, 15 and 120 seconds of ad session time (may not occur based on ad session length)&lt;br /&gt;
| events.imrworldwide.com/1sp, 5sp, 15sp, 120sp&lt;br /&gt;
|-&lt;br /&gt;
| Final Ping&lt;br /&gt;
| At window/tab unloading event&lt;br /&gt;
| events.imrworldwide.com/fp&lt;br /&gt;
|-&lt;br /&gt;
| Error Ping&lt;br /&gt;
| Potential integration error - please contact your Nielsen representative&lt;br /&gt;
| events.imrworldwide.com/er&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Ping Flow ===&lt;br /&gt;
&lt;br /&gt;
This flow illustrates the behavior of the DAR Display tag.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:Screenshot 2022-06-22 152646.png]]&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|- &lt;br /&gt;
! colspan=&amp;quot;2&amp;quot; | Ping Flow Legend&lt;br /&gt;
|- &lt;br /&gt;
| 1SP, 5SP, 15SP, 120SP&lt;br /&gt;
| Timed Measure Ping at 1, 5, 15 and 120 seconds&lt;br /&gt;
|- &lt;br /&gt;
| D0, D1, D2&lt;br /&gt;
| Dynamic SIVT Pings at 1, 15 &amp;amp;amp; 30 seconds&lt;br /&gt;
|- &lt;br /&gt;
| FP&lt;br /&gt;
| Final Ping&lt;br /&gt;
|- &lt;br /&gt;
| IMPID&lt;br /&gt;
| Unique Impression ID&lt;br /&gt;
|- &lt;br /&gt;
| NMP&lt;br /&gt;
| Nielsen Main Measure Ping&lt;br /&gt;
|-&lt;br /&gt;
| PSP&lt;br /&gt;
| Primary Standard Ping&lt;br /&gt;
|-&lt;br /&gt;
| SIVT&lt;br /&gt;
| Sophisticated Invalid Traffic&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== DAR Video == &lt;br /&gt;
&lt;br /&gt;
The DAR Video tag will typically be trafficked as part of a Video Ad Serving Template (VAST) file. Nielsen provides its wrapped video tag (vWrap) to make this type of deployment easy and consistent across the various ad servers and trafficking options. Nielsen’s vWrap tag supports both automatic OMID and VPAID integration with existing VAST files. The two sections below, [[#Wrapped_Video_Tag_.28vWrap.29_Deployment|'''Wrapped Video Tag''']] and [[#Video_JS_Tag|'''Video JS Tag''']], describe these options and their expected outcomes.&lt;br /&gt;
&lt;br /&gt;
In addition, Nielsen supports '''direct DAR Video tag deployments''' with manual integration in existing workflows. In this case, the section [[#video-js-tag|'''Video JS Tag''']] below describes the basic setup and expected results. In addition, it is recommended that you work closely with your Nielsen Technical Account Manager if you consider a manual tag integration with your campaigns.&lt;br /&gt;
&lt;br /&gt;
=== Wrapped Video Tag (vWrap) Deployment ===&lt;br /&gt;
&lt;br /&gt;
Nielsen’s wrapped DAR video tag, vWrap, is the preferred delivery method for VAST-controlled video ad placements.The vWrap tag is served by a Nielsen service that takes an original VAST with an inline ad (not a wrapper redirect) and dynamically adds the DAR Video tag with measurement solutions for VPAID and OMID. The '''apiframework''' parameter can be used to control which measurement solution will be inserted (see below).&lt;br /&gt;
&lt;br /&gt;
=== Parameters ===&lt;br /&gt;
&lt;br /&gt;
The minimum required DAR parameters are '''ca, ci, ce, cr, pc''', '''am, apiframework''' and '''vastURL'''. See the [[DAR_Tag_Implementation_Guide#Appendix|'''Appendix''']] for a full list of parameters.&lt;br /&gt;
&lt;br /&gt;
The Open Real Time Bidding ([https://iabtechlab.com/wp-content/uploads/2022/04/OpenRTB-2-6_FINAL.pdf '''OpenRTB''']) API framework values for identifying the ad inventory type should be passed in the Nielsen '''apiframework''' parameter. The values should be either 1 or 2 (VPAID) or 7 or 8 (OMID). The available API framework values are listed in the IAB’s [https://github.com/InteractiveAdvertisingBureau/AdCOM/blob/master/AdCOM%20v1.0%20FINAL.md#list--api-frameworks- '''AdCOM specification 1.0''']. If the parameter is left blank or set to 0, Wrap will add the DAR Video tag as '''both''' an OMID verification client and VPAID wrapper. See more details in the [[DAR_Tag_Implementation_Guide#Appendix|'''Appendix''']].&lt;br /&gt;
&lt;br /&gt;
The '''vastURL''' parameter must be the last parameter on the DAR tag with its value set as the full URL (including all original parameters) of the original VAST tag for the ad placement.&lt;br /&gt;
&lt;br /&gt;
=== Example Wrapped Video Tag (vWrap) ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-family:'Courier New', Courier, monospace !important;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! &amp;lt;syntaxhighlight lang=&amp;quot;html&amp;quot;&amp;gt; https://vwrap.imrworldwide.com/v1/wrap?ca=nlsnXXXXXX&amp;amp;cr={AD.ID}&amp;amp;ce={PUBLISHER.ID}&amp;amp;pc={PLACEMENT.ID}&amp;amp;ci=nlsnciXXXX&amp;amp;am=4&amp;amp;&lt;br /&gt;
c9={devid,Advertising_ID}&amp;amp;c13=asid,app_id}&amp;amp;apiframework={APIFRAMEWORK}&amp;amp;vastURL={ORIGINAL_VAST_URL}&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
To observe how vWrap operates, we have provided some example VAST URLs which you can load directly in your browser.&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
==== VAST ad Unit, no Impression/Viewability ====&lt;br /&gt;
First, here is a VAST ad unit with a single video file and no impression tracking or viewability measurement:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
! https://madimator.com/vast-examples/example_video_only_nielsen_15s.xml &lt;br /&gt;
|}&lt;br /&gt;
==== VAST ad Unit, Nielsen vWrap for OMID measurement ====&lt;br /&gt;
This is the same VAST file loaded via Nielsen’s vWrap tag for '''OMID measurement''' (apiframework is set to 7):&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
! https://vwrap.imrworldwide.com/v1/wrap?ca=nlsn305255&amp;amp;cr=nielsenomidtest&amp;amp;ce=nielsen&amp;amp;pc=vastomid&amp;amp;ci=nlsntest&amp;amp;am=4&amp;amp;apiframework=7&amp;amp;vastURL=http://madimator.com/vast-examples/example_video_only_nielsen_15s.xml&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== VAST ad Unit, Nielsen vWrap for VPAID measurement ====&lt;br /&gt;
And here is the same VAST with the vWrap tag configured for '''VPAID measurement''' (apiframework is set to 2):&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
!https://vwrap.imrworldwide.com/v1/wrap?ca=nlsn305255&amp;amp;cr=nielsenomidtest&amp;amp;ce=nielsen&amp;amp;pc=vastvpaid&amp;amp;ci=nlsntest&amp;amp;am=4&amp;amp;apiframework=2&amp;amp;vastURL=http://madimator.com/vast-examples/example_video_only_nielsen_15s.xml &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Video JS Tag ===&lt;br /&gt;
&lt;br /&gt;
The DAR Video tag supports both OM SDK and VPAID video ad measurement and provides viewability time series, audio volume time series, GIVT, and SIVT data. The time series contains playhead events with corresponding measurements at a 1-second resolution. In addition to the time series, a dedicated ping will report on the MRC-required minimum of 2 seconds on screen.&lt;br /&gt;
&lt;br /&gt;
With OM SDK, the DAR Video tag supports the following ad types:&lt;br /&gt;
&lt;br /&gt;
* Native mobile in-app ad placements &lt;br /&gt;
* Mobile web ads&lt;br /&gt;
* OM Web placements&lt;br /&gt;
* OMID-enabled streaming video players with ad SDKs (for instance DAI IMA SDK)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
With VPAID, it supports the following operating modes:&lt;br /&gt;
* As VPAID wrapper for an existing VPAID ad unit in the VAST&lt;br /&gt;
* As VPAID ad unit in a VAST with video files and AdParameters node&lt;br /&gt;
* In Custom Integrations with VPAID host players&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
In most cases, the DAR Video tag should not be manually implemented as a wrapper, instead consider utilizing Nielsen’s vWrap tag.&lt;br /&gt;
&lt;br /&gt;
==== Requirements ====&lt;br /&gt;
&lt;br /&gt;
The DAR Video tag needs a JavaScript environment to operate. The video unit to be measured needs to have a size of at least 30x30 pixels. The DAR Video tag requires access to the VPAID ad unit or to an OM SDK API present in the JavaScript context.&lt;br /&gt;
&lt;br /&gt;
==== Parameters ====&lt;br /&gt;
&lt;br /&gt;
The minimum required DAR parameters are '''ca, ci, ce, cr, pc''' and '''am'''. For VPAID wrapper placements, '''vpaidURL''' is also required.&lt;br /&gt;
&lt;br /&gt;
To comply with MRC guidelines, you will be required to append '''autop''' to indicate click-to-play vs auto-play.&lt;br /&gt;
&lt;br /&gt;
If the DAR Video tag will act as the VPAID wrapper, '''vpaidURL''' has to be the tag’s last parameter and its value set to the full URL (including parameters) of the original VPAID ad unit.&lt;br /&gt;
&lt;br /&gt;
See the [[DAR_Tag_Implementation_Guide#Appendix|'''Appendix''']] for a full list of parameters.&lt;br /&gt;
&lt;br /&gt;
==== Expected Video Ad Session Pings ====&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
! '''Description'''&lt;br /&gt;
! '''Timing'''&lt;br /&gt;
! '''Path'''&lt;br /&gt;
|-&lt;br /&gt;
| DAR Main Ping&lt;br /&gt;
| At initial load&lt;br /&gt;
| secure-gl.imrworldwide.com/cgi-bin/m&lt;br /&gt;
|-&lt;br /&gt;
| Nielsen Measure Ping&lt;br /&gt;
| Measurement start&lt;br /&gt;
| events.imrworldwide.com/nmp&lt;br /&gt;
|-&lt;br /&gt;
| Primary Standard Ping&lt;br /&gt;
| After 2 seconds of viewable duration (may not occur based on MRC rules)&lt;br /&gt;
| events.imrworldwide.com/psp&lt;br /&gt;
|-&lt;br /&gt;
| Quarterly Ping&lt;br /&gt;
| At 25%, 50%, 75% and 100% of video progress&lt;br /&gt;
| events.imrworldwide.com/qp&lt;br /&gt;
|-&lt;br /&gt;
| Final Ping&lt;br /&gt;
| At video stop or window/tab unloading event&lt;br /&gt;
| events.imrworldwide.com/fp&lt;br /&gt;
|-&lt;br /&gt;
| Error Ping&lt;br /&gt;
| Potential integration error - please contact your Nielsen representative&lt;br /&gt;
| events.imrworldwide.com/er&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Ping Flow ====&lt;br /&gt;
&lt;br /&gt;
This flow illustrates the behavior of the DAR Video tag if the impression pixel is part of the VAST to be sent by the ad player and the JS tag has '''&amp;amp;amp;darsup=1'''. The parameter, &amp;lt;code&amp;gt;darsup=1&amp;lt;/code&amp;gt;, is used to suppress the DAR Main Ping from being sent from the JS tag since the DAR main ping will be sent from the DAR impression pixel. This is the default setup if Nielsen’s vWrap tag is being used to set up the video campaign.&lt;br /&gt;
&lt;br /&gt;
[[File:Screenshot 2022-06-22 2.png]]&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|- &lt;br /&gt;
! colspan=&amp;quot;2&amp;quot; | Ping Flow Legend&lt;br /&gt;
|- &lt;br /&gt;
| D0, D1, D2&lt;br /&gt;
| Dynamic SIVT Pings at 1, 15 &amp;amp;amp; 30 seconds&lt;br /&gt;
|- &lt;br /&gt;
| FP&lt;br /&gt;
| Final Ping&lt;br /&gt;
|- &lt;br /&gt;
| IMPID&lt;br /&gt;
| Unique Impression ID&lt;br /&gt;
|- &lt;br /&gt;
| NMP&lt;br /&gt;
| Nielsen Main Measure Ping&lt;br /&gt;
|-&lt;br /&gt;
| PSP&lt;br /&gt;
| Primary Standard Ping&lt;br /&gt;
|-&lt;br /&gt;
| QP&lt;br /&gt;
|Quarterly Media Pings at 25%, 50%, 75% and 100%&lt;br /&gt;
|-&lt;br /&gt;
| SIVT&lt;br /&gt;
| Sophisticated Invalid Traffic&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Example OMID Video Placement ====&lt;br /&gt;
&lt;br /&gt;
DAR can be enabled through the OM SDK by passing the required Nielsen OM inputs listed in the table in the VAST &amp;amp;lt;adVerifications&amp;amp;gt; node:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
! '''OM Parameter'''&lt;br /&gt;
! '''Description'''&lt;br /&gt;
! '''Nielsen Value'''&lt;br /&gt;
! '''Required'''&lt;br /&gt;
|-&lt;br /&gt;
| Vendor Key&lt;br /&gt;
| ID for measurement provider&lt;br /&gt;
| nielsen.com-omid&lt;br /&gt;
| ✔&lt;br /&gt;
|-&lt;br /&gt;
| JavaScript Resource URL&lt;br /&gt;
| URL for measurement provider’s verification script&lt;br /&gt;
| &amp;lt;syntaxhighlight lang=&amp;quot;html&amp;quot;&amp;gt;https://dar.imrworldwide.com/js/darvideo.js&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
| ✔&lt;br /&gt;
|-&lt;br /&gt;
| Verification Parameters&lt;br /&gt;
| Measurement provider’s verification tag parameters&lt;br /&gt;
| style=&amp;quot;font-family:'Courier New', Courier, monospace !important; color:#222222;&amp;quot; |&amp;lt;syntaxhighlight lang=&amp;quot;html&amp;quot;&amp;gt;ca=nlsnXXXXXX&amp;amp;cr={AD.ID}&amp;amp;ce=publisherXXXX&amp;amp;ci=nlsnciXXXX&amp;amp;&lt;br /&gt;
pc=placementID_XXXX1&amp;amp;am=3&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
| ✔&lt;br /&gt;
|-&lt;br /&gt;
| Verification Not Executed URL&lt;br /&gt;
| Error URL when the ad player denies measurement script execution&lt;br /&gt;
| style=&amp;quot;font-family:'Courier New', Courier, monospace !important; color:#222222;&amp;quot; | &amp;lt;syntaxhighlight lang=&amp;quot;html&amp;quot;&amp;gt;https://events.imrworldwide.com/er?ercd=8800&amp;amp;erms=verificationNotExecuted-&lt;br /&gt;
{reason}&amp;amp;ca=nlsnXXXXXX&amp;amp;cr=ad_ID_XXXX&amp;amp;ce=publisherXXXX&amp;amp;&lt;br /&gt;
ci=nlsnciXXXX&amp;amp;pc=placementID_XXXX5&amp;amp;am=3&amp;amp;c9={devid,Advertising_ID}&lt;br /&gt;
&amp;amp;c13={asid,app_id}&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
Note: The verificationNotExecuted Error URL is recommended for better troubleshooting during campaign setup. If your system can provide a macro for the reason of the interrupted measurement session, it can be added in place of the {reason} placeholder in the error URL. This can be an error code or a clear text error message.&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Example VPAID Placement in VAST ====&lt;br /&gt;
&lt;br /&gt;
A typical VAST placement with VPAID will contain an impression pixel, the DAR Video JS tag as MediaFile of type “VPAID”, and the video MediaFiles will be duplicated as AdParameters object. In the example below, there was no original VPAID ad unit (the original VAST only contained MP4 video files), so the &amp;amp;amp;vpaidURL parameter on the DAR JS tag stays empty.&lt;br /&gt;
&lt;br /&gt;
In this example, the DAR JavaScript tag will operate as the VPAID ad unit and will play an appropriate media file from the list contained in the AdParameters node.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;json&amp;quot;&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;Impression id=&amp;quot;Nielsen Digital Ad Ratings&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;![CDATA[https://secure-enc.imrworldwide.com/cgi-bin/m?at=view&amp;amp;cy=2&amp;amp;rt=banner&amp;amp;src=njs&amp;amp;&lt;br /&gt;
st=image&amp;amp;tpv=vwrap&amp;amp;ca=nlsnXXXXXX&amp;amp;cr={AD.ID}&amp;amp;ce=publisherXXXX&amp;amp;ci=nlsnciXXXX&amp;amp;pc=placementID_XXXX1&amp;amp;am=3]]&amp;gt;&lt;br /&gt;
&amp;lt;/Impression&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;MediaFiles&amp;gt;&lt;br /&gt;
    &amp;lt;MediaFile apiFramework=&amp;quot;VPAID&amp;quot; type=&amp;quot;application/javascript&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;![CDATA[https://dar.imrworldwide.com/js/darvideo.js?darsup=1&amp;amp;ca=nlsnXXXXXX&amp;amp;cr={{AD.ID}}&amp;amp;&lt;br /&gt;
ce=publisherXXXX&amp;amp;ci=nlsnciXXXX&amp;amp;pc=placementID_XXXX1&amp;amp;am=3]]&amp;gt;&lt;br /&gt;
    &amp;lt;/MediaFile&amp;gt;&lt;br /&gt;
    &amp;lt;MediaFile bitrate=&amp;quot;720&amp;quot; delivery=&amp;quot;progressive&amp;quot; height=&amp;quot;480&amp;quot; id=&amp;quot;XXXXXX&amp;quot;&lt;br /&gt;
               maintainAspectRatio=&amp;quot;true&amp;quot; scalable=&amp;quot;true&amp;quot; type=&amp;quot;video/mp4&amp;quot;  &lt;br /&gt;
               width=&amp;quot;854&amp;quot;&amp;gt;&amp;lt;![CDATA[https://XXXXX.net/XXXXXX.mp4]]&amp;gt;&lt;br /&gt;
    &amp;lt;/MediaFile&amp;gt;&lt;br /&gt;
&amp;lt;/MediaFiles&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;AdParameters&amp;gt;&lt;br /&gt;
&amp;lt;![CDATA[{&amp;quot;mediaFiles&amp;quot;:[{&amp;quot;bitrate&amp;quot;:&amp;quot;720&amp;quot;,&amp;quot;uri&amp;quot;:&amp;quot;https://XXXXX.net/XXXXXX.mp4&amp;quot;,&amp;quot;height&amp;quot;:&amp;quot;480&amp;quot;,&amp;quot;scalable&amp;quot;:&amp;quot;true&amp;quot;,&lt;br /&gt;
&amp;quot;id&amp;quot;:&amp;quot;XXXXXX&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;video/mp4&amp;quot;,&amp;quot;maintainAspectRatio&amp;quot;:&amp;quot;true&amp;quot;,&amp;quot;delivery&amp;quot;:&amp;quot;progressive&amp;quot;,&amp;quot;width&amp;quot;:&amp;quot;854&amp;quot;}]]&amp;gt;&lt;br /&gt;
&amp;lt;/AdParameters&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Server-Side Integration ====&lt;br /&gt;
&lt;br /&gt;
If you are interested in implementing the DAR tags server-side, e.g. through SSAI, please contact your Nielsen TAM to provide you with the required guidelines.&lt;br /&gt;
&lt;br /&gt;
==== Notes ====&lt;br /&gt;
&lt;br /&gt;
Manual placement of the DAR Video tag is only recommended in situations where the DAR vWrap tag can not be utilized, like in certain mobile in-app ad placements or in scenarios where DAR Video needs to be configured as OMID viewability measurement solution.&lt;br /&gt;
&lt;br /&gt;
== Pixel Tag== &lt;br /&gt;
&lt;br /&gt;
The DAR Impression pixel provides basic campaign impression counts and allows to cover placements served in environments where the DAR JavaScript tag is not supported.&lt;br /&gt;
&lt;br /&gt;
=== Environment ===&lt;br /&gt;
&lt;br /&gt;
The DAR pixel tag should only be used in environments where the DAR JavaScript tag cannot be utilized such as restricted CTV environments, for SSAI Server-Side Beaconing, and other situations where an adequate JavaScript environment is not available.&lt;br /&gt;
&lt;br /&gt;
=== Parameters ===&lt;br /&gt;
&lt;br /&gt;
The minimum required DAR parameters are '''ca, ci, ce, cr, pc''', and '''am''' along with fixed valued params, '''at=view''', '''rt=banner''' and '''st=image''' . See the [[DAR_Tag_Implementation_Guide#Appendix|'''Appendix''']] for a full list of parameters.&lt;br /&gt;
&lt;br /&gt;
=== Example Tag ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;html&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;img src=&amp;quot;https://secure-gl.imrworldwide.com/cgi-bin/m?ca=nlsnXXXXXX&amp;amp;cr=crtve&lt;br /&gt;
&amp;amp;ce={PUBLISHER.ID}&amp;amp;pc=PLACEMENT.ID}&amp;amp;nlsnciXXXX&amp;amp;am=3&amp;amp;at=view&amp;amp;rt=banner&amp;amp;st=image&lt;br /&gt;
&amp;amp;cy=0&amp;amp;r=[timestamp]&amp;quot; style=&amp;quot;display:none&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Tag Integration =&lt;br /&gt;
A successful tag integration will require you to go through the following 6 steps.&lt;br /&gt;
== Step 1: Determine Your Campaign Needs== &lt;br /&gt;
To receive optimal results from DAR measurement, it is good practice to consider the technical requirements of different sites and placements. Please share your media plan with your Technical Account Manager before launch.&lt;br /&gt;
&lt;br /&gt;
Specifically, be on the lookout for placements that might span across web and mobile ad inventory and make sure if all of the in-app placements support OMID. Also, some placement types may need manual setup and cannot be automated or may need extra time for setup and testing.&lt;br /&gt;
&lt;br /&gt;
Please reach out to your Nielsen Technical Account Manager (TAM) for advice if the technical requirements for your campaign are not clear.&lt;br /&gt;
== Step 2: Generate Tags== &lt;br /&gt;
Your Nielsen representative will walk you through the Campaign Management Interface (CMI) so that you can generate DAR tags for your campaigns at any time.&lt;br /&gt;
&lt;br /&gt;
Nielsen supports macro-based tag generation for several major ad servers. Nielsen’s Technical Account Managers can assist you with any technical questions on tagging campaigns for DAR measurement.&lt;br /&gt;
== Step 3: Campaign Integration== &lt;br /&gt;
Your Nielsen tags created in CMI will need to be included when you traffic your ad campaigns. Please reach out to your Nielsen TAM for additional guidance and assistance.&lt;br /&gt;
== Step 4: Test the Tag Implementation== &lt;br /&gt;
Depending on the complexity of the integration, you may be working closely with a TAM at this point or are performing a self-guided tag implementation based on the CMI output.&lt;br /&gt;
&lt;br /&gt;
If working with a TAM, they will coordinate a plan to test the tag implementation ahead of the campaign go-live date. Depending on your campaign needs, testing will involve either running a diagnostic campaign to validate tagging setup or reviewing test pages or apps.&lt;br /&gt;
&lt;br /&gt;
In case of a self-guided tag implementation, we recommend to verify and compare the impression counts in the CMI with your planned campaign volume or ad server reports during the first hours of the campaign. If there are any unexpected impression counts, please reach out to your Nielsen TAM.&lt;br /&gt;
== Step 5: Share your Ad Server Report== &lt;br /&gt;
&lt;br /&gt;
=== Why the Ad Server Report is Needed ===&lt;br /&gt;
&lt;br /&gt;
Knowing the delivered impressions helps Nielsen run Discrepancy Checks ensuring overall quality and reduces errors in the tagging process.&lt;br /&gt;
&lt;br /&gt;
Nielsen can provide the client with a template with the inputs required to complete the quality checks.&lt;br /&gt;
&lt;br /&gt;
=== How to Share Your Delivered impressions ===&lt;br /&gt;
&lt;br /&gt;
Set up an automated daily report from your ad server containing Site Name, Site ID, Placement Name, Placement ID, and data date.&lt;br /&gt;
&lt;br /&gt;
A secondary method to share your media plan information is to grant Nielsen “Reporting access” to your campaign in the designated ad server (such as DCM). To do this, simply grant the login '''clientreporting@nielsen.com''' access. In doing so Nielsen can directly access your media plan information, which enables us to check for updates, and reconcile any discrepancies.&lt;br /&gt;
&lt;br /&gt;
== Step 6: Monitoring Your Campaign== &lt;br /&gt;
Nielsen recommends all clients participate in Discrepancy Checks. Nielsen’s team will verify that the tags delivered have begun to receive data once the campaign goes live and will regularly (typically every 7-14 days) compare the Nielsen reporting to your 3rd party or publisher reporting to ensure we are capturing all data across all placements, as expected, and that the discrepancy gap between your reporting and the Nielsen reporting is kept to a minimum.&lt;br /&gt;
&lt;br /&gt;
= Appendix =&lt;br /&gt;
== Tag Parameters== &lt;br /&gt;
All passthrough parameters will appear on the JavaScript-generated DAR impression ping.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;background-color:#FFF;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;font-weight:bold; background-color:#EAECF0; color:#222;&amp;quot;&lt;br /&gt;
! Query Parameter&lt;br /&gt;
! Description&lt;br /&gt;
! style=&amp;quot;text-align:center;&amp;quot; | Required&lt;br /&gt;
! style=&amp;quot;text-align:center;&amp;quot; | Pass-through&lt;br /&gt;
|- style=&amp;quot;font-weight:bold; text-align:center; vertical-align:middle; background-color:#FFEBD3; color:#222;&amp;quot;&lt;br /&gt;
| colspan=&amp;quot;4&amp;quot; | Group 1 - Required Parameters&lt;br /&gt;
|- style=&amp;quot;vertical-align:middle; color:#222;&amp;quot;&lt;br /&gt;
| ca&lt;br /&gt;
| Campaign ID&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | X&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | X&lt;br /&gt;
|- style=&amp;quot;vertical-align:middle; background-color:#EFEFEF; color:#222;&amp;quot;&lt;br /&gt;
| pc&lt;br /&gt;
| Placement ID&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | X&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | X&lt;br /&gt;
|- style=&amp;quot;vertical-align:middle; color:#222;&amp;quot;&lt;br /&gt;
| ci&lt;br /&gt;
| Client ID&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | X&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | X&lt;br /&gt;
|- style=&amp;quot;vertical-align:middle; background-color:#EFEFEF; color:#222;&amp;quot;&lt;br /&gt;
| am&lt;br /&gt;
| Ad server ID&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | X&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | X&lt;br /&gt;
|- style=&amp;quot;color:#222;&amp;quot;&lt;br /&gt;
| ce&lt;br /&gt;
| Site ID&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | X&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | X&lt;br /&gt;
|- style=&amp;quot;background-color:#F4F5F7; color:#222;&amp;quot;&lt;br /&gt;
| cr&lt;br /&gt;
| Creative ID&lt;br /&gt;
| style=&amp;quot;text-align:center; background-color:#EFEFEF;&amp;quot; | X&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | X&lt;br /&gt;
|- style=&amp;quot;font-weight:bold; text-align:center; vertical-align:middle; background-color:#FFEBD3; color:#222;&amp;quot;&lt;br /&gt;
| colspan=&amp;quot;4&amp;quot; | Group 2 - Use Case Specific Parameters&lt;br /&gt;
|- style=&amp;quot;vertical-align:middle; background-color:#EFEFEF; color:#222;&amp;quot;&lt;br /&gt;
| at&lt;br /&gt;
| Fixed Value &amp;quot;view&amp;quot; (Nielsen value, JS tags add this to DAR and NMP pings)&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | Pixel only&lt;br /&gt;
| &lt;br /&gt;
|- style=&amp;quot;vertical-align:middle; color:#222;&amp;quot;&lt;br /&gt;
| st&lt;br /&gt;
| Fixed Value &amp;quot;image&amp;quot; (Nielsen value, JS tags add this to DAR and NMP pings)&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | Pixel only&lt;br /&gt;
| &lt;br /&gt;
|- style=&amp;quot;vertical-align:middle; background-color:#EFEFEF; color:#222;&amp;quot;&lt;br /&gt;
| rt&lt;br /&gt;
| Fixed Value &amp;quot;banner&amp;quot; (Nielsen value, JS tags add this to DAR and NMP pings)&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | Pixel only&lt;br /&gt;
| &lt;br /&gt;
|- style=&amp;quot;vertical-align:middle; color:#222;&amp;quot;&lt;br /&gt;
| r&lt;br /&gt;
| Cachebuster/Timestamp. It's required in the pixel tags with a hardcoded&amp;lt;br /&amp;gt;value as a default or a macro (r=timestamp/macro) .&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | Pixel only&lt;br /&gt;
| &lt;br /&gt;
|- style=&amp;quot;vertical-align:middle; background-color:#EFEFEF; color:#222;&amp;quot;&lt;br /&gt;
| cy&lt;br /&gt;
| Creative type (1: display/2: video) JS tags add this to DAR and NMP pings for In-House Viewability.&amp;lt;br /&amp;gt;When parameter is not present or value is missing on pixel tags, there will be no creative type breakout.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | Pixel only&lt;br /&gt;
| &lt;br /&gt;
|- style=&amp;quot;vertical-align:middle; color:#222;&amp;quot;&lt;br /&gt;
| '''[[DAR_Tag_Implementation_Guide#vWrap_apiframework_Values|apiframework]]'''&lt;br /&gt;
| IAB-defined value designating the measurement method See vWrap apiframework values&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | vWrap only&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | X&lt;br /&gt;
|- style=&amp;quot;vertical-align:middle; background-color:#EFEFEF; color:#222;&amp;quot;&lt;br /&gt;
| autof&lt;br /&gt;
| Video only: Auto refresh (1 for auto refresh, leave empty otherwise)&lt;br /&gt;
| &lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | X&lt;br /&gt;
|- style=&amp;quot;vertical-align:middle; color:#222;&amp;quot;&lt;br /&gt;
| autop&lt;br /&gt;
| Video only: Autoplay (1 for auto-play, 2 for click-to-play, leave empty otherwise)&lt;br /&gt;
| &lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | X&lt;br /&gt;
|- style=&amp;quot;vertical-align:middle; background-color:#EFEFEF; color:#222;&amp;quot;&lt;br /&gt;
| c7&lt;br /&gt;
| OS Grouping&amp;lt;br /&amp;gt;c7=osgrp,IOS&amp;lt;br /&amp;gt;c7=osgrp,DROID&amp;lt;br /&amp;gt;c7=osgrp,ANDROID&lt;br /&gt;
| &lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | X&lt;br /&gt;
|- style=&amp;quot;vertical-align:middle; color:#222;&amp;quot;&lt;br /&gt;
| c8&lt;br /&gt;
| Device Grouping&amp;lt;br /&amp;gt;c8=devgrp,DSK (computers)&amp;lt;br /&amp;gt;c8=devgrp,PHN (mobile phone devices)&amp;lt;br /&amp;gt;c8=devgrp,TAB (mobile tablet devices)&amp;lt;br /&amp;gt;c8=devgrp,PMP (portable media player)&amp;lt;br /&amp;gt;c8=devgrp,UNWN (unknown mobile devices)&lt;br /&gt;
| &lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | X&lt;br /&gt;
|- style=&amp;quot;vertical-align:middle; background-color:#EFEFEF; color:#222;&amp;quot;&lt;br /&gt;
| c9&lt;br /&gt;
| Mobile Advertising ID&amp;lt;br /&amp;gt;c9=devid,xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | Mobile&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | X&lt;br /&gt;
|- style=&amp;quot;vertical-align:middle; color:#222;&amp;quot;&lt;br /&gt;
| c10&lt;br /&gt;
| Platform&amp;lt;br /&amp;gt;c10=plt,DSK (Computer)&amp;lt;br /&amp;gt;c10=plt,MBL (Mobile)&amp;lt;br /&amp;gt;c10=plt,OTT (Connected Device)&lt;br /&gt;
| &lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | X&lt;br /&gt;
|- style=&amp;quot;vertical-align:middle; background-color:#EFEFEF; color:#222;&amp;quot;&lt;br /&gt;
| c12&lt;br /&gt;
| App Version&amp;lt;br /&amp;gt;c12=apv,xxx&lt;br /&gt;
| &lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | X&lt;br /&gt;
|- style=&amp;quot;vertical-align:middle; color:#222;&amp;quot;&lt;br /&gt;
| c13&lt;br /&gt;
| Nielsen Assigned App ID&amp;lt;br /&amp;gt;Example:&amp;lt;br /&amp;gt;c13=asid,xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | Mobile&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | X&lt;br /&gt;
|- style=&amp;quot;vertical-align:middle; background-color:#EFEFEF; color:#222;&amp;quot;&lt;br /&gt;
| c14&lt;br /&gt;
| OS Version&amp;lt;br /&amp;gt;c14=osver,xxx&lt;br /&gt;
| &lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | X&lt;br /&gt;
|- style=&amp;quot;vertical-align:middle; color:#222;&amp;quot;&lt;br /&gt;
| c68&lt;br /&gt;
| Mobile App Bundle ID&amp;lt;br /&amp;gt;c68=bndlid,xxxxxxxxxxxxxx&amp;lt;br /&amp;gt;References:&amp;lt;br /&amp;gt;https://developer.apple.com/documentation/appstoreconnectapi/bundle_ids&amp;lt;br /&amp;gt;https://developer.android.com/studio/build/configure-app-module#set_the_application_id&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | Mobile&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | X&lt;br /&gt;
|- style=&amp;quot;vertical-align:middle; background-color:#EFEFEF; color:#222;&amp;quot;&lt;br /&gt;
| C78&lt;br /&gt;
| Custom Integration Flag (please note: this is the only uppercase parameter name)&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | some vendors&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | X&lt;br /&gt;
|- style=&amp;quot;vertical-align:middle; color:#222;&amp;quot;&lt;br /&gt;
| darsup&lt;br /&gt;
| If present suppress DAR main ping originating from JS tag (value can be 0 or 1, same effect)&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
|- style=&amp;quot;vertical-align:middle; background-color:#EFEFEF; color:#222;&amp;quot;&lt;br /&gt;
| forceid&lt;br /&gt;
| If present provides impid, can be overwritten by impid parameter&lt;br /&gt;
| &lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | X (as impid)&lt;br /&gt;
|- style=&amp;quot;vertical-align:middle; color:#222;&amp;quot;&lt;br /&gt;
| impid&lt;br /&gt;
| Same as forceid, but higher priority in case both are present&lt;br /&gt;
| &lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | X&lt;br /&gt;
|- style=&amp;quot;vertical-align:middle; background-color:#EFEFEF; color:#222;&amp;quot;&lt;br /&gt;
| frcd&lt;br /&gt;
| Video only: Forced duration (seconds/null)&lt;br /&gt;
| &lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | X&lt;br /&gt;
|- style=&amp;quot;vertical-align:middle; color:#222;&amp;quot;&lt;br /&gt;
| frcf&lt;br /&gt;
| Video only: Forced ad flag (yes/no/null)&lt;br /&gt;
| &lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | X&lt;br /&gt;
|- style=&amp;quot;vertical-align:middle; background-color:#EFEFEF; color:#222;&amp;quot;&lt;br /&gt;
| ptraf&lt;br /&gt;
| Video only: Purchased traffic&lt;br /&gt;
| &lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | X&lt;br /&gt;
|- style=&amp;quot;vertical-align:middle; color:#222;&amp;quot;&lt;br /&gt;
| contplay&lt;br /&gt;
| Video only: Continuous play&lt;br /&gt;
| &lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | X&lt;br /&gt;
|- style=&amp;quot;vertical-align:middle; background-color:#EFEFEF; color:#222;&amp;quot;&lt;br /&gt;
| gdpr&lt;br /&gt;
| GDPR flag to indicate whether GDPR is applicable:&amp;lt;br /&amp;gt;0 - GDPR does not apply&amp;lt;br /&amp;gt;1 - GDPR applies&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | in some jurisdictions&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | X&lt;br /&gt;
|- style=&amp;quot;vertical-align:middle; color:#222;&amp;quot;&lt;br /&gt;
| gdpr_consent&lt;br /&gt;
| URL-safe base64-encoded Transparency &amp;amp; Consent (TC) string for&amp;lt;br /&amp;gt;identifying user's privacy preferences&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | in some jurisdictions&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | X&lt;br /&gt;
|- style=&amp;quot;vertical-align:middle; background-color:#EFEFEF; color:#222;&amp;quot;&lt;br /&gt;
| hem_md5&lt;br /&gt;
| Hashed email&lt;br /&gt;
| &lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | X&lt;br /&gt;
|- style=&amp;quot;vertical-align:middle; color:#222;&amp;quot;&lt;br /&gt;
| hem_sha1&lt;br /&gt;
| Hashed email&lt;br /&gt;
| &lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | X&lt;br /&gt;
|- style=&amp;quot;vertical-align:middle; background-color:#EFEFEF; color:#222;&amp;quot;&lt;br /&gt;
| hem_sha256&lt;br /&gt;
| Hashed email&lt;br /&gt;
| &lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | X&lt;br /&gt;
|- style=&amp;quot;vertical-align:middle; color:#222;&amp;quot;&lt;br /&gt;
| hem_unknown&lt;br /&gt;
| Hashed email&lt;br /&gt;
| &lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | X&lt;br /&gt;
|- style=&amp;quot;vertical-align:middle; background-color:#EFEFEF; color:#222;&amp;quot;&lt;br /&gt;
| mode&lt;br /&gt;
| VPAID video only, optional: Custom Direct Access mode&amp;lt;br /&amp;gt;(&amp;quot;w&amp;quot; wrapper / &amp;quot;c&amp;quot; custom; defaults to wrapper)&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
|- style=&amp;quot;vertical-align:middle; color:#222;&amp;quot;&lt;br /&gt;
| onload&lt;br /&gt;
| VPAID video only, optional: JS callback for Custom Direct Access VPAID integration&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
|- style=&amp;quot;vertical-align:middle; background-color:#EFEFEF; color:#222;&amp;quot;&lt;br /&gt;
| pub&lt;br /&gt;
| Publisher Name&lt;br /&gt;
| &lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | X&lt;br /&gt;
|- style=&amp;quot;vertical-align:middle; color:#222;&amp;quot;&lt;br /&gt;
| pubid&lt;br /&gt;
| Publisher ID&lt;br /&gt;
| &lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | X&lt;br /&gt;
|- style=&amp;quot;vertical-align:middle; background-color:#EFEFEF; color:#222;&amp;quot;&lt;br /&gt;
| si&lt;br /&gt;
| Site identifier. Canonical URL of the content where the Ad creative is served.&amp;lt;br /&amp;gt;The parameter value has to be encoded with encodeURIComponent() method or equivalent.&lt;br /&gt;
| &lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | X&lt;br /&gt;
|- style=&amp;quot;vertical-align:middle; color:#222;&amp;quot;&lt;br /&gt;
| uid2&lt;br /&gt;
| Unified ID 2.0&lt;br /&gt;
| &lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | X&lt;br /&gt;
|- style=&amp;quot;vertical-align:middle; background-color:#EFEFEF; color:#222;&amp;quot;&lt;br /&gt;
| uid2_token&lt;br /&gt;
| Unified ID 2.0 token&lt;br /&gt;
| &lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | X&lt;br /&gt;
|- style=&amp;quot;vertical-align:middle; color:#222;&amp;quot;&lt;br /&gt;
| uoo&lt;br /&gt;
| User opt out&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | Mobile&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | X&lt;br /&gt;
|- style=&amp;quot;font-weight:bold; text-align:center; vertical-align:middle; background-color:#FFEBD3; color:#222;&amp;quot;&lt;br /&gt;
| colspan=&amp;quot;4&amp;quot; | Group 3 - Parameters With Required Position in URL&lt;br /&gt;
|- style=&amp;quot;vertical-align:middle; background-color:#ffffff; color:#222;&amp;quot;&lt;br /&gt;
| vpaidURL&lt;br /&gt;
| VPAID Video only: Always the last parameter for video tags.&amp;lt;br /&amp;gt;Either VPAID ad unit URL to be wrapped or empty. If empty, DAR tag will use its own vpaidplayer.js&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | VPAID video tag only&lt;br /&gt;
| &lt;br /&gt;
|- style=&amp;quot;background-color:#f4f5f7;&amp;quot;&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; color:#222;&amp;quot; | vastURL&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; color:#222;&amp;quot; | vWrap Tag only: Always the last parameter for the vWrap tag.&amp;lt;br /&amp;gt;It must contain the URL of the original VAST for the placement.&lt;br /&gt;
| style=&amp;quot;text-align:center; vertical-align:middle; color:#222;&amp;quot; | vWrap tag only&lt;br /&gt;
| &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Additional Parameters == &lt;br /&gt;
This section describes several important additional parameters that the DAR tag can support, specifically Hashed Email, UID2 values, along with Page URL and Bundle Identifier if available. Please note that all parameters are case-sensitive.&lt;br /&gt;
&lt;br /&gt;
Please work with your Nielsen Technical Account Manager to decide which of the following parameters to append to the standard DAR tag.&lt;br /&gt;
=== HEM Support (Hashed Email) ===&lt;br /&gt;
Please use the parameter that matches your hashing algorithm. For example, if you are using sha256 to encode the email address, then use hem_sha256={encrypted_value_here}&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-weight:bold; background-color:#EAECF0;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Name&lt;br /&gt;
! Description&lt;br /&gt;
! Available Tag Parameters&lt;br /&gt;
|- style=&amp;quot;font-weight:normal; background-color:#F8F9FA;&amp;quot;&lt;br /&gt;
| Hashed Email&lt;br /&gt;
| User’s email address that has been run through a hashing algorithm&amp;lt;br /&amp;gt;(e.g. SHA256, MD5, SHA1) to create a unique hexadecimal string.&amp;lt;br /&amp;gt; If a client is unable to determine hashing type, they should pass&amp;lt;br /&amp;gt;using &amp;amp;hem_unknown parameter.&lt;br /&gt;
| &amp;amp;hem_unknown&amp;lt;br /&amp;gt;&amp;amp;hem_sha256&amp;lt;br /&amp;gt;&amp;amp;hem_md5&amp;lt;br /&amp;gt;&amp;amp;hem_sha1&lt;br /&gt;
|}&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-weight:bold;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background-color:#dae8fc; color:#002041;&amp;quot;&lt;br /&gt;
! Example&lt;br /&gt;
|- style=&amp;quot;font-weight:normal;&amp;quot;&lt;br /&gt;
| hem_sha256=tMmiiTI7IaAcPpQPFQ65uMVCWH8av9jw4cwf/F5HVRQ=&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Unified ID ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;background-color:#F8F9FA;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;font-weight:bold; background-color:#EAECF0;&amp;quot;&lt;br /&gt;
! Name&lt;br /&gt;
! Description&lt;br /&gt;
! Available Tag Parameters&lt;br /&gt;
|-&lt;br /&gt;
| Unified ID 2.0&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)&amp;lt;br /&amp;gt;and is now managed by Prebid.&lt;br /&gt;
| &amp;amp;uid2&lt;br /&gt;
|-&lt;br /&gt;
| Unified ID 2.0 Token&lt;br /&gt;
| Encrypted Unified ID 2.0&lt;br /&gt;
| &amp;amp;uid_token&lt;br /&gt;
|}&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-weight:bold;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background-color:#32BBB9; color:#002041;&amp;quot;&lt;br /&gt;
! Example&lt;br /&gt;
|- style=&amp;quot;font-weight:normal;&amp;quot;&lt;br /&gt;
| uid2=MTKVpUAzwYAPnHrtfE0wlINOMzhU7UUEjjVdCdRu63k=&amp;lt;br /&amp;gt;uid_token=AgAAAAPFR0zA5ogv/yaAPiUsAdZPsfqS8QlDSGxAB+rr8yekFs3AjLYVk5qqqiyV2XHbSuwzHmxSlLeQeKQI1mp015jsNnpX5&amp;lt;br /&amp;gt;/xGgXldcgVz+gFnyh3T8/3agMwRmyrhCxG4oH2C7fc48AQk2eotE7FW0ZDEYM8fD9ZxDaxFUC/OV3OuZA&amp;amp;&lt;br /&gt;
|}&lt;br /&gt;
=== Page and Bundle ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;background-color:#F8F9FA;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;font-weight:bold; background-color:#EAECF0;&amp;quot;&lt;br /&gt;
! Name&lt;br /&gt;
! Description&lt;br /&gt;
! Available Tag Parameters&lt;br /&gt;
|-&lt;br /&gt;
| Page URL&lt;br /&gt;
| Canonical URL of the content where the Ad creative is served. (e.g. https://example.com/news/tech/article.html) &amp;lt;br /&amp;gt;The parameter value has to be encoded with JavaScript’s encodeURIComponent() method or equivalent. &amp;lt;br /&amp;gt;Example: si=https%3A%2F%2Fexample.com%2Fnews%2Ftech%2Farticle.html&lt;br /&gt;
| &amp;amp;si&lt;br /&gt;
|-&lt;br /&gt;
| App Bundle ID&lt;br /&gt;
| The app’s unique bundle ID (e.g. com.example.myapp). The ID can be used to look up the App in Apple’s App Store&amp;lt;br /&amp;gt;or the Google Play Store.&amp;lt;br /&amp;gt;References: https://developer.android.com/studio/build/application-idhttps://developer.apple.com/documentation/appstoreconnectapi/bundle_ids&lt;br /&gt;
| &amp;amp;c68=bndlid&lt;br /&gt;
|}&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-weight:bold;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background-color:#32BBB9; color:#002041;&amp;quot;&lt;br /&gt;
! Example&lt;br /&gt;
|- style=&amp;quot;font-weight:normal;&amp;quot;&lt;br /&gt;
| si=https%3A%2F%2Fexample.com%2Fnews%2Ftech%2Farticle.html&amp;lt;br /&amp;gt;c68=bndlid,com.tam.nielsen.com&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== vWrap apiframework Values== &lt;br /&gt;
&lt;br /&gt;
Nielsen’s vWrap tag uses the existing definition of '''apiframework''' values defined in the IAB’s [https://github.com/InteractiveAdvertisingBureau/AdCOM/blob/master/AdCOM%20v1.0%20FINAL.md#list--api-frameworks- '''AdCOM Specification''' '''1.0''']. This means that existing macros for this parameter in your system should work out of the box with vWrap.&lt;br /&gt;
&lt;br /&gt;
The vWrap tag supports the numerical values in bold below. In case of '''8''' (SIMID), the DAR Video tag will be inserted as a standard OMID verification client for viewability measurement and it will not interfere with any SIMID components in the ad.&lt;br /&gt;
&lt;br /&gt;
If a '''0''' or an empty value is given, the resulting VAST will include both OMID and VPAID measurement solutions. This leaves the decision of the measurement method to the video player, which might be advantageous for mixed campaigns that span mobile and web environments.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-weight:bold;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background-color:#F4F5F7;&amp;quot;&lt;br /&gt;
! Value&lt;br /&gt;
! Definition&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| style=&amp;quot;font-weight:normal;&amp;quot; | VPAID 1.0&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| style=&amp;quot;font-weight:normal;&amp;quot; | VPAID 2.0&lt;br /&gt;
|- style=&amp;quot;font-weight:normal; color:#666;&amp;quot;&lt;br /&gt;
| 3&lt;br /&gt;
| MRAID 1.0&lt;br /&gt;
|- style=&amp;quot;font-weight:normal; color:#666;&amp;quot;&lt;br /&gt;
| 4&lt;br /&gt;
| ORMMA&lt;br /&gt;
|- style=&amp;quot;font-weight:normal; color:#666;&amp;quot;&lt;br /&gt;
| 5&lt;br /&gt;
| MRAID 2.0&lt;br /&gt;
|- style=&amp;quot;font-weight:normal; color:#666;&amp;quot;&lt;br /&gt;
| 6&lt;br /&gt;
| MRAID 3.0&lt;br /&gt;
|-&lt;br /&gt;
| 7&lt;br /&gt;
| style=&amp;quot;font-weight:normal;&amp;quot; | OMID 1.0&lt;br /&gt;
|-&lt;br /&gt;
| 8&lt;br /&gt;
| style=&amp;quot;font-weight:normal;&amp;quot; | SIMID 1.0&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== SERVER-SIDE TAG DISPATCH ==&lt;br /&gt;
The standard way of triggering a Digital Ad Ratings (DAR) tag on mobile in-app or connected devices is for the publisher to trigger the tag upon ad exposure to the user (either directly or via the ad server). This can be described as a client-side initiated tag.&lt;br /&gt;
&lt;br /&gt;
It is important to note that MRC/IAB measurement standards stipulate that the ad exposure event still be initiated and recorded from the client-side, even if the ad measurement tag (in this case a DAR tag) is physically initiated from the server-side. Evidence may be required (eg. publisher log file or similar) from the MRC/IAB to substantiate that the user was exposed to the ad on their device.&lt;br /&gt;
&lt;br /&gt;
In addition to the tag parameters covered in the prior sections, the following HTTP headers need to be modified in the DAR calls to support dispatch from a '''server-side''' publisher ad server:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|- style=&amp;quot;text-align:center; background-color:#c0c0c0; color:#000000;&amp;quot;&lt;br /&gt;
! HTTP Headers&lt;br /&gt;
! Description of Modifications&lt;br /&gt;
|-&lt;br /&gt;
| User-Agent (UA)&lt;br /&gt;
| This is expected to be the originating client user-agent for the&amp;lt;br /&amp;gt; device where the user was exposed to the ad. The HTTP UA from &amp;lt;br /&amp;gt;the client device should be used to populate the HTTP UA in the&amp;lt;br /&amp;gt; server-side connection/ping. DAR leverages the type of&amp;lt;br /&amp;gt;device for platform derivation.&lt;br /&gt;
|-&lt;br /&gt;
| X-Forwarded-For (XFF) IP&lt;br /&gt;
| This is expected to be the originating client IP address for the &amp;lt;br /&amp;gt;device where the user was exposed to the ad. Note: When the tag&amp;lt;br /&amp;gt; is fired directly from the ad server, the X-Real-IP will be the ad server IP.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Server Side Tag Notes ===&lt;br /&gt;
&lt;br /&gt;
* The server-side tag collection only supports mobile in-app and connected device measurement and will not support cookie-based browser measurement.&lt;br /&gt;
&lt;br /&gt;
* The client’s server-side setup to trigger/send the DAR tag should suppress any Nielsen cookie returned by the Nielsen collection server as a result of the first DAR tag received. If the Nielsen cookie (returned upon receiving the first DAR tag into secure.imrworldwide.com) is not suppressed, then invalid traffic (IVT) filtration will be triggered upon receiving the 2nd and nth tag.&lt;br /&gt;
&lt;br /&gt;
* The tag received by Nielsen must be TLS v1.2 compliant or greater.&lt;br /&gt;
&lt;br /&gt;
== About Nielsen ==&lt;br /&gt;
&lt;br /&gt;
Nielsen shapes the world’s media and content as a global leader in audience measurement, data and analytics. Through our understanding of people and their behaviors across all channels and platforms, we empower our clients with independent and actionable intelligence so they can connect and engage with their audiences—now and into the future.&lt;br /&gt;
&lt;br /&gt;
An S&amp;amp;amp;P 500 company, Nielsen (NYSE: NLSN) operates around the world in more than 55 countries. Learn more at [http://www.nielsen.com '''www.nielsen.com'''] or [http://www.nielsen.com/investors '''www.nielsen.com/investors'''] and connect with us on social media.&lt;br /&gt;
&lt;br /&gt;
'''Audience Is Everything®'''&lt;/div&gt;</summary>
		<author><name>ColinBrown</name></author>
	</entry>
	<entry>
		<id>https://nielsentest.mywikis.net/w/index.php?title=Mobile_DAR_Attributes_Requirements&amp;diff=5966</id>
		<title>Mobile DAR Attributes Requirements</title>
		<link rel="alternate" type="text/html" href="https://nielsentest.mywikis.net/w/index.php?title=Mobile_DAR_Attributes_Requirements&amp;diff=5966"/>
		<updated>2022-09-20T23:43:45Z</updated>

		<summary type="html">&lt;p&gt;ColinBrown: /* Additional Parameters */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Breadcrumb|}} {{Breadcrumb|Digital}} {{Breadcrumb|Digital Ad Ratings}}  {{CurrentBreadcrumb}}&lt;br /&gt;
[[Category:Digital]]&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
The standard Nielsen Digital Ad Rating (DAR) tag only supports cookie based '''web browser''' viewing on PCs, MACs, and tablets/smartphone (web-browser). However, when ads are served to tablets/smartphones via native '''app-store applications''', the cookie based tag does not function correctly. Additional tag attributes are needed in order for audience reach measurement to function. Example tags are detailed later in this document.&lt;br /&gt;
&lt;br /&gt;
One way Nielsen clients can accomplish this is by the use of Nielsen’s native iOS/Android App SDK. Nielsen’s App SDK automatically adds these additional tag attributes to the standard cookie based webbrowser tag before the tag is forwarded on to the Nielsen census collection system. However, there is a significant portion of the publisher mobile app universe where it is either not feasible, or desirable to integrate Nielsen’s native App SDK into 3rd party applications.&lt;br /&gt;
&lt;br /&gt;
The purpose of this document is to detail the tag URL parameters required that are '''additional''' to the standard cookie based web-browser tag.&lt;br /&gt;
&lt;br /&gt;
The most critical additional parameter required is the insertion of the Advertising ID (IFA / IDFA / AdID) from the users device that has been exposed to the Ad creative.&lt;br /&gt;
&lt;br /&gt;
If you are reading this document as an Ad server representative then it is assumed that you have published a specification that mobile app publishers follow to pass the appropriate Advertising ID in the Ad request payload. Typically, your Ad server will then expand a macro or label with that value passed in the Ad request URL, insert into the DAR mobile app tag and redirect to Nielsen collections. See s. See  [[#Appendix A: Example Implementation]], figure 2 for an example tag workflow.&lt;br /&gt;
&lt;br /&gt;
The standard way of triggering a Digital Ad Ratings (DAR) tag on Mobile-App is for the publisher app to trigger (either directly or via Ad server) the tag upon Ad exposure to the user. i.e. a client-side initiated tag. If you wish to implement server-side dispatch of mobile in-app DAR tags then see additional section in this document titled '''server-side tag dispatch'''. Please read the rest of this document before reading the section on server-server.&lt;br /&gt;
&lt;br /&gt;
Once you have completed your integration, you will be required to submit to a short certification. See [[#Appendix B: Implementation, Testing &amp;amp; Certification]]. Certification also grants inclusion to the approved publisher and certified Ad server vendor list.&lt;br /&gt;
&lt;br /&gt;
'''Important Note:''' for 2018, the MRC has mandated a series of changes to audience measurement that will require additional tag events to be communicated to Nielsen so that we may compute duration weighting etc. You are strongly urged to contact your Nielsen client service representative to seek a briefing from Nielsen on the best technical methods for tagging in order to be compliant with these changes.&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
== Standard DAR Tag ==&lt;br /&gt;
The DAR tag is available as a 1x1 pixel. The following pixel/tag parameters must be specified for all DAR tags, 1x1, regardless of implementation type: browser, mobile browser, mobile app or connected device.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
! Tag Parameter&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| CI&lt;br /&gt;
| Client ID: the ID that is associated with the DAR account that processed tag data is associated with. Will always be hardcoded to a Nielsen generated value that comes from the Nielsen campaign management system&lt;br /&gt;
|- style=&amp;quot;background-color:#eff8ef;&amp;quot;&lt;br /&gt;
| AM&lt;br /&gt;
| Ad Server: an ad server participating on the campaign media-plan. This is an internal Nielsen generated value when the ad server is indicated on the campaign during setup&lt;br /&gt;
|-&lt;br /&gt;
| CA&lt;br /&gt;
| Campaign Id: this is the ID associated with your DAR campaign. Unless you are creating and managing the Nielsen campaign via the DAR Tag API, then this parameter value will always be generated from the Nielsen campaign management system. Note: often maps to a media-plan I/O Id&lt;br /&gt;
|- style=&amp;quot;background-color:#eff8ef;&amp;quot;&lt;br /&gt;
| CR&lt;br /&gt;
| Creative Id: DAR does not currently report at the creative level; can be hard coded ad server id or associated with a macro expansion&lt;br /&gt;
|-&lt;br /&gt;
| PC&lt;br /&gt;
| Placement Id: can be generated by the ad server via macro expansion or generated by the Nielsen campaign management system. Note: often maps to one of Ad Unit Id, Line Item Id or Video Ad Id&lt;br /&gt;
|- style=&amp;quot;background-color:#eff8ef;&amp;quot;&lt;br /&gt;
| CE&lt;br /&gt;
| Site Id: the Id that identifies a publisher site that the placement needs to be mapped to. Maps into the Nielsen MarketView database. Note: can be hardcoded to a pre-registered ad server site id in the Nielsen system or a macro expansion where more than one pre-existing site ids have been made known to Nielsen&lt;br /&gt;
|-&lt;br /&gt;
| R&lt;br /&gt;
| Cachebuster (web): timestamp / random number. Generated by ad server&lt;br /&gt;
|- style=&amp;quot;background-color:#eff8ef;&amp;quot;&lt;br /&gt;
| AT&lt;br /&gt;
| Fixed value: “view”&lt;br /&gt;
|-&lt;br /&gt;
| RT&lt;br /&gt;
| Fixed value: “banner”&lt;br /&gt;
|- style=&amp;quot;background-color:#eff8ef;&amp;quot;&lt;br /&gt;
| ST&lt;br /&gt;
| Fixed value: “image”&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;blockquote&amp;gt; Do not URL encode the values&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Additional DAR Tag Parameters for Mobile App Audience Measurement ==&lt;br /&gt;
In this section, the additional URL parameters required beyond the standard cookie based web-browser tag are described in detail.&lt;br /&gt;
&lt;br /&gt;
For each of the tag examples detailed below, we can support both non-secure (http) and secure (https) flavors. The standard cookie based web-browser tag is included below for reference purposes.&lt;br /&gt;
&lt;br /&gt;
'''Important note:''' the values against each value-pair in the following tags are for illustrative purposes only. Values for CA, PC and CE will vary depending on the specific campaign being measured and capabilities of the Ad server for macro/value expansion. For more detail on the core DAR  parameters, please see the '''Nielsen DAR Tag Implementation Guide.'''&lt;br /&gt;
&lt;br /&gt;
'''Web Browser DAR tag (cookie based persons identification)'''&lt;br /&gt;
&amp;lt;code&amp;gt; //secure-gl.imrworldwide.com/cgi-bin/m?ci=nlsnci535&amp;amp;am=3&amp;amp;at=view&amp;amp;rt=banner&amp;amp;st=image&amp;amp;ca=nlsn12452&amp;amp;cr=crtve&amp;amp;pc=&amp;lt;creativeid&amp;gt;_plc0001&amp;amp;ce=&amp;lt;siteid&amp;gt;&amp;amp;r=&amp;lt;timestamp&amp;gt; &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Mobile-App DAR Tag Extension (IFA based persons identification)'''&lt;br /&gt;
&amp;lt;code&amp;gt; //secure-gl.imrworldwide.com/cgi-bin/m?ci=nlsnci535&amp;amp;am=3&amp;amp;at=view&amp;amp;rt=banner&amp;amp;st=image&amp;amp;ca=nlsn12452&amp;amp;cr=crtve&amp;amp;pc=&amp;lt;creativeid&amp;gt;_plc0001&amp;amp;ce=&amp;lt;siteid&amp;gt;&amp;amp;c7=osgrp,IOS&amp;amp;c8=devgrp,PHN&amp;amp;c9=devid,XXXX-XX-XXXXX-XXXX &amp;amp;c10=plt,MBL&amp;amp;c12=apv,&amp;lt;appVersion&amp;gt;&amp;amp;c13=asid,NIELSEN-PROVIDEDID&amp;amp;c14=osver,7.0.4&amp;amp;uoo=0&amp;amp;r=&amp;lt;timestamp&amp;gt; &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Additional DAR Tag Parameters for Mobile !! Description !! Mandatory parameter for mDAR?&lt;br /&gt;
|-&lt;br /&gt;
| &amp;amp;c7 || OS Grouping ||&lt;br /&gt;
|- style=&amp;quot;background-color:#eff8ef;&amp;quot;&lt;br /&gt;
| &amp;amp;c8  || Device Grouping || &amp;lt;center&amp;gt;✔&amp;lt;/center&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;amp;c9 || Advertising ID || &amp;lt;center&amp;gt;✔&amp;lt;/center&amp;gt;&lt;br /&gt;
|- style=&amp;quot;background-color:#eff8ef;&amp;quot;&lt;br /&gt;
| &amp;amp;c10 || Platform || &amp;lt;center&amp;gt;✔&amp;lt;/center&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;amp;c12 || App Version ||&lt;br /&gt;
|- style=&amp;quot;background-color:#eff8ef;&amp;quot;&lt;br /&gt;
| &amp;amp;c13 || AppID (Nielsen assigned App ID) || &amp;lt;center&amp;gt;✔&amp;lt;/center&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;amp;c14 || OS Version ||&lt;br /&gt;
|- style=&amp;quot;background-color:#eff8ef;&amp;quot;&lt;br /&gt;
| &amp;amp;uoo || Opt-out indicator || &amp;lt;center&amp;gt;✔&amp;lt;/center&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;blockquote&amp;gt;'''Note''': Clients are encouraged to make an effort to always fill-in optional parameters.&lt;br /&gt;
&lt;br /&gt;
'''Note''': Do not URL encode the values.&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== C7 - OS Grouping (Optional) ==&lt;br /&gt;
Valid device OS Grouping data values are the following literal values:&lt;br /&gt;
* osgrp,IOS&lt;br /&gt;
* osgrp,DROID&lt;br /&gt;
* osgrp,ANDROID&lt;br /&gt;
&amp;lt;blockquote&amp;gt;'''Note''': If one of the above values cannot be specific, then the parameter should not be included in the call.&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== C8 - Device Grouping (Mandatory)==&lt;br /&gt;
Valid literal values for phone, tablet, portable media player (iPod) and unknown are as follows:&lt;br /&gt;
* devgrp,PHN - Phone&lt;br /&gt;
* devgrp,TAB - Tablet&lt;br /&gt;
* devgrp,PMP - Portable Media Player (iPod)&lt;br /&gt;
* devgrp,UNWN - Unknown/Unclassified&lt;br /&gt;
* devgrp,DSK - Desktop&lt;br /&gt;
* devgrp,STV ←​ CTV/OTT Device&lt;br /&gt;
==== Notes ====&lt;br /&gt;
* Mandatory for accurate measurement, and if unable to pass, Nielsen cannot guarantee the impression will be classified correctly. &lt;br /&gt;
* “​UNWN” will result in Nielsen attempting an introspection of the User Agent in the HTTP request sent against Device Atlas for classification. &lt;br /&gt;
* “STV” is the default value for OTT when the specific device value isn’t passed.&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== C9 - Advertising ID (Mandatory) ==&lt;br /&gt;
This is the advertiser ID for the client’s mobile device. IDFA for iOS, Google Advertising ID for Android:&lt;br /&gt;
* devid,&amp;lt;IDFA&amp;gt;&lt;br /&gt;
* devid,&amp;lt;IFA&amp;gt;&lt;br /&gt;
* devid,&amp;lt;Google Advertising ID&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Notes ====&lt;br /&gt;
For Android devices, the Google Advertiser ID should be used as the default and the Android ID as the second option.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* If C9 is &amp;lt;empty&amp;gt;, upon receiving the ping, the Nielsen collection server will attempt a 302 redirect to the data provider per the regular DAR pixel for browsers.&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
* As of August 1, 2014, Google is enforcing use of the Advertising ID for advertising and user analytics (http://play.google.com/about/developer-content-policy.html).&lt;br /&gt;
&amp;lt;blockquote&amp;gt;'' &amp;quot;Beginning August 1st 2014, all updates and new apps uploaded to the Play Store must use the advertising ID (when available on a device) in lieu of any other device identifiers for any advertising purposes.&amp;quot;&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
* It is preferred that the IDFA or Google Advertising ID be sent as is from the mobile device (“cleartext”). However, if mandated, we will support SHA256 hashed values with no-salt. Passing a hashed value (and/or salting) using any other standard will result in a failed match by the data provider upon receiving the ping. In turn, this results in impressions surfacing in the DAR unmeasurable audience totals. Please contact Nielsen if you anticipate a large percentage of hashed values coming in from your publisher clients.&lt;br /&gt;
&lt;br /&gt;
=== Privacy, Ad Tracking, and Ad Targeting ===&lt;br /&gt;
In newer iterations of the iOS and Android device operating systems, a facility exists allowing users to “opt-out” of “Ad Tracking”. It is Nielsen’s interpretation that this setting is primarily designed to allow users to specify opt-out of Ad Targeting rather than Ad Measurement. DAR&lt;br /&gt;
does not provide Ad Targeting data.&lt;br /&gt;
&lt;br /&gt;
However, it is also Nielsen’s position that the publisher or Ad network should provide a mechanism to also allow a user to opt-out of Ad Measurement. The Nielsen SDK will honor the Nielsen Ad Measurement opt-out settings configurable @ http://www.nielsen.com/us/en/campaigns/privacy-policy-opt-out.html.&lt;br /&gt;
&lt;br /&gt;
However if the integration approach described in this document is being used instead of the Nielsen SDK then '''YOU''' as the publisher or Ad network must provide a capability to opt-out of Ad Measurement as the configuration on www.nielsen.com will not be detectable. You may&lt;br /&gt;
elect to interpret the iOS / Android “Ad Tracking” setting for the purpose of limit Ad measurement or provide a separate discreet mechanism to allow a user to opt-out of Ad measurement.&lt;br /&gt;
&lt;br /&gt;
Please see '''&amp;amp;uoo''' later in this document for implementation details of the optout indicator.&lt;br /&gt;
&lt;br /&gt;
For additional clarification on privacy policy, please contact your Nielsen representative.&lt;br /&gt;
&lt;br /&gt;
== C10 - Platform (Mandatory) ==&lt;br /&gt;
To determine this value, Nielsen suggests that the ad network leverage user agent information to determine if the client device is either a mobile or desktop device.&lt;br /&gt;
&lt;br /&gt;
Valid literal values for mobile and desktop data values are as follows:&lt;br /&gt;
* plt,MBL&lt;br /&gt;
* plt,DSK&lt;br /&gt;
* plt,OTT&lt;br /&gt;
==== Notes ====&lt;br /&gt;
* Mandatory for accurate measurement, and if unable to pass, Nielsen cannot guarantee the impression will be classified correctly. &lt;br /&gt;
* Omitting c10, or a value in c10, will result in Nielsen attempting an introspection of the User Agent in the HTTP request sent against Device Atlas for classification. &lt;br /&gt;
* “OTT” (Connective Devices) is a valid value that is populated by participating vendors (Amazon, Hulu and Roku).  Non-participating vendors will be unmeasurable volumetric metric only.&lt;br /&gt;
&lt;br /&gt;
== C12 - App Version (Optional) ==&lt;br /&gt;
This is the version of the ad network system software or SDK that is implemented in this extension. Although this field is not required, this feature can be useful for troubleshooting purposes following deployment.&lt;br /&gt;
* apv,&amp;lt;N.N&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== C13 - AppID ==&lt;br /&gt;
This Nielsen provided ID is unique to the ad network and is required for certification.&lt;br /&gt;
* asid,&amp;lt;NNNNNNNNN-NNNN-NNNN-NNNN-NNNNNNNNNNNN&amp;gt;&lt;br /&gt;
An App ID will be provided for testing. A separate App ID will be provided for production use. Please request from your Nielsen representative.&lt;br /&gt;
&amp;lt;blockquote&amp;gt;'''Note''': If you are a publisher leveraging the non-SDK solution, you will be provided with a unique App ID for each combination of app and device OS type.&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== C14 - OS Version (Optional) ==&lt;br /&gt;
Operating system version&lt;br /&gt;
* osver,&amp;lt;OS Version&amp;gt;&lt;br /&gt;
Example: for iOS -&amp;gt; 7.0.4&lt;br /&gt;
&lt;br /&gt;
== UOO - Opt Out ==&lt;br /&gt;
Opt-out parameter&lt;br /&gt;
* &amp;lt;Boolean state&amp;gt;&lt;br /&gt;
&amp;lt;Boolean state&amp;gt; is a Boolean representation of whether the user is opting out or not.&lt;br /&gt;
&lt;br /&gt;
The absence of uoo in the tag is interpreted as an implicit opt-in. i.e. not opting out.&lt;br /&gt;
&lt;br /&gt;
The following pairings of opt-out are supported. '''Important:''' you must choose one set of paired values only and inform your Nielsen representative.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Opt-out !! Opt-in&lt;br /&gt;
|-&lt;br /&gt;
| uoo=true || uoo=false&lt;br /&gt;
|-&lt;br /&gt;
| uoo=1 || uoo=0&lt;br /&gt;
|-&lt;br /&gt;
| uoo=yes || uoo=no&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;blockquote&amp;gt;'''Note''':  if your Ad server is not capable os supporting the discrete &amp;amp;uoo parameter then you can set the c9 value to &amp;lt;code&amp;gt;devid,optout&amp;lt;/code&amp;gt; (for example &amp;lt;code&amp;gt;…&amp;amp;c8=PHN&amp;amp;c9=devid,optout&amp;amp;c10=MBL…&amp;lt;/code&amp;gt;)&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
== Additional Parameters == &lt;br /&gt;
This section describes several important additional parameters that the DAR tag can support, specifically Hashed Email, and UID2 values. Please note that all parameters are case-sensitive.&lt;br /&gt;
&lt;br /&gt;
Please work with your Nielsen Technical Account Manager to decide which of the following parameters to append to the standard DAR tag.&lt;br /&gt;
=== HEM Support (Hashed Email) ===&lt;br /&gt;
Please use the parameter that matches your hashing algorithm. For example, if you are using sha256 to encode the email address, then use hem_sha256={encrypted_value_here}&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-weight:bold; background-color:#EAECF0;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Name&lt;br /&gt;
! Description&lt;br /&gt;
! Available Tag Parameters&lt;br /&gt;
|- style=&amp;quot;font-weight:normal; background-color:#F8F9FA;&amp;quot;&lt;br /&gt;
| Hashed Email&lt;br /&gt;
| User’s email address that has been run through a hashing algorithm&amp;lt;br /&amp;gt;(e.g. SHA256, MD5, SHA1) to create a unique 32-character hexadecimal string.&amp;lt;br /&amp;gt; If a client is unable to determine hashing type, they should pass&amp;lt;br /&amp;gt;using &amp;amp;hem_unknown parameter.&lt;br /&gt;
| &amp;amp;hem_unknown&amp;lt;br /&amp;gt;&amp;amp;hem_sha256&amp;lt;br /&amp;gt;&amp;amp;hem_md5&amp;lt;br /&amp;gt;&amp;amp;hem_sha1&lt;br /&gt;
|}&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-weight:bold;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background-color:#dae8fc; color:#002041;&amp;quot;&lt;br /&gt;
! Example&lt;br /&gt;
|- style=&amp;quot;font-weight:normal;&amp;quot;&lt;br /&gt;
| hem_sha256=tMmiiTI7IaAcPpQPFQ65uMVCWH8av9jw4cwf/F5HVRQ=&lt;br /&gt;
|}&lt;br /&gt;
=== Unified ID ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;background-color:#F8F9FA;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;font-weight:bold; background-color:#EAECF0;&amp;quot;&lt;br /&gt;
! Name&lt;br /&gt;
! Description&lt;br /&gt;
! Available Tag Parameters&lt;br /&gt;
|-&lt;br /&gt;
| Unified ID 2.0&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)&amp;lt;br /&amp;gt;and is now managed by Prebid.&lt;br /&gt;
| &amp;amp;uid2&lt;br /&gt;
|-&lt;br /&gt;
| Unified ID 2.0 Token&lt;br /&gt;
| Encrypted Unified ID 2.0&lt;br /&gt;
| &amp;amp;uid_token&lt;br /&gt;
|}&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-weight:bold;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background-color:#32BBB9; color:#002041;&amp;quot;&lt;br /&gt;
! Example&lt;br /&gt;
|- style=&amp;quot;font-weight:normal;&amp;quot;&lt;br /&gt;
| uid2=MTKVpUAzwYAPnHrtfE0wlINOMzhU7UUEjjVdCdRu63k=&amp;lt;br /&amp;gt;uid_token=AgAAAAPFR0zA5ogv/yaAPiUsAdZPsfqS8QlDSGxAB+rr8yekFs3AjLYVk5qqqiyV2XHbSuwzHmxSlLeQeKQI1mp015jsNnpX5&amp;lt;br /&amp;gt;/xGgXldcgVz+gFnyh3T8/3agMwRmyrhCxG4oH2C7fc48AQk2eotE7FW0ZDEYM8fD9ZxDaxFUC/OV3OuZA&amp;amp;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Server-Side Tag Dispatch ==&lt;br /&gt;
The standard way of triggering a Digital Ad Ratings (DAR) tag on Mobile-App is for the publisher app to trigger (either directly or via Ad server) the tag upon Ad exposure to the user. i.e. a client-side initiated tag.&lt;br /&gt;
&lt;br /&gt;
It is important to note that MRC/IAB measurement standards stipulate that the Ad exposure event still be initiated and recorded from the client-side, even if the Ad measurement tag (in this case a DAR tag) is physically initiated from the server-side. Evidence may be required (publisher log file or similar) from the MRC/IAB that the user was exposed to the Ad creative on their device.&lt;br /&gt;
&lt;br /&gt;
The following additional changes to the standard mobile-app DAR tag are required to support dispatch the DAR tag from a '''server-side''' publisher ad server:&lt;br /&gt;
&lt;br /&gt;
#'''X-Forwarded-For (XFF) IP:''' The original client IP address must be passed in the X-Forwarded-For (XFF) HTTP header field. When the impression is fired directly from the Ad Server, the XReal-IP will be the Ad Server IP.&lt;br /&gt;
#'''Cachebuster:''' Already present in the DAR tag, this now becomes mandatory. A cachebuster or random number ensures a new call is made to the Ad Server. By including a cachebuster ('r' parameter), the tag will not be cached. The timestamp of when the Ad was served can be used.&lt;br /&gt;
#'''User Agent (UA):''' The HTTP UA from the client device should be used to populate the HTTP UA in the server-server connection/ping.&lt;br /&gt;
#'''TLS:''' the tag received by Nielsen must be TLS v1.2 compliant or greater.&lt;br /&gt;
&lt;br /&gt;
==== Important notes ====&lt;br /&gt;
* the current iteration of server-server tag collection only supports mobile-app (IFA and AAID) and will NOT support cookie based audience measurement.&lt;br /&gt;
* The client’s server-server setup that is going to trigger/send the DAR tag should ​suppress​ any Nielsen cookie returned by the Nielsen collection server as a result of the first DAR tag received. If the Nielsen cookie (returned upon receiving the first DAR tag into secure.imrworldwide.com) is not suppressed then invalid traffic (IVT) filtration will quickly be triggered upon receiving the 2​nd and nth tag.&lt;br /&gt;
&lt;br /&gt;
== Appendix A: Example Implementation ==&lt;br /&gt;
In the below examples, you will see the overall DAR flow (Figure 1) and a detailed illustrative Ad Request / Response model (Figure 2).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div align=&amp;quot;center&amp;quot;&amp;gt;'''Figure 1 – End to End Data Flow'''&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:mDAR_Dataflow.png|center|link=]]&lt;br /&gt;
&lt;br /&gt;
Nielsen certified publishers and platforms will append the new parameters (below) with the appropriate URL safe values passed to Nielsen’s current DAR tag. The current DAR tag should be acquired using the existing processes for each campaign/placement. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&amp;lt;code&amp;gt;'''&amp;amp;c7'''=osgrp,IOS'''&amp;amp;c8'''=devgrp,PHN'''&amp;amp;c9'''=devid,XXXX-XX-XXXXXXXXX'''&amp;amp;c10'''=plt,MBL'''&amp;amp;c12'''=apv,AppVersion'''&amp;amp;c13'''=asid,XXXX-XX-XXXX-XXXX&amp;lt;/code&amp;gt;&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div align=&amp;quot;center&amp;quot;&amp;gt;'''Figure 2 – Illustrative Ad Request / Ad Response'''&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:ad_response.png|center|link=]]&lt;br /&gt;
&lt;br /&gt;
The above is an example of how an Ad server is supporting the build of mobile DAR tags for its publisher clients.&lt;br /&gt;
*Step 2 in Figure 1 is a summary of steps 1 and 2 in Figure 2 above.&lt;br /&gt;
*Steps 3 and 4 in Figure 1 is a summary of steps 3 through 9 in Figure 2 above.&lt;br /&gt;
&lt;br /&gt;
== Appendix B: Implementation, Testing &amp;amp; Certification ==&lt;br /&gt;
Once you have integrated the ping per the above specs, Nielsen requires you to pass through a one-time certification before traffic can be accepted into the production environment.&lt;br /&gt;
&lt;br /&gt;
The overall process is:&lt;br /&gt;
* Valid DAR contract or NDA is in place.&lt;br /&gt;
* Kick-off meeting with Nielsen onboarding team.&lt;br /&gt;
* Confirm meet minimums testing requirements:&lt;br /&gt;
** Host Ad/Tag for in-app delivery&lt;br /&gt;
** Can pass opt-out back to Nielsen&lt;br /&gt;
** Can pass Device ID in cleartext or SHA-256&lt;br /&gt;
* Nielsen provides the mDAR testing form that includes the test App ID and the test tag&lt;br /&gt;
* Identify the live campaigns for initial testing and run the test tag; suggest 5,000-10,000 impressions.&lt;br /&gt;
* Nielsen validates the data received from the test and confirms the initial test successful and provides the production App ID.&lt;br /&gt;
* Ensure contracts are in place for external test campaign with Nielsen Client Service team.&lt;br /&gt;
* Identify another live campaigns for production testing with production tag and app ID.&lt;br /&gt;
* Nielsen validates the data received from the final test and confirms certification for any DAR countries tested.&lt;br /&gt;
==== Goals ====&lt;br /&gt;
* To test in full DAR E2E environment, receive matches from data provider for demographics and correct identification of mobile impressions.&lt;br /&gt;
* To test that all minimum requirements in step 3 are passed to Nielsen with no issues.&lt;br /&gt;
* To test in a full DAR end-to-end environment, receive matches from data providers for demographics and correct identification of mobile impressions.&lt;/div&gt;</summary>
		<author><name>ColinBrown</name></author>
	</entry>
	<entry>
		<id>https://nielsentest.mywikis.net/w/index.php?title=Mobile_DAR_Attributes_Requirements&amp;diff=5965</id>
		<title>Mobile DAR Attributes Requirements</title>
		<link rel="alternate" type="text/html" href="https://nielsentest.mywikis.net/w/index.php?title=Mobile_DAR_Attributes_Requirements&amp;diff=5965"/>
		<updated>2022-09-20T23:43:12Z</updated>

		<summary type="html">&lt;p&gt;ColinBrown: /* UOO - Opt Out */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Breadcrumb|}} {{Breadcrumb|Digital}} {{Breadcrumb|Digital Ad Ratings}}  {{CurrentBreadcrumb}}&lt;br /&gt;
[[Category:Digital]]&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
The standard Nielsen Digital Ad Rating (DAR) tag only supports cookie based '''web browser''' viewing on PCs, MACs, and tablets/smartphone (web-browser). However, when ads are served to tablets/smartphones via native '''app-store applications''', the cookie based tag does not function correctly. Additional tag attributes are needed in order for audience reach measurement to function. Example tags are detailed later in this document.&lt;br /&gt;
&lt;br /&gt;
One way Nielsen clients can accomplish this is by the use of Nielsen’s native iOS/Android App SDK. Nielsen’s App SDK automatically adds these additional tag attributes to the standard cookie based webbrowser tag before the tag is forwarded on to the Nielsen census collection system. However, there is a significant portion of the publisher mobile app universe where it is either not feasible, or desirable to integrate Nielsen’s native App SDK into 3rd party applications.&lt;br /&gt;
&lt;br /&gt;
The purpose of this document is to detail the tag URL parameters required that are '''additional''' to the standard cookie based web-browser tag.&lt;br /&gt;
&lt;br /&gt;
The most critical additional parameter required is the insertion of the Advertising ID (IFA / IDFA / AdID) from the users device that has been exposed to the Ad creative.&lt;br /&gt;
&lt;br /&gt;
If you are reading this document as an Ad server representative then it is assumed that you have published a specification that mobile app publishers follow to pass the appropriate Advertising ID in the Ad request payload. Typically, your Ad server will then expand a macro or label with that value passed in the Ad request URL, insert into the DAR mobile app tag and redirect to Nielsen collections. See s. See  [[#Appendix A: Example Implementation]], figure 2 for an example tag workflow.&lt;br /&gt;
&lt;br /&gt;
The standard way of triggering a Digital Ad Ratings (DAR) tag on Mobile-App is for the publisher app to trigger (either directly or via Ad server) the tag upon Ad exposure to the user. i.e. a client-side initiated tag. If you wish to implement server-side dispatch of mobile in-app DAR tags then see additional section in this document titled '''server-side tag dispatch'''. Please read the rest of this document before reading the section on server-server.&lt;br /&gt;
&lt;br /&gt;
Once you have completed your integration, you will be required to submit to a short certification. See [[#Appendix B: Implementation, Testing &amp;amp; Certification]]. Certification also grants inclusion to the approved publisher and certified Ad server vendor list.&lt;br /&gt;
&lt;br /&gt;
'''Important Note:''' for 2018, the MRC has mandated a series of changes to audience measurement that will require additional tag events to be communicated to Nielsen so that we may compute duration weighting etc. You are strongly urged to contact your Nielsen client service representative to seek a briefing from Nielsen on the best technical methods for tagging in order to be compliant with these changes.&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
== Standard DAR Tag ==&lt;br /&gt;
The DAR tag is available as a 1x1 pixel. The following pixel/tag parameters must be specified for all DAR tags, 1x1, regardless of implementation type: browser, mobile browser, mobile app or connected device.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
! Tag Parameter&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| CI&lt;br /&gt;
| Client ID: the ID that is associated with the DAR account that processed tag data is associated with. Will always be hardcoded to a Nielsen generated value that comes from the Nielsen campaign management system&lt;br /&gt;
|- style=&amp;quot;background-color:#eff8ef;&amp;quot;&lt;br /&gt;
| AM&lt;br /&gt;
| Ad Server: an ad server participating on the campaign media-plan. This is an internal Nielsen generated value when the ad server is indicated on the campaign during setup&lt;br /&gt;
|-&lt;br /&gt;
| CA&lt;br /&gt;
| Campaign Id: this is the ID associated with your DAR campaign. Unless you are creating and managing the Nielsen campaign via the DAR Tag API, then this parameter value will always be generated from the Nielsen campaign management system. Note: often maps to a media-plan I/O Id&lt;br /&gt;
|- style=&amp;quot;background-color:#eff8ef;&amp;quot;&lt;br /&gt;
| CR&lt;br /&gt;
| Creative Id: DAR does not currently report at the creative level; can be hard coded ad server id or associated with a macro expansion&lt;br /&gt;
|-&lt;br /&gt;
| PC&lt;br /&gt;
| Placement Id: can be generated by the ad server via macro expansion or generated by the Nielsen campaign management system. Note: often maps to one of Ad Unit Id, Line Item Id or Video Ad Id&lt;br /&gt;
|- style=&amp;quot;background-color:#eff8ef;&amp;quot;&lt;br /&gt;
| CE&lt;br /&gt;
| Site Id: the Id that identifies a publisher site that the placement needs to be mapped to. Maps into the Nielsen MarketView database. Note: can be hardcoded to a pre-registered ad server site id in the Nielsen system or a macro expansion where more than one pre-existing site ids have been made known to Nielsen&lt;br /&gt;
|-&lt;br /&gt;
| R&lt;br /&gt;
| Cachebuster (web): timestamp / random number. Generated by ad server&lt;br /&gt;
|- style=&amp;quot;background-color:#eff8ef;&amp;quot;&lt;br /&gt;
| AT&lt;br /&gt;
| Fixed value: “view”&lt;br /&gt;
|-&lt;br /&gt;
| RT&lt;br /&gt;
| Fixed value: “banner”&lt;br /&gt;
|- style=&amp;quot;background-color:#eff8ef;&amp;quot;&lt;br /&gt;
| ST&lt;br /&gt;
| Fixed value: “image”&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;blockquote&amp;gt; Do not URL encode the values&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Additional DAR Tag Parameters for Mobile App Audience Measurement ==&lt;br /&gt;
In this section, the additional URL parameters required beyond the standard cookie based web-browser tag are described in detail.&lt;br /&gt;
&lt;br /&gt;
For each of the tag examples detailed below, we can support both non-secure (http) and secure (https) flavors. The standard cookie based web-browser tag is included below for reference purposes.&lt;br /&gt;
&lt;br /&gt;
'''Important note:''' the values against each value-pair in the following tags are for illustrative purposes only. Values for CA, PC and CE will vary depending on the specific campaign being measured and capabilities of the Ad server for macro/value expansion. For more detail on the core DAR  parameters, please see the '''Nielsen DAR Tag Implementation Guide.'''&lt;br /&gt;
&lt;br /&gt;
'''Web Browser DAR tag (cookie based persons identification)'''&lt;br /&gt;
&amp;lt;code&amp;gt; //secure-gl.imrworldwide.com/cgi-bin/m?ci=nlsnci535&amp;amp;am=3&amp;amp;at=view&amp;amp;rt=banner&amp;amp;st=image&amp;amp;ca=nlsn12452&amp;amp;cr=crtve&amp;amp;pc=&amp;lt;creativeid&amp;gt;_plc0001&amp;amp;ce=&amp;lt;siteid&amp;gt;&amp;amp;r=&amp;lt;timestamp&amp;gt; &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Mobile-App DAR Tag Extension (IFA based persons identification)'''&lt;br /&gt;
&amp;lt;code&amp;gt; //secure-gl.imrworldwide.com/cgi-bin/m?ci=nlsnci535&amp;amp;am=3&amp;amp;at=view&amp;amp;rt=banner&amp;amp;st=image&amp;amp;ca=nlsn12452&amp;amp;cr=crtve&amp;amp;pc=&amp;lt;creativeid&amp;gt;_plc0001&amp;amp;ce=&amp;lt;siteid&amp;gt;&amp;amp;c7=osgrp,IOS&amp;amp;c8=devgrp,PHN&amp;amp;c9=devid,XXXX-XX-XXXXX-XXXX &amp;amp;c10=plt,MBL&amp;amp;c12=apv,&amp;lt;appVersion&amp;gt;&amp;amp;c13=asid,NIELSEN-PROVIDEDID&amp;amp;c14=osver,7.0.4&amp;amp;uoo=0&amp;amp;r=&amp;lt;timestamp&amp;gt; &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Additional DAR Tag Parameters for Mobile !! Description !! Mandatory parameter for mDAR?&lt;br /&gt;
|-&lt;br /&gt;
| &amp;amp;c7 || OS Grouping ||&lt;br /&gt;
|- style=&amp;quot;background-color:#eff8ef;&amp;quot;&lt;br /&gt;
| &amp;amp;c8  || Device Grouping || &amp;lt;center&amp;gt;✔&amp;lt;/center&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;amp;c9 || Advertising ID || &amp;lt;center&amp;gt;✔&amp;lt;/center&amp;gt;&lt;br /&gt;
|- style=&amp;quot;background-color:#eff8ef;&amp;quot;&lt;br /&gt;
| &amp;amp;c10 || Platform || &amp;lt;center&amp;gt;✔&amp;lt;/center&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;amp;c12 || App Version ||&lt;br /&gt;
|- style=&amp;quot;background-color:#eff8ef;&amp;quot;&lt;br /&gt;
| &amp;amp;c13 || AppID (Nielsen assigned App ID) || &amp;lt;center&amp;gt;✔&amp;lt;/center&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;amp;c14 || OS Version ||&lt;br /&gt;
|- style=&amp;quot;background-color:#eff8ef;&amp;quot;&lt;br /&gt;
| &amp;amp;uoo || Opt-out indicator || &amp;lt;center&amp;gt;✔&amp;lt;/center&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;blockquote&amp;gt;'''Note''': Clients are encouraged to make an effort to always fill-in optional parameters.&lt;br /&gt;
&lt;br /&gt;
'''Note''': Do not URL encode the values.&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== C7 - OS Grouping (Optional) ==&lt;br /&gt;
Valid device OS Grouping data values are the following literal values:&lt;br /&gt;
* osgrp,IOS&lt;br /&gt;
* osgrp,DROID&lt;br /&gt;
* osgrp,ANDROID&lt;br /&gt;
&amp;lt;blockquote&amp;gt;'''Note''': If one of the above values cannot be specific, then the parameter should not be included in the call.&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== C8 - Device Grouping (Mandatory)==&lt;br /&gt;
Valid literal values for phone, tablet, portable media player (iPod) and unknown are as follows:&lt;br /&gt;
* devgrp,PHN - Phone&lt;br /&gt;
* devgrp,TAB - Tablet&lt;br /&gt;
* devgrp,PMP - Portable Media Player (iPod)&lt;br /&gt;
* devgrp,UNWN - Unknown/Unclassified&lt;br /&gt;
* devgrp,DSK - Desktop&lt;br /&gt;
* devgrp,STV ←​ CTV/OTT Device&lt;br /&gt;
==== Notes ====&lt;br /&gt;
* Mandatory for accurate measurement, and if unable to pass, Nielsen cannot guarantee the impression will be classified correctly. &lt;br /&gt;
* “​UNWN” will result in Nielsen attempting an introspection of the User Agent in the HTTP request sent against Device Atlas for classification. &lt;br /&gt;
* “STV” is the default value for OTT when the specific device value isn’t passed.&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== C9 - Advertising ID (Mandatory) ==&lt;br /&gt;
This is the advertiser ID for the client’s mobile device. IDFA for iOS, Google Advertising ID for Android:&lt;br /&gt;
* devid,&amp;lt;IDFA&amp;gt;&lt;br /&gt;
* devid,&amp;lt;IFA&amp;gt;&lt;br /&gt;
* devid,&amp;lt;Google Advertising ID&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Notes ====&lt;br /&gt;
For Android devices, the Google Advertiser ID should be used as the default and the Android ID as the second option.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* If C9 is &amp;lt;empty&amp;gt;, upon receiving the ping, the Nielsen collection server will attempt a 302 redirect to the data provider per the regular DAR pixel for browsers.&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
* As of August 1, 2014, Google is enforcing use of the Advertising ID for advertising and user analytics (http://play.google.com/about/developer-content-policy.html).&lt;br /&gt;
&amp;lt;blockquote&amp;gt;'' &amp;quot;Beginning August 1st 2014, all updates and new apps uploaded to the Play Store must use the advertising ID (when available on a device) in lieu of any other device identifiers for any advertising purposes.&amp;quot;&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
* It is preferred that the IDFA or Google Advertising ID be sent as is from the mobile device (“cleartext”). However, if mandated, we will support SHA256 hashed values with no-salt. Passing a hashed value (and/or salting) using any other standard will result in a failed match by the data provider upon receiving the ping. In turn, this results in impressions surfacing in the DAR unmeasurable audience totals. Please contact Nielsen if you anticipate a large percentage of hashed values coming in from your publisher clients.&lt;br /&gt;
&lt;br /&gt;
=== Privacy, Ad Tracking, and Ad Targeting ===&lt;br /&gt;
In newer iterations of the iOS and Android device operating systems, a facility exists allowing users to “opt-out” of “Ad Tracking”. It is Nielsen’s interpretation that this setting is primarily designed to allow users to specify opt-out of Ad Targeting rather than Ad Measurement. DAR&lt;br /&gt;
does not provide Ad Targeting data.&lt;br /&gt;
&lt;br /&gt;
However, it is also Nielsen’s position that the publisher or Ad network should provide a mechanism to also allow a user to opt-out of Ad Measurement. The Nielsen SDK will honor the Nielsen Ad Measurement opt-out settings configurable @ http://www.nielsen.com/us/en/campaigns/privacy-policy-opt-out.html.&lt;br /&gt;
&lt;br /&gt;
However if the integration approach described in this document is being used instead of the Nielsen SDK then '''YOU''' as the publisher or Ad network must provide a capability to opt-out of Ad Measurement as the configuration on www.nielsen.com will not be detectable. You may&lt;br /&gt;
elect to interpret the iOS / Android “Ad Tracking” setting for the purpose of limit Ad measurement or provide a separate discreet mechanism to allow a user to opt-out of Ad measurement.&lt;br /&gt;
&lt;br /&gt;
Please see '''&amp;amp;uoo''' later in this document for implementation details of the optout indicator.&lt;br /&gt;
&lt;br /&gt;
For additional clarification on privacy policy, please contact your Nielsen representative.&lt;br /&gt;
&lt;br /&gt;
== C10 - Platform (Mandatory) ==&lt;br /&gt;
To determine this value, Nielsen suggests that the ad network leverage user agent information to determine if the client device is either a mobile or desktop device.&lt;br /&gt;
&lt;br /&gt;
Valid literal values for mobile and desktop data values are as follows:&lt;br /&gt;
* plt,MBL&lt;br /&gt;
* plt,DSK&lt;br /&gt;
* plt,OTT&lt;br /&gt;
==== Notes ====&lt;br /&gt;
* Mandatory for accurate measurement, and if unable to pass, Nielsen cannot guarantee the impression will be classified correctly. &lt;br /&gt;
* Omitting c10, or a value in c10, will result in Nielsen attempting an introspection of the User Agent in the HTTP request sent against Device Atlas for classification. &lt;br /&gt;
* “OTT” (Connective Devices) is a valid value that is populated by participating vendors (Amazon, Hulu and Roku).  Non-participating vendors will be unmeasurable volumetric metric only.&lt;br /&gt;
&lt;br /&gt;
== C12 - App Version (Optional) ==&lt;br /&gt;
This is the version of the ad network system software or SDK that is implemented in this extension. Although this field is not required, this feature can be useful for troubleshooting purposes following deployment.&lt;br /&gt;
* apv,&amp;lt;N.N&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== C13 - AppID ==&lt;br /&gt;
This Nielsen provided ID is unique to the ad network and is required for certification.&lt;br /&gt;
* asid,&amp;lt;NNNNNNNNN-NNNN-NNNN-NNNN-NNNNNNNNNNNN&amp;gt;&lt;br /&gt;
An App ID will be provided for testing. A separate App ID will be provided for production use. Please request from your Nielsen representative.&lt;br /&gt;
&amp;lt;blockquote&amp;gt;'''Note''': If you are a publisher leveraging the non-SDK solution, you will be provided with a unique App ID for each combination of app and device OS type.&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== C14 - OS Version (Optional) ==&lt;br /&gt;
Operating system version&lt;br /&gt;
* osver,&amp;lt;OS Version&amp;gt;&lt;br /&gt;
Example: for iOS -&amp;gt; 7.0.4&lt;br /&gt;
&lt;br /&gt;
== UOO - Opt Out ==&lt;br /&gt;
Opt-out parameter&lt;br /&gt;
* &amp;lt;Boolean state&amp;gt;&lt;br /&gt;
&amp;lt;Boolean state&amp;gt; is a Boolean representation of whether the user is opting out or not.&lt;br /&gt;
&lt;br /&gt;
The absence of uoo in the tag is interpreted as an implicit opt-in. i.e. not opting out.&lt;br /&gt;
&lt;br /&gt;
The following pairings of opt-out are supported. '''Important:''' you must choose one set of paired values only and inform your Nielsen representative.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Opt-out !! Opt-in&lt;br /&gt;
|-&lt;br /&gt;
| uoo=true || uoo=false&lt;br /&gt;
|-&lt;br /&gt;
| uoo=1 || uoo=0&lt;br /&gt;
|-&lt;br /&gt;
| uoo=yes || uoo=no&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;blockquote&amp;gt;'''Note''':  if your Ad server is not capable os supporting the discrete &amp;amp;uoo parameter then you can set the c9 value to &amp;lt;code&amp;gt;devid,optout&amp;lt;/code&amp;gt; (for example &amp;lt;code&amp;gt;…&amp;amp;c8=PHN&amp;amp;c9=devid,optout&amp;amp;c10=MBL…&amp;lt;/code&amp;gt;)&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
== Additional Parameters == &lt;br /&gt;
This section describes several important additional parameters that the DAR tag can support, specifically Hashed Email, UID2 values, along with Page URL and Bundle Identifier if available. Please note that all parameters are case-sensitive.&lt;br /&gt;
&lt;br /&gt;
Please work with your Nielsen Technical Account Manager to decide which of the following parameters to append to the standard DAR tag.&lt;br /&gt;
=== HEM Support (Hashed Email) ===&lt;br /&gt;
Please use the parameter that matches your hashing algorithm. For example, if you are using sha256 to encode the email address, then use hem_sha256={encrypted_value_here}&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-weight:bold; background-color:#EAECF0;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Name&lt;br /&gt;
! Description&lt;br /&gt;
! Available Tag Parameters&lt;br /&gt;
|- style=&amp;quot;font-weight:normal; background-color:#F8F9FA;&amp;quot;&lt;br /&gt;
| Hashed Email&lt;br /&gt;
| User’s email address that has been run through a hashing algorithm&amp;lt;br /&amp;gt;(e.g. SHA256, MD5, SHA1) to create a unique 32-character hexadecimal string.&amp;lt;br /&amp;gt; If a client is unable to determine hashing type, they should pass&amp;lt;br /&amp;gt;using &amp;amp;hem_unknown parameter.&lt;br /&gt;
| &amp;amp;hem_unknown&amp;lt;br /&amp;gt;&amp;amp;hem_sha256&amp;lt;br /&amp;gt;&amp;amp;hem_md5&amp;lt;br /&amp;gt;&amp;amp;hem_sha1&lt;br /&gt;
|}&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-weight:bold;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background-color:#dae8fc; color:#002041;&amp;quot;&lt;br /&gt;
! Example&lt;br /&gt;
|- style=&amp;quot;font-weight:normal;&amp;quot;&lt;br /&gt;
| hem_sha256=tMmiiTI7IaAcPpQPFQ65uMVCWH8av9jw4cwf/F5HVRQ=&lt;br /&gt;
|}&lt;br /&gt;
=== Unified ID ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;background-color:#F8F9FA;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;font-weight:bold; background-color:#EAECF0;&amp;quot;&lt;br /&gt;
! Name&lt;br /&gt;
! Description&lt;br /&gt;
! Available Tag Parameters&lt;br /&gt;
|-&lt;br /&gt;
| Unified ID 2.0&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)&amp;lt;br /&amp;gt;and is now managed by Prebid.&lt;br /&gt;
| &amp;amp;uid2&lt;br /&gt;
|-&lt;br /&gt;
| Unified ID 2.0 Token&lt;br /&gt;
| Encrypted Unified ID 2.0&lt;br /&gt;
| &amp;amp;uid_token&lt;br /&gt;
|}&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-weight:bold;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background-color:#32BBB9; color:#002041;&amp;quot;&lt;br /&gt;
! Example&lt;br /&gt;
|- style=&amp;quot;font-weight:normal;&amp;quot;&lt;br /&gt;
| uid2=MTKVpUAzwYAPnHrtfE0wlINOMzhU7UUEjjVdCdRu63k=&amp;lt;br /&amp;gt;uid_token=AgAAAAPFR0zA5ogv/yaAPiUsAdZPsfqS8QlDSGxAB+rr8yekFs3AjLYVk5qqqiyV2XHbSuwzHmxSlLeQeKQI1mp015jsNnpX5&amp;lt;br /&amp;gt;/xGgXldcgVz+gFnyh3T8/3agMwRmyrhCxG4oH2C7fc48AQk2eotE7FW0ZDEYM8fD9ZxDaxFUC/OV3OuZA&amp;amp;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Server-Side Tag Dispatch ==&lt;br /&gt;
The standard way of triggering a Digital Ad Ratings (DAR) tag on Mobile-App is for the publisher app to trigger (either directly or via Ad server) the tag upon Ad exposure to the user. i.e. a client-side initiated tag.&lt;br /&gt;
&lt;br /&gt;
It is important to note that MRC/IAB measurement standards stipulate that the Ad exposure event still be initiated and recorded from the client-side, even if the Ad measurement tag (in this case a DAR tag) is physically initiated from the server-side. Evidence may be required (publisher log file or similar) from the MRC/IAB that the user was exposed to the Ad creative on their device.&lt;br /&gt;
&lt;br /&gt;
The following additional changes to the standard mobile-app DAR tag are required to support dispatch the DAR tag from a '''server-side''' publisher ad server:&lt;br /&gt;
&lt;br /&gt;
#'''X-Forwarded-For (XFF) IP:''' The original client IP address must be passed in the X-Forwarded-For (XFF) HTTP header field. When the impression is fired directly from the Ad Server, the XReal-IP will be the Ad Server IP.&lt;br /&gt;
#'''Cachebuster:''' Already present in the DAR tag, this now becomes mandatory. A cachebuster or random number ensures a new call is made to the Ad Server. By including a cachebuster ('r' parameter), the tag will not be cached. The timestamp of when the Ad was served can be used.&lt;br /&gt;
#'''User Agent (UA):''' The HTTP UA from the client device should be used to populate the HTTP UA in the server-server connection/ping.&lt;br /&gt;
#'''TLS:''' the tag received by Nielsen must be TLS v1.2 compliant or greater.&lt;br /&gt;
&lt;br /&gt;
==== Important notes ====&lt;br /&gt;
* the current iteration of server-server tag collection only supports mobile-app (IFA and AAID) and will NOT support cookie based audience measurement.&lt;br /&gt;
* The client’s server-server setup that is going to trigger/send the DAR tag should ​suppress​ any Nielsen cookie returned by the Nielsen collection server as a result of the first DAR tag received. If the Nielsen cookie (returned upon receiving the first DAR tag into secure.imrworldwide.com) is not suppressed then invalid traffic (IVT) filtration will quickly be triggered upon receiving the 2​nd and nth tag.&lt;br /&gt;
&lt;br /&gt;
== Appendix A: Example Implementation ==&lt;br /&gt;
In the below examples, you will see the overall DAR flow (Figure 1) and a detailed illustrative Ad Request / Response model (Figure 2).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div align=&amp;quot;center&amp;quot;&amp;gt;'''Figure 1 – End to End Data Flow'''&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:mDAR_Dataflow.png|center|link=]]&lt;br /&gt;
&lt;br /&gt;
Nielsen certified publishers and platforms will append the new parameters (below) with the appropriate URL safe values passed to Nielsen’s current DAR tag. The current DAR tag should be acquired using the existing processes for each campaign/placement. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&amp;lt;code&amp;gt;'''&amp;amp;c7'''=osgrp,IOS'''&amp;amp;c8'''=devgrp,PHN'''&amp;amp;c9'''=devid,XXXX-XX-XXXXXXXXX'''&amp;amp;c10'''=plt,MBL'''&amp;amp;c12'''=apv,AppVersion'''&amp;amp;c13'''=asid,XXXX-XX-XXXX-XXXX&amp;lt;/code&amp;gt;&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div align=&amp;quot;center&amp;quot;&amp;gt;'''Figure 2 – Illustrative Ad Request / Ad Response'''&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:ad_response.png|center|link=]]&lt;br /&gt;
&lt;br /&gt;
The above is an example of how an Ad server is supporting the build of mobile DAR tags for its publisher clients.&lt;br /&gt;
*Step 2 in Figure 1 is a summary of steps 1 and 2 in Figure 2 above.&lt;br /&gt;
*Steps 3 and 4 in Figure 1 is a summary of steps 3 through 9 in Figure 2 above.&lt;br /&gt;
&lt;br /&gt;
== Appendix B: Implementation, Testing &amp;amp; Certification ==&lt;br /&gt;
Once you have integrated the ping per the above specs, Nielsen requires you to pass through a one-time certification before traffic can be accepted into the production environment.&lt;br /&gt;
&lt;br /&gt;
The overall process is:&lt;br /&gt;
* Valid DAR contract or NDA is in place.&lt;br /&gt;
* Kick-off meeting with Nielsen onboarding team.&lt;br /&gt;
* Confirm meet minimums testing requirements:&lt;br /&gt;
** Host Ad/Tag for in-app delivery&lt;br /&gt;
** Can pass opt-out back to Nielsen&lt;br /&gt;
** Can pass Device ID in cleartext or SHA-256&lt;br /&gt;
* Nielsen provides the mDAR testing form that includes the test App ID and the test tag&lt;br /&gt;
* Identify the live campaigns for initial testing and run the test tag; suggest 5,000-10,000 impressions.&lt;br /&gt;
* Nielsen validates the data received from the test and confirms the initial test successful and provides the production App ID.&lt;br /&gt;
* Ensure contracts are in place for external test campaign with Nielsen Client Service team.&lt;br /&gt;
* Identify another live campaigns for production testing with production tag and app ID.&lt;br /&gt;
* Nielsen validates the data received from the final test and confirms certification for any DAR countries tested.&lt;br /&gt;
==== Goals ====&lt;br /&gt;
* To test in full DAR E2E environment, receive matches from data provider for demographics and correct identification of mobile impressions.&lt;br /&gt;
* To test that all minimum requirements in step 3 are passed to Nielsen with no issues.&lt;br /&gt;
* To test in a full DAR end-to-end environment, receive matches from data providers for demographics and correct identification of mobile impressions.&lt;/div&gt;</summary>
		<author><name>ColinBrown</name></author>
	</entry>
	<entry>
		<id>https://nielsentest.mywikis.net/w/index.php?title=AGF_Implementation_Documentation&amp;diff=5933</id>
		<title>AGF Implementation Documentation</title>
		<link rel="alternate" type="text/html" href="https://nielsentest.mywikis.net/w/index.php?title=AGF_Implementation_Documentation&amp;diff=5933"/>
		<updated>2022-08-19T20:34:15Z</updated>

		<summary type="html">&lt;p&gt;ColinBrown: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Breadcrumb|}} {{Breadcrumb|Digital}} {{CurrentBreadcrumb}}&lt;br /&gt;
[[Category:Digital]]&lt;br /&gt;
{{CategoryIcon|DCR.png|AGF Documentation &amp;amp; Downloads}}&lt;br /&gt;
&lt;br /&gt;
__NOTOC__&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;The following guides are specific for AGF.&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Video Measurement =&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;width: 90px;&amp;quot; | AGF&lt;br /&gt;
! style=&amp;quot;width: 90px;&amp;quot; |&lt;br /&gt;
! style=&amp;quot;width: 45px;&amp;quot; | &lt;br /&gt;
! style=&amp;quot;width: 45px;&amp;quot; | OS&lt;br /&gt;
!| Guide&lt;br /&gt;
!| Links&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;5&amp;quot; | {{SmallIcon|DEFlagIcon.png}}&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | {{SmallIcon|SDKIcon.png}}&lt;br /&gt;
| rowspan=&amp;quot;5&amp;quot; | {{OSIcon|VideoIcon.png}}&lt;br /&gt;
|&lt;br /&gt;
|''' [https://nielsendownloads.digitalengsdk.com/digital/200608_AGF_Custom_Variables_and_Metadata_DCR_SDK_v1.7.pdf%20Metadata%20Document MetaData Documentation]'''&lt;br /&gt;
|-&lt;br /&gt;
|  {{OSIcon|macOSIcon.png}}&lt;br /&gt;
| '''[[DCR Germany Video App SDK|AGF iOS Implementation Guide]]'''&lt;br /&gt;
| '''[https://nielsendownloads-green.digitalengsdk.com/digital/Nielsen-iOS-App-SDK-AGFNoId_latest.zip AGF iOS No ID (Preferred)]'''&lt;br /&gt;
|-&lt;br /&gt;
| {{OSIcon|AndroidIcon.png}}&lt;br /&gt;
| '''[[DCR_Germany_Video_App_SDK|AGF Android Implementation Guide]]'''&lt;br /&gt;
| '''[https://nielsendownloads-green.digitalengsdk.com/digital/Nielsen-Android-App-SDK_AgfNoId_latest.zip Android AGF No ID Download (Preferred)]'''&lt;br /&gt;
|-&lt;br /&gt;
| {{OSIcon|BrowserIcon.png}}&lt;br /&gt;
| '''[[DCR_Germany_Video_Browser_SDK|AGF Browser Implementation Guide]]'''&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| {{SmallIcon|CloudAPIIcon.png}}&lt;br /&gt;
| {{OSIcon|APIIcon.png}}&lt;br /&gt;
| '''[[DCR Germany Video Cloud API|AGF Video Cloud Implementation Guide]]'''&lt;br /&gt;
| &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Static Measurement =&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;7&amp;quot; style=&amp;quot;background-color:white;&amp;quot; |&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;width: 90px;&amp;quot; | AGF&lt;br /&gt;
! style=&amp;quot;width: 90px;&amp;quot; |&lt;br /&gt;
! style=&amp;quot;width: 45px;&amp;quot; | &lt;br /&gt;
! style=&amp;quot;width: 45px;&amp;quot; | OS&lt;br /&gt;
!| Guide&lt;br /&gt;
!| Links&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | {{SmallIcon|DEFlagIcon.png}}&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | {{SmallIcon|SDKIcon.png}}&lt;br /&gt;
| rowspan=&amp;quot;5&amp;quot; | {{OSIcon|StaticIcon.png}}&lt;br /&gt;
| {{OSIcon|macOSIcon.png}}&lt;br /&gt;
| '''[[DCR_Germany_Static_App_SDK|DCR iOS Static App SDK]]'''&lt;br /&gt;
| rowspan=&amp;quot;1&amp;quot; | '''[https://nielsendownloads-green.digitalengsdk.com/digital/Nielsen-iOS-App-SDK-AGFNoId_latest.zip AGF iOS No ID (Preferred)]'''&lt;br /&gt;
|-&lt;br /&gt;
| {{OSIcon|AndroidIcon.png}}&lt;br /&gt;
|'''[[DCR_Germany_Static_App_SDK|DCR Android Static App SDK]]'''&lt;br /&gt;
|'''[https://nielsendownloads-green.digitalengsdk.com/digital/Nielsen-Android-App-SDK_AgfNoId_latest.zip Android AGF No ID Download (Preferred)]'''&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; |{{OSIcon|BrowserIcon.png}}&lt;br /&gt;
| '''[[DCR Germany Static Browser SDK]]'''&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| '''[[DCR Germany Static Google Tag Manager]]'''&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>ColinBrown</name></author>
	</entry>
	<entry>
		<id>https://nielsentest.mywikis.net/w/index.php?title=Digital_Measurement_iOS_Swift_Package_Manager_Guide&amp;diff=5932</id>
		<title>Digital Measurement iOS Swift Package Manager Guide</title>
		<link rel="alternate" type="text/html" href="https://nielsentest.mywikis.net/w/index.php?title=Digital_Measurement_iOS_Swift_Package_Manager_Guide&amp;diff=5932"/>
		<updated>2022-08-17T18:34:13Z</updated>

		<summary type="html">&lt;p&gt;ColinBrown: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Breadcrumb|}} {{Breadcrumb|Digital}} {{Breadcrumb|Digital Downloads}} {{Breadcrumb|Digital Measurement iOS Artifactory Guide}} {{CurrentBreadcrumb}}&lt;br /&gt;
[[Category:Digital]]&lt;br /&gt;
__NOTOC__&lt;br /&gt;
The Nielsen AppSDK can either be downloaded directly or can be integrated within an application through the use of a CocoaPods, Carthage or Swift Package Manager.&lt;br /&gt;
&lt;br /&gt;
= How to integrate Nielsen SDK in iOS/tvOS application using Swift Package Manager =&lt;br /&gt;
Initially the Swift Package Manager (SPM) was created as a tool for managing the distribution of Swift code. It’s integrated with the Swift build system to automate the process of downloading, compiling, and linking dependencies. However, starting from the Swift 5.3 it allows to add binary dependencies and to import proprietary, closed-source libraries into applications also.&lt;br /&gt;
&lt;br /&gt;
== Swift Package Manager Installation ==&lt;br /&gt;
The Swift Package Manager is available as a part of the Xcode application for MacOS. We recommend to use the Xcode version 12.x with Swift 5.3 that is the minimum required version of Swift with binary dependencies support. Apple Xcode can be downloaded and installed using Mac App Store application or from the Apple web site (https://developer.apple.com/account) in the Downloads section.&lt;br /&gt;
&lt;br /&gt;
== XCFramework package ==&lt;br /&gt;
Swift Package Manager only supports XCFramework type of package for binary distribution. This a new type of package supported by Apple. It has a number of benefits against the fat library packaged into a framework. First of all it allows to combine device and simulator slices into one package and it is not needed to write custom run scripts to exclude simulator slices from the embedded frameworks before deploying apps. Also XCFramework allows to combine binaries for different platforms, like iOS, tvOS, MacOS. Nielsen SDK added support for XCFramework packages and they are now available for SPM distribution.&lt;br /&gt;
&lt;br /&gt;
== Repository Credentials ==&lt;br /&gt;
SDK framework packages are stored on a public Github repository.&lt;br /&gt;
To access that you do not need any credentials.&lt;br /&gt;
&lt;br /&gt;
== SDK integration ==&lt;br /&gt;
Two approaches of the SDK integration are applicable for SPM:&lt;br /&gt;
# SDK integration using local SPM package&lt;br /&gt;
# SDK integration using the Xcode project settings&lt;br /&gt;
&lt;br /&gt;
=== SDK integration using local package ===&lt;br /&gt;
Nielsen AppSDK can be integrated to an application by setup local SPM package with dependencies the remote Nielsen SDK package.&lt;br /&gt;
# In the Xcode from the menu go to: File -&amp;gt; New -&amp;gt; Package... - to create the new local package by specifying it's name and location.&lt;br /&gt;
# Close the Xcode instance with the just created package.&lt;br /&gt;
# In the Xcode with the application project from the menu go to: File -&amp;gt; Add Packages... -&amp;gt; Add local... - to add local package into the application project by specifying the package folder.&lt;br /&gt;
# In order to integrate the local package into your application open your application targets’ General settings tab. In the &amp;quot;Frameworks, Libraries, and Embedded Content&amp;quot; section tap: + -&amp;gt; Workspace -&amp;gt; &amp;lt;Package Name&amp;gt; -&amp;gt; &amp;lt;Package Name&amp;gt; -&amp;gt; Add.&lt;br /&gt;
# In the Xcode in the Project Navigator go to: &amp;lt;Project Name&amp;gt; -&amp;gt; Packages -&amp;gt; &amp;lt;Package Name&amp;gt; -&amp;gt; Package.swift - to open SPM package manifest file in Xcode editor.&lt;br /&gt;
# Update the package manifest with a minimal template below to use the remote Nielsen SDK package as a dependency: &amp;lt;syntaxhighlight lang=Swift&amp;gt;&lt;br /&gt;
&lt;br /&gt;
// swift-tools-version:5.3&lt;br /&gt;
// The swift-tools-version declares the minimum version of Swift required to build this package.&lt;br /&gt;
&lt;br /&gt;
import PackageDescription&lt;br /&gt;
&lt;br /&gt;
let package = Package(&lt;br /&gt;
    name: &amp;quot;&amp;lt;Package Name&amp;gt;&amp;quot;,&lt;br /&gt;
    products: [&lt;br /&gt;
        // Products define the executables and libraries a package produces, and make them visible to other packages.&lt;br /&gt;
        .library(&lt;br /&gt;
            name: &amp;quot;&amp;lt;Package Name&amp;gt;&amp;quot;,&lt;br /&gt;
            targets: [&amp;quot;&amp;lt;Package Name&amp;gt;&amp;quot;])&lt;br /&gt;
    ],&lt;br /&gt;
    dependencies: [&lt;br /&gt;
        // Dependencies declare other packages that this package depends on.&lt;br /&gt;
        // .package(url: /* package url */, from: &amp;quot;1.0.0&amp;quot;),&lt;br /&gt;
        .package(url: &amp;quot;https://github.com/NielsenDigitalSDK/&amp;lt;REPO_NAME&amp;gt;&amp;quot;,&lt;br /&gt;
                 from: &amp;quot;8.2.0&amp;quot;)&lt;br /&gt;
    ],&lt;br /&gt;
    targets: [&lt;br /&gt;
        // Targets are the basic building blocks of a package. A target can define a module or a test suite.&lt;br /&gt;
        // Targets can depend on other targets in this package, and on products in packages this package depends on.&lt;br /&gt;
        .target(&lt;br /&gt;
            name: &amp;quot;&amp;lt;Package Name&amp;gt;&amp;quot;,&lt;br /&gt;
            dependencies: [&lt;br /&gt;
                .product(name: &amp;quot;NielsenAppApi&amp;quot;, &lt;br /&gt;
                         package: &amp;quot;&amp;lt;REPO_NAME&amp;gt;&amp;quot;)&lt;br /&gt;
            ]&lt;br /&gt;
        )&lt;br /&gt;
    ]&lt;br /&gt;
)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
# In the package definition statement decide whether your project dependency accepts updates up to the next major version or up to the next minor version. To be more restrictive, select a specific version range or an exact version. &amp;lt;syntaxhighlight lang=Swift&amp;gt;&lt;br /&gt;
        .package(url: &amp;quot;https://github.com/NielsenDigitalSDK/&amp;lt;REPO_NAME&amp;gt;&amp;quot;,&lt;br /&gt;
                 from: &amp;quot;8.2.0&amp;quot;)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt; For detailes please see: https://developer.apple.com/documentation/swift_packages/package/dependency&lt;br /&gt;
# Please specify the &amp;lt;REPO_NAME&amp;gt; parameter according to the product you need for the application, refer the Nielsen AppSDK Products section: e.g. nielsenappsdk-ios-dynamic-spm-global.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=Swift&amp;gt;&lt;br /&gt;
            dependencies: [&lt;br /&gt;
                .product(name: &amp;quot;NielsenAppApi&amp;quot;,&lt;br /&gt;
                         package: &amp;quot;nielsenappsdk-ios-dynamic-spm-global&amp;quot;)&lt;br /&gt;
            ]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For an additional technical details please refer to: https://developer.apple.com/documentation/xcode/creating_a_standalone_swift_package_with_xcode&lt;br /&gt;
&lt;br /&gt;
=== SDK integration using the Xcode project settings ===&lt;br /&gt;
Nielsen AppSDK can be integrated to an application by setup the remote SDK package in the Xcode project settings explicitly. &lt;br /&gt;
# In the Xcode from the menu go to: File -&amp;gt; Swift Packages -&amp;gt; Add Package Dependency... - to setup the remote Nielsen SDK package.&lt;br /&gt;
# In the appeared popup please enter the repository address according to the product you need for the application: https://github.com/NielsenDigitalSDK/&amp;lt;REPO_NAME&amp;gt;. Example: https://github.com/NielsenDigitalSDK/nielsenappsdk-ios-dynamic-spm-global&lt;br /&gt;
# On the next screen please define an SDK version for integration. There are options available for the selection. Decide whether your project accepts updates to a package dependency up to the next major version or up to the next minor version. To be more restrictive, select a specific version range or an exact version.&lt;br /&gt;
# On the next dialog please select NielsenAppApi product and add it(s) to the particular application build target(s).&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Notes:&amp;lt;br&amp;gt;&lt;br /&gt;
1. We are aware about the Xcode 13.3 issue with SPM integration of the framework where its name does not match the target name: https://stackoverflow.com/questions/71539013/spm-artifact-not-found-for-target-aaa-xcode-13-3-only. &amp;lt;br&amp;gt;&lt;br /&gt;
In the release 8.2.0 we have addressed this issue. Please update to the release 8.2.0 if this is happening.&amp;lt;br&amp;gt;&lt;br /&gt;
2. In some scenarios after upgrading to the latest SDK release Xcode shows a number of compilation warning/error messages saying that duplicate symbols exist in the code. Please goto menu &amp;lt;File&amp;gt; -&amp;gt; &amp;lt;Packages&amp;gt; and press &amp;lt;Reset Package Caches&amp;gt; if this is happening.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Nielsen AppSDK Versions ==&lt;br /&gt;
iOS/tvOS AppSDK has 4 digits in the version numbers, but the SPM packages should conform to semantic versioning and contain only 3 digits in the version number. Please use only 3 first digits while specifying the exact version of the SDK:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=Javascript&amp;gt;&lt;br /&gt;
8.0.0.0 -&amp;gt; 8.0.0&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Nielsen AppSDK is available for distribution through the Swift Package Manager starting from 8.0.0.0 version only.&lt;br /&gt;
&lt;br /&gt;
== Nielsen AppSDK Products ==&lt;br /&gt;
Each specific version of the Nielsen AppSDK package created for the Swift Package Manager distribution has its own set of XCFramework builds. Each XCFramework is stored on its own repository:&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Global flavors ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background-color:#efefef;&amp;quot;&lt;br /&gt;
! App Flavor !! Repository Name (REPO_NAME)!! Repository URL&lt;br /&gt;
|-&lt;br /&gt;
| Global || '''nielsenappsdk-ios-dynamic-spm-global''' || https://github.com/NielsenDigitalSDK/nielsenappsdk-ios-dynamic-spm-global&lt;br /&gt;
|-&lt;br /&gt;
| Global No Ad || '''nielsenappsdk-ios-dynamic-spm-globalnoad''' || https://github.com/NielsenDigitalSDK/nielsenappsdk-ios-dynamic-spm-globalnoad&lt;br /&gt;
|-&lt;br /&gt;
| Global No Id (for 'kids' apps) || '''nielsenappsdk-ios-dynamic-spm-globalnoid''' || https://github.com/NielsenDigitalSDK/nielsenappsdk-ios-dynamic-spm-globalnoid&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Regional flavors ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background-color:#efefef;&amp;quot;&lt;br /&gt;
! App Flavor !! Repository Name (REPO_NAME)!! Repository URL&lt;br /&gt;
|-&lt;br /&gt;
| AGF || '''nielsenappsdk-ios-dynamic-spm-agf''' || https://github.com/NielsenDigitalSDK/nielsenappsdk-ios-dynamic-spm-agf&lt;br /&gt;
|-&lt;br /&gt;
| AGF No Ad || '''nielsenappsdk-ios-dynamic-spm-agfnoad''' || https://github.com/NielsenDigitalSDK/nielsenappsdk-ios-dynamic-spm-agfnoad&lt;br /&gt;
|-&lt;br /&gt;
| AGF No Id (for 'kids' apps) || '''nielsenappsdk-ios-dynamic-spm-agfnoid''' || https://github.com/NielsenDigitalSDK/nielsenappsdk-ios-dynamic-spm-agfnoid&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Frameworks for tvOS platform do not have their specific repositories as they are distributed as part of the same XCFramework.&lt;br /&gt;
The following SDK versions are now available for distribution through SPM:&amp;lt;br&amp;gt;&lt;br /&gt;
8.0.0&lt;br /&gt;
&lt;br /&gt;
More details about SPM integration can be found in the official Apple documentation: https://developer.apple.com/documentation/xcode/adding_package_dependencies_to_your_app&amp;lt;br&amp;gt;&lt;br /&gt;
Please note: Nielsen AppSDK is distributed through SPM as dynamic framework only.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Additional Resources for Swift Package Manager ==&lt;br /&gt;
For more information on [https://swift.org/package-manager/ Swift Package Manager] or How to integrate the package into an application [https://developer.apple.com/documentation/xcode/adding_package_dependencies_to_your_app here].&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>ColinBrown</name></author>
	</entry>
	<entry>
		<id>https://nielsentest.mywikis.net/w/index.php?title=Template:iOS_Prerequisites_and_Implementation_Overview&amp;diff=5931</id>
		<title>Template:iOS Prerequisites and Implementation Overview</title>
		<link rel="alternate" type="text/html" href="https://nielsentest.mywikis.net/w/index.php?title=Template:iOS_Prerequisites_and_Implementation_Overview&amp;diff=5931"/>
		<updated>2022-08-17T18:28:22Z</updated>

		<summary type="html">&lt;p&gt;ColinBrown: /* How to obtain the NielsenAppApi.Framework */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Prerequisites ==&lt;br /&gt;
Before you start the integration, you will need:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;width: 15%;&amp;quot; | Item&lt;br /&gt;
! Description&lt;br /&gt;
! Source&lt;br /&gt;
|-style=&amp;quot;background-color:#d0f6f8;&amp;quot;&lt;br /&gt;
 || '''App ID (appid)''' || Unique ID assigned to the player/site and configured by product. || Provided by Nielsen&lt;br /&gt;
|-style=&amp;quot;background-color:#d0f6f8;&amp;quot;&lt;br /&gt;
 || '''Nielsen SDK''' || Includes SDK frameworks and '''sample implementation'''; ''See [[iOS SDK Release Notes]]'' || [[Special:Downloads|Download]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
If need App ID(s) or our SDKs, feel free to reach out to us and we will be happy to help you get started.&lt;br /&gt;
Refer to [[Digital Measurement Onboarding]] guide for information on how to get a Nielsen App SDK and appid.&lt;br /&gt;
&lt;br /&gt;
==  Implementation ==&lt;br /&gt;
Version 8 of the Nielsen App SDK will come in three versions. One that is enabled to work with the App Tracking Transparency Framework, another version that does not use the Ad Framework, and a version for Kids Apps or where noID is required. &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
! SDK Flavor&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| '''iOS Ad Version'''&lt;br /&gt;
|* Opt-In and Opt-Out functionality managed by the [https://developer.apple.com/documentation/apptrackingtransparency AppTrackingTransparency framework] . '''(Preferred approach)''' &amp;lt;br /&amp;gt;* The Nielsen SDK will attempt to collect the IDFA (Id for Advertisers) on the device.&amp;lt;br&amp;gt; * For iOS14+, if the value returned is &amp;lt;code&amp;gt;ATTrackingManager.AuthorizationStatus.authorized&amp;lt;/code&amp;gt;.&amp;lt;br&amp;gt;*  If the device is running iOS12 or iOS13, the Limit Ad Tracking setting is requested.&lt;br /&gt;
|-&lt;br /&gt;
| '''iOS No Ad Framework'''&lt;br /&gt;
|* Without the Ad Framework, the Nielsen SDK cannot read the IDFA, so it will attempt to retrieve the '''IDFV'''.&amp;lt;br /&amp;gt;* The [https://developer.apple.com/documentation/uikit/uidevice/1620059-identifierforvendor ID for Vendors (IDFV)], may be used for analytics across apps from the same content provider.&amp;lt;br /&amp;gt;* The developer is required to present the User Choice Opt Out page which is described in the [[DCR_Video_iOS_SDK#User_Choice|Privacy Section]].&lt;br /&gt;
|-&lt;br /&gt;
| '''iOS SDK noID'''&lt;br /&gt;
|* This version of the Nielsen SDK is perfect for Kid apps, or where no ID is required.&amp;lt;br&amp;gt;* Please review the [https://engineeringportal.nielsen.com//docs/DCR_Video_Android_SDK#Special_Note_Regarding_Apps_in_the_Kids_Category Opt Out Requirement].&lt;br /&gt;
|}&lt;br /&gt;
=== How to obtain the NielsenAppApi.Framework ===&lt;br /&gt;
The Nielsen AppSDK can either be downloaded directly or can be integrated directly within an application through the use of CocoaPods. We recommend using the CocoaPods-based integration whenever possible to ensure you maintain the most recent changes and enhancements to the Nielsen libraries.&lt;br /&gt;
* [[Digital_Measurement_iOS_Artifactory_Guide|iOS Package Dependency Guides (CocoaPods, Carthage, Swift Package Manager)]]&lt;br /&gt;
* [[Special:Downloads|Select to Download Directly]]&lt;br /&gt;
* [[DCR_Video_iOS_SDK_xcframework|Using the XCFramework bundle]]&lt;/div&gt;</summary>
		<author><name>ColinBrown</name></author>
	</entry>
	<entry>
		<id>https://nielsentest.mywikis.net/w/index.php?title=Template:iOS_Prerequisites_and_Implementation_Overview&amp;diff=5930</id>
		<title>Template:iOS Prerequisites and Implementation Overview</title>
		<link rel="alternate" type="text/html" href="https://nielsentest.mywikis.net/w/index.php?title=Template:iOS_Prerequisites_and_Implementation_Overview&amp;diff=5930"/>
		<updated>2022-08-17T18:27:53Z</updated>

		<summary type="html">&lt;p&gt;ColinBrown: /* How to obtain the NielsenAppApi.Framework */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Prerequisites ==&lt;br /&gt;
Before you start the integration, you will need:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;width: 15%;&amp;quot; | Item&lt;br /&gt;
! Description&lt;br /&gt;
! Source&lt;br /&gt;
|-style=&amp;quot;background-color:#d0f6f8;&amp;quot;&lt;br /&gt;
 || '''App ID (appid)''' || Unique ID assigned to the player/site and configured by product. || Provided by Nielsen&lt;br /&gt;
|-style=&amp;quot;background-color:#d0f6f8;&amp;quot;&lt;br /&gt;
 || '''Nielsen SDK''' || Includes SDK frameworks and '''sample implementation'''; ''See [[iOS SDK Release Notes]]'' || [[Special:Downloads|Download]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
If need App ID(s) or our SDKs, feel free to reach out to us and we will be happy to help you get started.&lt;br /&gt;
Refer to [[Digital Measurement Onboarding]] guide for information on how to get a Nielsen App SDK and appid.&lt;br /&gt;
&lt;br /&gt;
==  Implementation ==&lt;br /&gt;
Version 8 of the Nielsen App SDK will come in three versions. One that is enabled to work with the App Tracking Transparency Framework, another version that does not use the Ad Framework, and a version for Kids Apps or where noID is required. &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
! SDK Flavor&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| '''iOS Ad Version'''&lt;br /&gt;
|* Opt-In and Opt-Out functionality managed by the [https://developer.apple.com/documentation/apptrackingtransparency AppTrackingTransparency framework] . '''(Preferred approach)''' &amp;lt;br /&amp;gt;* The Nielsen SDK will attempt to collect the IDFA (Id for Advertisers) on the device.&amp;lt;br&amp;gt; * For iOS14+, if the value returned is &amp;lt;code&amp;gt;ATTrackingManager.AuthorizationStatus.authorized&amp;lt;/code&amp;gt;.&amp;lt;br&amp;gt;*  If the device is running iOS12 or iOS13, the Limit Ad Tracking setting is requested.&lt;br /&gt;
|-&lt;br /&gt;
| '''iOS No Ad Framework'''&lt;br /&gt;
|* Without the Ad Framework, the Nielsen SDK cannot read the IDFA, so it will attempt to retrieve the '''IDFV'''.&amp;lt;br /&amp;gt;* The [https://developer.apple.com/documentation/uikit/uidevice/1620059-identifierforvendor ID for Vendors (IDFV)], may be used for analytics across apps from the same content provider.&amp;lt;br /&amp;gt;* The developer is required to present the User Choice Opt Out page which is described in the [[DCR_Video_iOS_SDK#User_Choice|Privacy Section]].&lt;br /&gt;
|-&lt;br /&gt;
| '''iOS SDK noID'''&lt;br /&gt;
|* This version of the Nielsen SDK is perfect for Kid apps, or where no ID is required.&amp;lt;br&amp;gt;* Please review the [https://engineeringportal.nielsen.com//docs/DCR_Video_Android_SDK#Special_Note_Regarding_Apps_in_the_Kids_Category Opt Out Requirement].&lt;br /&gt;
|}&lt;br /&gt;
=== How to obtain the NielsenAppApi.Framework ===&lt;br /&gt;
The Nielsen AppSDK can either be downloaded directly or can be integrated directly within an application through the use of CocoaPods. We recommend using the CocoaPods-based integration whenever possible to ensure you maintain the most recent changes and enhancements to the Nielsen libraries.&lt;br /&gt;
* [[Digital_Measurement_iOS_Artifactory_Guide|iOS Package Dependency Guides (cocoapods, carthage, Swift Package Manager)]]&lt;br /&gt;
* [[Special:Downloads|Select to Download Directly]]&lt;br /&gt;
* [[DCR_Video_iOS_SDK_xcframework|Using the XCFramework bundle]]&lt;/div&gt;</summary>
		<author><name>ColinBrown</name></author>
	</entry>
	<entry>
		<id>https://nielsentest.mywikis.net/w/index.php?title=US_DCR_%26_DTVR&amp;diff=5929</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=5929"/>
		<updated>2022-08-09T20:08:02Z</updated>

		<summary type="html">&lt;p&gt;ColinBrown: /* SDK - Static */&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;
|-&lt;br /&gt;
! style=&amp;quot;width: 90px;&amp;quot; |&lt;br /&gt;
! style=&amp;quot;width: 42%;&amp;quot; | General Reference&lt;br /&gt;
!&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;7&amp;quot; | {{SmallIcon|DigitalIcon.png}}&lt;br /&gt;
| '''[[Digital Measurement Onboarding]]'''&lt;br /&gt;
| '''[[Digital Measurement Metadata]]'''&lt;br /&gt;
|-&lt;br /&gt;
| '''[[Digital Measurement Testing]]'''&lt;br /&gt;
| '''[[Digital Measurement Interruption Scenarios]]'''&lt;br /&gt;
|-&lt;br /&gt;
| '''[[Digital Measurement FAQ]]'''&lt;br /&gt;
| '''[[iOS SDK App Privacy|App Privacy Details for App Store]]'''&lt;br /&gt;
|-&lt;br /&gt;
| '''[[Digital Pre-Certification Checklist App SDK]]'''&lt;br /&gt;
| '''[[Digital Pre-Certification Checklist Browser SDK]]'''&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== 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;7&amp;quot; | {{SmallIcon|SDKIcon.png|alt=SDK}}&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | {{OSIcon|VideoIcon.png|alt=Video}}&lt;br /&gt;
| {{OSIcon|macOSIcon.png|alt=iOS}}&lt;br /&gt;
| '''[[DCR Video iOS SDK]]'''&lt;br /&gt;
| '''[[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;
&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;8&amp;quot; | {{SmallIcon|SDKIcon.png|alt=SDK}}&lt;br /&gt;
| rowspan=&amp;quot;8&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;
&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|macOSIcon.png|alt=iOS}}&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;/div&gt;</summary>
		<author><name>ColinBrown</name></author>
	</entry>
	<entry>
		<id>https://nielsentest.mywikis.net/w/index.php?title=DTVR_Browser_SDK&amp;diff=5928</id>
		<title>DTVR Browser SDK</title>
		<link rel="alternate" type="text/html" href="https://nielsentest.mywikis.net/w/index.php?title=DTVR_Browser_SDK&amp;diff=5928"/>
		<updated>2022-08-09T20:07:36Z</updated>

		<summary type="html">&lt;p&gt;ColinBrown: /* Prerequisites */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Breadcrumb|}} {{Breadcrumb|Digital}} {{Breadcrumb|US DCR &amp;amp; DTVR}}   {{CurrentBreadcrumb}}&lt;br /&gt;
[[Category:Digital]]&lt;br /&gt;
&lt;br /&gt;
== Prerequisites ==&lt;br /&gt;
Before you start the integration, you will need:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;width: 30px;&amp;quot; |&lt;br /&gt;
! style=&amp;quot;width: 15%;&amp;quot; | Item&lt;br /&gt;
! Description&lt;br /&gt;
! Source&lt;br /&gt;
|-style=&amp;quot;background-color:#d0f6f8;&amp;quot;&lt;br /&gt;
|| ☑ || '''App ID (appid)''' || Unique ID assigned to the player/site and configured by product. || Contact Nielsen&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Release Notes ==&lt;br /&gt;
The release notes on the Browser SDK can be located here: '''[[Browser SDK Release Notes|Release Notes]]'''&lt;br /&gt;
&lt;br /&gt;
== Configure SDK ==&lt;br /&gt;
There are two steps required for configuring your SDK: 1. Add Static Queue Snippet and 2. Create SDK Instance.&lt;br /&gt;
&lt;br /&gt;
== Add Static Queue Snippet ==&lt;br /&gt;
Add the following script tag to your website:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
    ! function(t, n) {&lt;br /&gt;
        t[n] = t[n] || {&lt;br /&gt;
            nlsQ: function(e, o, c, r, s, i) {&lt;br /&gt;
                return s = t.document,&lt;br /&gt;
                    r = s.createElement(&amp;quot;script&amp;quot;),&lt;br /&gt;
                    r.async = 1,&lt;br /&gt;
                    r.src = (&amp;quot;http:&amp;quot; === t.location.protocol ? &amp;quot;http:&amp;quot; : &amp;quot;https:&amp;quot;) + &amp;quot;//cdn-gl.imrworldwide.com/conf/&amp;quot; + e + &amp;quot;.js#name=&amp;quot; + o + &amp;quot;&amp;amp;ns=&amp;quot; + n,&lt;br /&gt;
                    i = s.getElementsByTagName(&amp;quot;script&amp;quot;)[0],&lt;br /&gt;
                    i.parentNode.insertBefore(r, i),&lt;br /&gt;
                    t[n][o] = t[n][o] || {&lt;br /&gt;
                        g: c || {},&lt;br /&gt;
                        ggPM: function(e, c, r, s, i) {&lt;br /&gt;
                            (t[n][o].q = t[n][o].q || []).push([e, c, r, s, i])&lt;br /&gt;
                        }&lt;br /&gt;
                    }, t[n][o]&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
    (window, &amp;quot;NOLBUNDLE&amp;quot;);&lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The static queue snippet allows the SDK APIs to be called while the actual SDK and configuration file are still being downloaded. Since the queue is able to capture all API calls before the download completes, there is no wait time. Once the SDK is available, the API calls will transition from directing to the queue to the SDK seamlessly.&lt;br /&gt;
&lt;br /&gt;
== Create SDK Instance ==&lt;br /&gt;
To initialize the SDK, you will need to create an SDK instance by making the initialization call:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
NOLBUNDLE.nlsQ(&amp;quot;&amp;lt;apid&amp;gt;&amp;quot;, &amp;quot;&amp;lt;instanceName&amp;gt;&amp;quot;,{nol_sdkDebug: &amp;quot;debug&amp;quot;})&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
When creating your instance, you will need to pass three parameter values. The available parameters are listed in the table below:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Parameters !! Description !! Value !! Required? (Y/N)&lt;br /&gt;
|-&lt;br /&gt;
| apid || UniqueID assigned to player/site. &lt;br /&gt;
|| &amp;quot;XXXXXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXX&amp;quot; || Yes&lt;br /&gt;
|-&lt;br /&gt;
| instanceName || User-defined string value for describing the player/site. || Client specified || Yes&lt;br /&gt;
|-&lt;br /&gt;
| nol_sdkDebug:&amp;quot;debug&amp;quot; || Enables Debug Mode which allows output to be viewed in console. || &amp;quot;{nol_sdkDebug: &amp;quot;debug&amp;quot;}&amp;quot; || No&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Example SDK Initialization ==&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;, {nol_sdkDebug: &amp;quot;debug&amp;quot;});&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
When the initialization call is made, a unique static configuration file, &amp;lt;apid&amp;gt;.js, will be downloaded based on your apid and cached on the user's browser.&lt;br /&gt;
&lt;br /&gt;
Once the configuration is downloaded, the SDK itself will be downloaded and initialized. All SDK modules are included in one file: &amp;quot;nlsSDK600.bundle.min.js&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
=== Example SDK Initialization ===&lt;br /&gt;
Your configuration should include the Static Queue Snippet and an SDK Instance for your unique App ID as shown in the example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
//Add Static Queue Snippet&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
    ! function(t, n) {&lt;br /&gt;
        t[n] = t[n] || {&lt;br /&gt;
            nlsQ: function(e, o, c, r, s, i) {&lt;br /&gt;
                return s = t.document,&lt;br /&gt;
                    r = s.createElement(&amp;quot;script&amp;quot;),&lt;br /&gt;
                    r.async = 1,&lt;br /&gt;
                    r.src = (&amp;quot;http:&amp;quot; === t.location.protocol ? &amp;quot;http:&amp;quot; : &amp;quot;https:&amp;quot;) + &amp;quot;//cdn-gl.imrworldwide.com/conf/&amp;quot; + e + &amp;quot;.js#name=&amp;quot; + o + &amp;quot;&amp;amp;ns=&amp;quot; + n,&lt;br /&gt;
                    i = s.getElementsByTagName(&amp;quot;script&amp;quot;)[0],&lt;br /&gt;
                    i.parentNode.insertBefore(r, i),&lt;br /&gt;
                    t[n][o] = t[n][o] || {&lt;br /&gt;
                        g: c || {},&lt;br /&gt;
                        ggPM: function(e, c, r, s, i) {&lt;br /&gt;
                            (t[n][o].q = t[n][o].q || []).push([e, c, r, s, i])&lt;br /&gt;
                        }&lt;br /&gt;
                    }, t[n][o]&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
    (window, &amp;quot;NOLBUNDLE&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
//Create SDK Instance&lt;br /&gt;
var nSdkInstance = NOLBUNDLE.nlsQ(&amp;quot;XXXXXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXX&amp;quot;, &amp;quot;nlsnInstance&amp;quot;, {nol_sdkDebug: &amp;quot;debug&amp;quot;});&lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Create Metadata Objects ===&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
There are two types of asset metadata:&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
*content: identify video&lt;br /&gt;
*ad: identify each ad&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
The metadata received for each asset is used for classification and reporting.&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
Metadata can be passed through key-values using the Nielsen reserved keys. User will need to set up content and ad objects with the required Nielsen keys as shown in the sample code below.&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Content Metadata ==&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
Content metadata should remain constant throughout the completion of an episode or live stream.&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Key !! Description !!	Values	 !! Required&lt;br /&gt;
|-&lt;br /&gt;
| type ||	type of asset	|| &amp;quot;content&amp;quot;	|| ✓&lt;br /&gt;
|-&lt;br /&gt;
| adModel	|| linear vs dynamic ad model	|| * 1) - Linear – matches TV ad load * 2) Dynamic – Dynamic Ad Insertion (DAI)     || ✓&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Example Content Object'''&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot;&amp;gt; var contentMetadataObject =&lt;br /&gt;
{  &lt;br /&gt;
  type: 'content',&lt;br /&gt;
  adModel: '1'&lt;br /&gt;
};&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Ad Metadata Object ===&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
PLEASE NOTE: The Ad Metadata Object is only required in a DCR/DTVR hybrid implementation.&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Keys	!! Description	!! Values	!! Required&lt;br /&gt;
|-&lt;br /&gt;
| type 	|| type of Ad	||  &amp;lt;code&amp;gt;'preroll'&amp;lt;/code&amp;gt;,  &amp;lt;code&amp;gt;'midroll'&amp;lt;/code&amp;gt;,  &amp;lt;code&amp;gt;'postroll'&amp;lt;/code&amp;gt; &amp;lt;br&amp;gt; &amp;lt;code&amp;gt;'ad'&amp;lt;/code&amp;gt;  - If specific type can not be identified.||	&lt;br /&gt;
|-&lt;br /&gt;
| assetid || unique ID assigned to ad || custom (no [[Special Characters]]) || &lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Example Ad Object'''&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot;&amp;gt; var adMetadataObject = &lt;br /&gt;
{  &lt;br /&gt;
  assetid: 'AD-1',&lt;br /&gt;
  type:    'preroll'&lt;br /&gt;
};&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== SDK Events ===&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Event !!	Parameter	!! Description&lt;br /&gt;
|-&lt;br /&gt;
| 'loadMetadata'	|| content/Ad metadata object	|| Needs to be called at the beginning of each asset to pass type and adModel.&lt;br /&gt;
|-&lt;br /&gt;
| 'sendID3'	|| Used to send the ID3 tag payload retrieved from the stream || Needs to be called at the beginning of playback&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Configure and fire API calls ==&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
The syntax for firing events is:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;nSdkInstance.ggPM(&amp;quot;event&amp;quot;, parameter object);&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
Event is passed in parameter 1 and the argument is passed in parameter 2.&lt;br /&gt;
&lt;br /&gt;
=== Configure API calls - loadMetadata ===&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
Use [[loadMetadata (Browser)]] to pass the metadata object. The data must be passed as a JSON string.&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;nSdkInstance.ggPM(&amp;quot;loadMetadata&amp;quot;, metadataObject);&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Configure API calls - sendID3 ===&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
Use [[sendID3 (Browser)]] to send ID3 payload of the HLS content being played. This will allow the ID3 payload to be sent every time an ID3 packet is received (approximately, once in every 10 seconds).&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;nSdkInstance.ggPM(&amp;quot;sendID3&amp;quot;, ID3_Payload);&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
==== Sample ID3 tags ====&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight&amp;gt;&lt;br /&gt;
www.nielsen.com/X100zdCIGeIlgZnkYj6UvQ==/X100zdCIGeIlgZnkYj6UvQ==/AAAB2Jz2_k74GXSzx4npHuI_&amp;lt;wbr /&amp;gt;JwJd3QSUpW30rDkGTcbHEzIMWleCzM-uvNOP9fzJcQMWQLJqzXMCAxParOb5sGijSV9dNM3QiBniJYGZ5GI-lL1fXTTN0IgZ4iWBmeRiPpS9AAAAAAAAAAAAAAAAAAAAAFJWFM5SVhTONNU=/00000/00000/00&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight&amp;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&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;ID3_Payload&amp;lt;/code&amp;gt; is the container to pass the retrieved ID3 tag from the streaming. 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 [[Browser SDK API Reference#Retrieving ID3 Tags|Browser SDK API Reference - Retrieving ID3 Tags]] for more information.&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
Refer to [[Browser SDK API Reference#Retrieving ID3 Tags|Browser SDK API Reference - Retrieving ID3 Tags]] section to know more details.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
&lt;br /&gt;
=== Configure API calls - end ===&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
Call [[end (Browser)]] only at the end of playback, or if the stream is interrupted.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;nSdkInstance.ggPM(&amp;quot;end&amp;quot;, playhead);&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== SDK DTVR Event Sequence ==&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
The sample event lifecycle can be used as a reference for identifying the order for calling events.&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
nSdkInstance.ggPM('loadMetadata', contentMetadataObject); &lt;br /&gt;
nSdkInstance.ggPM('sendID3', ID3_Payload); //call sendID3 every 10 seconds and stop calling during any playback interruptions&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Template:Browser_Privacy_and_Opt-Out}}&lt;br /&gt;
&lt;br /&gt;
== Going Live ==&lt;br /&gt;
After the integration has been certified, users will need to make a couple of updates to the initialization call to ensure that player will be measured properly.&lt;br /&gt;
Disable debug logging by deleting {nol_sdkDebug: 'DEBUG'} from initialization call.&lt;br /&gt;
&lt;br /&gt;
'''Example Production Initialization Call'''&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;, { optout: &amp;quot;false&amp;quot;});&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>ColinBrown</name></author>
	</entry>
	<entry>
		<id>https://nielsentest.mywikis.net/w/index.php?title=DCR_Video_Browser_SDK&amp;diff=5927</id>
		<title>DCR Video Browser SDK</title>
		<link rel="alternate" type="text/html" href="https://nielsentest.mywikis.net/w/index.php?title=DCR_Video_Browser_SDK&amp;diff=5927"/>
		<updated>2022-08-09T20:07:01Z</updated>

		<summary type="html">&lt;p&gt;ColinBrown: /* Prerequisites */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Breadcrumb|}} {{Breadcrumb|Digital}} {{Breadcrumb|US DCR &amp;amp; DTVR}}  {{CurrentBreadcrumb}}&lt;br /&gt;
[[Category:Digital]]&lt;br /&gt;
&lt;br /&gt;
== Prerequisites ==&lt;br /&gt;
Before you start the integration, you will need:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;width: 30px;&amp;quot; |&lt;br /&gt;
! style=&amp;quot;width: 15%;&amp;quot; | Item&lt;br /&gt;
! Description&lt;br /&gt;
! Source&lt;br /&gt;
|-style=&amp;quot;background-color:#d0f6f8;&amp;quot;&lt;br /&gt;
|| ☑ || '''App ID (appid)''' || Unique ID assigned to the player/site and configured by product. || Contact Nielsen&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Release Notes ==&lt;br /&gt;
The release notes on the Browser SDK can be located here: '''[[Browser SDK Release Notes|Release Notes]]'''&lt;br /&gt;
&lt;br /&gt;
== Configure SDK ==&lt;br /&gt;
There are two steps required for configuring the SDK:&lt;br /&gt;
*Add Static Queue Snippet&lt;br /&gt;
*Create SDK Instance&lt;br /&gt;
&lt;br /&gt;
=== Static Queue Snippet ===&lt;br /&gt;
Add the following script tag to the website:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
!function(t,n)&lt;br /&gt;
{&lt;br /&gt;
  t[n]=t[n]||&lt;br /&gt;
  {&lt;br /&gt;
    nlsQ:function(e,o,c,r,s,i)&lt;br /&gt;
    {&lt;br /&gt;
     return s=t.document,&lt;br /&gt;
     r=s.createElement(&amp;quot;script&amp;quot;),&lt;br /&gt;
     r.async=1,&lt;br /&gt;
     r.src=(&amp;quot;http:&amp;quot;===t.location.protocol?&amp;quot;http:&amp;quot;:&amp;quot;https:&amp;quot;)+&amp;quot;//cdn-gl.imrworldwide.com/conf/&amp;quot;+e+&amp;quot;.js#name=&amp;quot;+o+&amp;quot;&amp;amp;ns=&amp;quot;+n,&lt;br /&gt;
     i=s.getElementsByTagName(&amp;quot;script&amp;quot;)[0],&lt;br /&gt;
     i.parentNode.insertBefore(r,i),&lt;br /&gt;
     t[n][o]=t[n][o]||{g:c||{},&lt;br /&gt;
     ggPM:function(e,c,r,s,i){(t[n][o].q=t[n][o].q||[]).push([e,c,r,s,i])}},t[n][o]&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
(window,&amp;quot;NOLBUNDLE&amp;quot;);&lt;br /&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;false&amp;quot;&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;
The static queue snippet allows the SDK APIs to be called while the actual SDK and configuration file are still being downloaded. As the queue can capture all API calls before the download completes, there is no wait time. Once the SDK is available, the API calls will transition from directing to the queue to the SDK seamlessly.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;For DCR static, BSDK cannot be run in an iframe because the blur/focus events of the parent page may not propagate to the iframe. The iframe events typically trigger when the iframe itself is clicked. The BSDK is dependent on the blur/focus events of the browser to detect active viewing of the page. Because the root page events do not propagate to the iframe, this would impact incorrect DCR static crediting.&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Create SDK Instance===&lt;br /&gt;
To initialize the SDK, create an SDK instance by making the initialization call:&lt;br /&gt;
&lt;br /&gt;
==== Initialization API Call ====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
NOLBUNDLE.nlsQ(&amp;quot;&amp;lt;apid&amp;gt;&amp;quot;, &amp;quot;&amp;lt;instanceName&amp;gt;&amp;quot;,{nol_sdkDebug: &amp;quot;debug&amp;quot;});&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
When creating an instance, pass the following values: (&amp;lt;code&amp;gt;nol_sdkDebug&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;optout&amp;lt;/code&amp;gt; are optional)&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Parameter	!! Description	!! Values&lt;br /&gt;
|-&lt;br /&gt;
| apid	|| Unique ID assigned to player/site ||	'PXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX'&lt;br /&gt;
|-&lt;br /&gt;
|instanceName ||	Name of SDK instance ||	&amp;quot;any string value&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| nol_sdkDebug	|| Enables Nielsen console logging if desired. 	|| &amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
{nol_sdkDebug: &amp;quot;debug&amp;quot;} &lt;br /&gt;
{nol_sdkDebug: &amp;quot;info&amp;quot;}&lt;br /&gt;
{nol_sdkDebug: &amp;quot;warn&amp;quot;}&lt;br /&gt;
{nol_sdkDebug: &amp;quot;true&amp;quot;}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|optout || Optional: OptOut global parameter. || &amp;lt;code&amp;gt;1/0&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;true/false&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Example SDK Initialization ====&lt;br /&gt;
When the initialization call is made, a unique static configuration file, &amp;lt;apid&amp;gt;.js, will be downloaded based on the apid and will be cached on the user’s browser.&lt;br /&gt;
&lt;br /&gt;
Once the configuration is downloaded, the SDK itself will be downloaded and initialized. All SDK modules are included in one file: “nlsSDK600.bundle.min.js”.&lt;br /&gt;
&lt;br /&gt;
More information on OptOut Parameter under [[DCR Video Browser SDK#Privacy_and_Opt-Out|Privacy and Opt-Out.]]&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
==== Example SDK Initialization with Viewability ====&lt;br /&gt;
If you decide to implement the Nielsen Viewability Module, the SDK will track the viewability of the targeted player/element, log the viewable percentage and record in seconds the time the player/element was in that viewable state.  The only additional information required is the HTML element ID of the element being tracked (which is passed during SDK Initialization), and the volume level (passed as an event).&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;false&amp;quot;&lt;br /&gt;
});&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If no &amp;quot;volume&amp;quot; event is passed, a default value of '1' will be used. (IE: 100%).  If the volume level is adjusted, the modified value can be passed to the SDK using the standard ggPM() API along with the new &amp;quot;volume&amp;quot; event.&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
nSdkInstance.ggPM(&amp;quot;volume&amp;quot;, &amp;lt;volume level&amp;gt;);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Event Name	!! Event #	!! Purpose !! Possible Values !!Example&lt;br /&gt;
|-&lt;br /&gt;
| volume	|| 61  ||ggPM event that will allow clients to pass in the volume levels.	||Supports decimal values in range from 0 - 1||instance.ggPM(&amp;quot;61&amp;quot;, 0); =&amp;gt; muted&lt;br /&gt;
instance.ggPM(&amp;quot;61&amp;quot;, .5) =&amp;gt; not muted&lt;br /&gt;
intance.ggPM(&amp;quot;61&amp;quot;, 1) =&amp;gt; not muted&lt;br /&gt;
|}&lt;br /&gt;
Sample:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
nSdkInstance.ggPM(&amp;quot;volume&amp;quot;, 0); // muted&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Example SDK Configuration ===&lt;br /&gt;
&lt;br /&gt;
The configuration should include the Static Queue Snippet and an SDK Instance for an unique App ID as shown in the example:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;html&amp;quot;&amp;gt;&amp;lt;script type=&amp;quot;text/javascript&amp;quot;&amp;gt;&lt;br /&gt;
// Add Static Queue Snippet&lt;br /&gt;
 !function(t,n)&lt;br /&gt;
{&lt;br /&gt;
  t[n]=t[n]||&lt;br /&gt;
  {&lt;br /&gt;
    nlsQ:function(e,o,c,r,s,i)&lt;br /&gt;
    {&lt;br /&gt;
     return s=t.document,&lt;br /&gt;
     r=s.createElement(&amp;quot;script&amp;quot;),&lt;br /&gt;
     r.async=1,&lt;br /&gt;
     r.src=(&amp;quot;http:&amp;quot;===t.location.protocol?&amp;quot;http:&amp;quot;:&amp;quot;https:&amp;quot;)+&amp;quot;//cdn-gl.imrworldwide.com/conf/&amp;quot;+e+&amp;quot;.js#name=&amp;quot;+o+&amp;quot;&amp;amp;ns=&amp;quot;+n,&lt;br /&gt;
     i=s.getElementsByTagName(&amp;quot;script&amp;quot;)[0],&lt;br /&gt;
     i.parentNode.insertBefore(r,i),&lt;br /&gt;
     t[n][o]=t[n][o]||{g:c||{},&lt;br /&gt;
     ggPM:function(e,c,r,s,i){(t[n][o].q=t[n][o].q||[]).push([e,c,r,s,i])}},t[n][o]&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
(window,&amp;quot;NOLBUNDLE&amp;quot;);&lt;br /&gt;
 &lt;br /&gt;
// Created SDK Instance&lt;br /&gt;
var nSdkInstance = NOLBUNDLE.nlsQ(&amp;quot;XXXXXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXX&amp;quot;, &amp;quot;nlsnInstance&amp;quot;, {nol_sdkDebug: &amp;quot;debug&amp;quot;});&lt;br /&gt;
&amp;lt;/script&amp;gt;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Create Metadata Objects ===&lt;br /&gt;
There are two types of asset metadata:&lt;br /&gt;
*content: identify video&lt;br /&gt;
*ad: identify each ad&lt;br /&gt;
&lt;br /&gt;
The metadata received for each asset is used for classification and reporting.&lt;br /&gt;
&lt;br /&gt;
Metadata can be passed through key-values using the Nielsen reserved keys. User will need to set up content and ad objects with the required Nielsen keys as shown in the sample code below.&lt;br /&gt;
&lt;br /&gt;
==== Content Metadata ====&lt;br /&gt;
Content metadata should remain constant throughout the entirety of an episode/clip including when ads play.&lt;br /&gt;
{{DCR Content Metadata}}&lt;br /&gt;
&lt;br /&gt;
==== Example Content Object ====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
var contentMetadataObject =&lt;br /&gt;
{  &lt;br /&gt;
  type:           'content',&lt;br /&gt;
  assetid:        'VID-123456',&lt;br /&gt;
  program:        'program name',&lt;br /&gt;
  title:          'episode title with season and episode number',&lt;br /&gt;
  length:         'length in seconds',&lt;br /&gt;
  airdate:        '20210321 09:00:00',&lt;br /&gt;
  isfullepisode:  'y',&lt;br /&gt;
  adloadtype:     '2',&lt;br /&gt;
  segB:           'custom segment B', // optional&lt;br /&gt;
  segC:           'custom segment C', // optional&lt;br /&gt;
  crossId1:       'Standard Episode ID', // optional&lt;br /&gt;
  crossId2:       'Content Originator' //optional&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Ad Metadata ===&lt;br /&gt;
The Ad Metadata (if applicable) should be passed for each individual ad.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Keys	!! Description	!! Values	!! Required&lt;br /&gt;
|-&lt;br /&gt;
| type 	|| type of Ad	||  &amp;lt;code&amp;gt;'preroll'&amp;lt;/code&amp;gt;,  &amp;lt;code&amp;gt;'midroll'&amp;lt;/code&amp;gt;,  &amp;lt;code&amp;gt;'postroll'&amp;lt;/code&amp;gt; &amp;lt;br&amp;gt; &amp;lt;code&amp;gt;'ad'&amp;lt;/code&amp;gt;  - If specific type can not be identified.||	✓&lt;br /&gt;
|-&lt;br /&gt;
| assetid ||	unique ID assigned to Ad	|| custom &amp;lt;br&amp;gt;(no [[Special Characters]])	|| ✓&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Example Ad Object ====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
var adMetadataObject = &lt;br /&gt;
{  &lt;br /&gt;
  type:    'preroll',&lt;br /&gt;
  assetid: 'AD-1'&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;blockquote&amp;gt; URL Character Limit: There is a URL character limit of 2K characters due to browser limitations. Exceeding this value could impair data delivery on particular browsers. &amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Call Nielsen APIs ====&lt;br /&gt;
The method for calling events is ggPM().&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
nSdkInstance.ggPM('event', parameter, ...);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Interrupt Scenarios ==&lt;br /&gt;
&lt;br /&gt;
=== Pause Event ===&lt;br /&gt;
The setPlayheadPostion event is used for handling pause. To indicate pause, stop passing the playhead position to the SDK. Once the content resumes, begin sending the playhead again with the correct playhead value.&lt;br /&gt;
&lt;br /&gt;
=== Other Interrupt Scenarios ===&lt;br /&gt;
The following possible browser interruption scenarios must be handled:&lt;br /&gt;
&lt;br /&gt;
* Browser/Tab close&lt;br /&gt;
* Leaving the page to another destination&lt;br /&gt;
* Pressing the stop button&lt;br /&gt;
* Network Loss&lt;br /&gt;
&lt;br /&gt;
There are many cases where the player itself has the ability to detect such situations. If not, these interruption scenarios can be handled through JavaScript. The events that are called will depend on the asset being played (e.g. midroll vs. content).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
window.addEventListener('beforeunload', function(event) &lt;br /&gt;
{&lt;br /&gt;
  // Only inside a midroll indicate &amp;lt;stop&amp;gt; for the ad&lt;br /&gt;
  nSdkInstance.ggPM('stop', playheadPosition);&lt;br /&gt;
  &lt;br /&gt;
  // Indicate &amp;lt;end&amp;gt; and &amp;lt;stop&amp;gt; for the content&lt;br /&gt;
  nSdkInstance.ggPM('end', playheadPosition);&lt;br /&gt;
  nSdkInstance.ggPM('stop', playheadPosition);&lt;br /&gt;
});&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;'''Note:''' User may need to add code to support specific browser versions (e.g. older versions of Internet Explorer).&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== SDK Events ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Event !!	Parameter	!! Description&lt;br /&gt;
|-&lt;br /&gt;
| 'loadMetadata'	|| content/ad metadata object	|| Needs to be called at the beginning of each asset&lt;br /&gt;
|-&lt;br /&gt;
| 'setPlayheadPosition'	|| playhead position as integer&amp;lt;br/&amp;gt;&lt;br /&gt;
VOD: || current position in seconds &amp;lt;br/&amp;gt;&lt;br /&gt;
Live: current Unix timestamp (seconds since Jan-1-1970 UTC) &amp;lt;br/&amp;gt;&lt;br /&gt;
Note: 'setPlayheadPosition' has to be called every second&lt;br /&gt;
||&lt;br /&gt;
Pass playhead position every second during playback&lt;br /&gt;
|-&lt;br /&gt;
| 'stop' ||	playhead position in seconds	|| Call when content or ads complete playing and pass playhead position&lt;br /&gt;
|-&lt;br /&gt;
| 'end'	|| playhead position in seconds	|| Call when the current video asset completes playback and pass the playhead position. &amp;lt;br/&amp;gt;&lt;br /&gt;
Example: At the end of the content stream, if the user switches to another piece of content, when the browser is refreshed or closed.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== SDK Playhead Event Sequence ==&lt;br /&gt;
The sample event lifecycles can be used as a reference for identifying the order for calling events.&lt;br /&gt;
&lt;br /&gt;
=== Content Playback ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
// START OF STREAM&lt;br /&gt;
nSdkInstance.ggPM('loadMetadata', contentMetadataObject); &lt;br /&gt;
 &lt;br /&gt;
// CONTENT PLAYS&lt;br /&gt;
nSdkInstance.ggPM('setPlayheadPosition', playheadPosition);&lt;br /&gt;
//  &lt;br /&gt;
//   pass playhead every second&lt;br /&gt;
//   &lt;br /&gt;
nSdkInstance.ggPM('setPlayheadPosition', playheadPosition);&lt;br /&gt;
&lt;br /&gt;
// END OF STREAM&lt;br /&gt;
nSdkInstance.ggPM('end', playheadPosition);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Content Playback with Ads ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
// START OF STREAM&lt;br /&gt;
nSdkInstance.ggPM('loadMetadata', contentMetadataObject); &lt;br /&gt;
 &lt;br /&gt;
// PREROLL&lt;br /&gt;
nSdkInstance.ggPM('loadMetadata', prerollMetadataObject);&lt;br /&gt;
nSdkInstance.ggPM('setPlayheadPosition', playheadPosition);&lt;br /&gt;
//  &lt;br /&gt;
//   pass playhead every second&lt;br /&gt;
//   &lt;br /&gt;
nSdkInstance.ggPM('setPlayheadPosition', playheadPosition);&lt;br /&gt;
nSdkInstance.ggPM('stop', playheadPosition);&lt;br /&gt;
 &lt;br /&gt;
// CONTENT&lt;br /&gt;
nSdkInstance.ggPM('loadMetadata', contentMetadataObject);&lt;br /&gt;
nSdkInstance.ggPM('setPlayheadPosition', playheadPosition);&lt;br /&gt;
//  &lt;br /&gt;
//   pass playhead every second&lt;br /&gt;
//   &lt;br /&gt;
nSdkInstance.ggPM('setPlayheadPosition', playheadPosition);&lt;br /&gt;
nSdkInstance.ggPM('stop', playheadPosition);&lt;br /&gt;
&lt;br /&gt;
// MIDROLL&lt;br /&gt;
nSdkInstance.ggPM('loadMetadata', midrollMetadataObject);&lt;br /&gt;
nSdkInstance.ggPM('setPlayheadPosition', playheadPosition);&lt;br /&gt;
//  &lt;br /&gt;
//   pass playhead every second&lt;br /&gt;
//   &lt;br /&gt;
nSdkInstance.ggPM('setPlayheadPosition', playheadPosition);&lt;br /&gt;
nSdkInstance.ggPM('stop', playheadPosition);&lt;br /&gt;
 &lt;br /&gt;
// CONTENT RESUMES&lt;br /&gt;
nSdkInstance.ggPM('loadMetadata', contentMetadataObject);&lt;br /&gt;
nSdkInstance.ggPM('setPlayheadPosition', playheadPosition);&lt;br /&gt;
//  &lt;br /&gt;
//   pass playhead every second&lt;br /&gt;
//   &lt;br /&gt;
nSdkInstance.ggPM('setPlayheadPosition', playheadPosition);&lt;br /&gt;
&lt;br /&gt;
// END OF STREAM&lt;br /&gt;
nSdkInstance.ggPM('setPlayheadPosition', playheadPosition);&lt;br /&gt;
nSdkInstance.ggPM('end', playheadPosition);&lt;br /&gt;
 &lt;br /&gt;
// POSTROLL&lt;br /&gt;
nSdkInstance.ggPM('loadmetadata', postrollMetadataObject);&lt;br /&gt;
nSdkInstance.ggPM('setPlayheadPosition', playheadPosition);&lt;br /&gt;
//  &lt;br /&gt;
//   pass playhead every second&lt;br /&gt;
//   &lt;br /&gt;
nSdkInstance.ggPM('setPlayheadPosition', playheadPosition);&lt;br /&gt;
nSdkInstance.ggPM('stop', playheadPosition);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
* 'setPlayheadPosition' is used for calculating duration and must be passed every second. The final playhead position must be sent for the current asset being played before calling 'stop', 'end', or 'loadmetadata'.&lt;br /&gt;
&lt;br /&gt;
* For Ad Pods, events must be called for each individual Ad. Each Ad playhead position should begin at ‘0’ when ad starts.&lt;br /&gt;
&lt;br /&gt;
* When content has resumed following an ad break, the playhead position update must continue where previous content segment left off. The playhead position should be passed as a rounded number with no decimals.&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Template:Browser_Privacy_and_Opt-Out}}&lt;br /&gt;
&lt;br /&gt;
== Going Live ==&lt;br /&gt;
After the integration has been certified, users will need to make a couple of updates to the initialization call to ensure that player will be measured properly.&lt;br /&gt;
Disable debug logging by deleting {nol_sdkDebug: 'DEBUG'} from initialization call.&lt;br /&gt;
&lt;br /&gt;
'''Example Production Initialization Call'''&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;, { optout: &amp;quot;false&amp;quot;});&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>ColinBrown</name></author>
	</entry>
	<entry>
		<id>https://nielsentest.mywikis.net/w/index.php?title=Mobile_DAR_Attributes_Requirements&amp;diff=5895</id>
		<title>Mobile DAR Attributes Requirements</title>
		<link rel="alternate" type="text/html" href="https://nielsentest.mywikis.net/w/index.php?title=Mobile_DAR_Attributes_Requirements&amp;diff=5895"/>
		<updated>2022-07-27T18:19:37Z</updated>

		<summary type="html">&lt;p&gt;ColinBrown: /* Additional DAR Tag Parameters for Mobile App Audience Measurement */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Breadcrumb|}} {{Breadcrumb|Digital}} {{Breadcrumb|Digital Ad Ratings}}  {{CurrentBreadcrumb}}&lt;br /&gt;
[[Category:Digital]]&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
The standard Nielsen Digital Ad Rating (DAR) tag only supports cookie based '''web browser''' viewing on PCs, MACs, and tablets/smartphone (web-browser). However, when ads are served to tablets/smartphones via native '''app-store applications''', the cookie based tag does not function correctly. Additional tag attributes are needed in order for audience reach measurement to function. Example tags are detailed later in this document.&lt;br /&gt;
&lt;br /&gt;
One way Nielsen clients can accomplish this is by the use of Nielsen’s native iOS/Android App SDK. Nielsen’s App SDK automatically adds these additional tag attributes to the standard cookie based webbrowser tag before the tag is forwarded on to the Nielsen census collection system. However, there is a significant portion of the publisher mobile app universe where it is either not feasible, or desirable to integrate Nielsen’s native App SDK into 3rd party applications.&lt;br /&gt;
&lt;br /&gt;
The purpose of this document is to detail the tag URL parameters required that are '''additional''' to the standard cookie based web-browser tag.&lt;br /&gt;
&lt;br /&gt;
The most critical additional parameter required is the insertion of the Advertising ID (IFA / IDFA / AdID) from the users device that has been exposed to the Ad creative.&lt;br /&gt;
&lt;br /&gt;
If you are reading this document as an Ad server representative then it is assumed that you have published a specification that mobile app publishers follow to pass the appropriate Advertising ID in the Ad request payload. Typically, your Ad server will then expand a macro or label with that value passed in the Ad request URL, insert into the DAR mobile app tag and redirect to Nielsen collections. See s. See  [[#Appendix A: Example Implementation]], figure 2 for an example tag workflow.&lt;br /&gt;
&lt;br /&gt;
The standard way of triggering a Digital Ad Ratings (DAR) tag on Mobile-App is for the publisher app to trigger (either directly or via Ad server) the tag upon Ad exposure to the user. i.e. a client-side initiated tag. If you wish to implement server-side dispatch of mobile in-app DAR tags then see additional section in this document titled '''server-side tag dispatch'''. Please read the rest of this document before reading the section on server-server.&lt;br /&gt;
&lt;br /&gt;
Once you have completed your integration, you will be required to submit to a short certification. See [[#Appendix B: Implementation, Testing &amp;amp; Certification]]. Certification also grants inclusion to the approved publisher and certified Ad server vendor list.&lt;br /&gt;
&lt;br /&gt;
'''Important Note:''' for 2018, the MRC has mandated a series of changes to audience measurement that will require additional tag events to be communicated to Nielsen so that we may compute duration weighting etc. You are strongly urged to contact your Nielsen client service representative to seek a briefing from Nielsen on the best technical methods for tagging in order to be compliant with these changes.&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
== Standard DAR Tag ==&lt;br /&gt;
The DAR tag is available as a 1x1 pixel. The following pixel/tag parameters must be specified for all DAR tags, 1x1, regardless of implementation type: browser, mobile browser, mobile app or connected device.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
! Tag Parameter&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| CI&lt;br /&gt;
| Client ID: the ID that is associated with the DAR account that processed tag data is associated with. Will always be hardcoded to a Nielsen generated value that comes from the Nielsen campaign management system&lt;br /&gt;
|- style=&amp;quot;background-color:#eff8ef;&amp;quot;&lt;br /&gt;
| AM&lt;br /&gt;
| Ad Server: an ad server participating on the campaign media-plan. This is an internal Nielsen generated value when the ad server is indicated on the campaign during setup&lt;br /&gt;
|-&lt;br /&gt;
| CA&lt;br /&gt;
| Campaign Id: this is the ID associated with your DAR campaign. Unless you are creating and managing the Nielsen campaign via the DAR Tag API, then this parameter value will always be generated from the Nielsen campaign management system. Note: often maps to a media-plan I/O Id&lt;br /&gt;
|- style=&amp;quot;background-color:#eff8ef;&amp;quot;&lt;br /&gt;
| CR&lt;br /&gt;
| Creative Id: DAR does not currently report at the creative level; can be hard coded ad server id or associated with a macro expansion&lt;br /&gt;
|-&lt;br /&gt;
| PC&lt;br /&gt;
| Placement Id: can be generated by the ad server via macro expansion or generated by the Nielsen campaign management system. Note: often maps to one of Ad Unit Id, Line Item Id or Video Ad Id&lt;br /&gt;
|- style=&amp;quot;background-color:#eff8ef;&amp;quot;&lt;br /&gt;
| CE&lt;br /&gt;
| Site Id: the Id that identifies a publisher site that the placement needs to be mapped to. Maps into the Nielsen MarketView database. Note: can be hardcoded to a pre-registered ad server site id in the Nielsen system or a macro expansion where more than one pre-existing site ids have been made known to Nielsen&lt;br /&gt;
|-&lt;br /&gt;
| R&lt;br /&gt;
| Cachebuster (web): timestamp / random number. Generated by ad server&lt;br /&gt;
|- style=&amp;quot;background-color:#eff8ef;&amp;quot;&lt;br /&gt;
| AT&lt;br /&gt;
| Fixed value: “view”&lt;br /&gt;
|-&lt;br /&gt;
| RT&lt;br /&gt;
| Fixed value: “banner”&lt;br /&gt;
|- style=&amp;quot;background-color:#eff8ef;&amp;quot;&lt;br /&gt;
| ST&lt;br /&gt;
| Fixed value: “image”&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;blockquote&amp;gt; Do not URL encode the values&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Additional DAR Tag Parameters for Mobile App Audience Measurement ==&lt;br /&gt;
In this section, the additional URL parameters required beyond the standard cookie based web-browser tag are described in detail.&lt;br /&gt;
&lt;br /&gt;
For each of the tag examples detailed below, we can support both non-secure (http) and secure (https) flavors. The standard cookie based web-browser tag is included below for reference purposes.&lt;br /&gt;
&lt;br /&gt;
'''Important note:''' the values against each value-pair in the following tags are for illustrative purposes only. Values for CA, PC and CE will vary depending on the specific campaign being measured and capabilities of the Ad server for macro/value expansion. For more detail on the core DAR  parameters, please see the '''Nielsen DAR Tag Implementation Guide.'''&lt;br /&gt;
&lt;br /&gt;
'''Web Browser DAR tag (cookie based persons identification)'''&lt;br /&gt;
&amp;lt;code&amp;gt; //secure-gl.imrworldwide.com/cgi-bin/m?ci=nlsnci535&amp;amp;am=3&amp;amp;at=view&amp;amp;rt=banner&amp;amp;st=image&amp;amp;ca=nlsn12452&amp;amp;cr=crtve&amp;amp;pc=&amp;lt;creativeid&amp;gt;_plc0001&amp;amp;ce=&amp;lt;siteid&amp;gt;&amp;amp;r=&amp;lt;timestamp&amp;gt; &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Mobile-App DAR Tag Extension (IFA based persons identification)'''&lt;br /&gt;
&amp;lt;code&amp;gt; //secure-gl.imrworldwide.com/cgi-bin/m?ci=nlsnci535&amp;amp;am=3&amp;amp;at=view&amp;amp;rt=banner&amp;amp;st=image&amp;amp;ca=nlsn12452&amp;amp;cr=crtve&amp;amp;pc=&amp;lt;creativeid&amp;gt;_plc0001&amp;amp;ce=&amp;lt;siteid&amp;gt;&amp;amp;c7=osgrp,IOS&amp;amp;c8=devgrp,PHN&amp;amp;c9=devid,XXXX-XX-XXXXX-XXXX &amp;amp;c10=plt,MBL&amp;amp;c12=apv,&amp;lt;appVersion&amp;gt;&amp;amp;c13=asid,NIELSEN-PROVIDEDID&amp;amp;c14=osver,7.0.4&amp;amp;uoo=0&amp;amp;r=&amp;lt;timestamp&amp;gt; &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Additional DAR Tag Parameters for Mobile !! Description !! Mandatory parameter for mDAR?&lt;br /&gt;
|-&lt;br /&gt;
| &amp;amp;c7 || OS Grouping ||&lt;br /&gt;
|- style=&amp;quot;background-color:#eff8ef;&amp;quot;&lt;br /&gt;
| &amp;amp;c8  || Device Grouping || &amp;lt;center&amp;gt;✔&amp;lt;/center&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;amp;c9 || Advertising ID || &amp;lt;center&amp;gt;✔&amp;lt;/center&amp;gt;&lt;br /&gt;
|- style=&amp;quot;background-color:#eff8ef;&amp;quot;&lt;br /&gt;
| &amp;amp;c10 || Platform || &amp;lt;center&amp;gt;✔&amp;lt;/center&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;amp;c12 || App Version ||&lt;br /&gt;
|- style=&amp;quot;background-color:#eff8ef;&amp;quot;&lt;br /&gt;
| &amp;amp;c13 || AppID (Nielsen assigned App ID) || &amp;lt;center&amp;gt;✔&amp;lt;/center&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;amp;c14 || OS Version ||&lt;br /&gt;
|- style=&amp;quot;background-color:#eff8ef;&amp;quot;&lt;br /&gt;
| &amp;amp;uoo || Opt-out indicator || &amp;lt;center&amp;gt;✔&amp;lt;/center&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;blockquote&amp;gt;'''Note''': Clients are encouraged to make an effort to always fill-in optional parameters.&lt;br /&gt;
&lt;br /&gt;
'''Note''': Do not URL encode the values.&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== C7 - OS Grouping (Optional) ==&lt;br /&gt;
Valid device OS Grouping data values are the following literal values:&lt;br /&gt;
* osgrp,IOS&lt;br /&gt;
* osgrp,DROID&lt;br /&gt;
* osgrp,ANDROID&lt;br /&gt;
&amp;lt;blockquote&amp;gt;'''Note''': If one of the above values cannot be specific, then the parameter should not be included in the call.&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== C8 - Device Grouping (Mandatory)==&lt;br /&gt;
Valid literal values for phone, tablet, portable media player (iPod) and unknown are as follows:&lt;br /&gt;
* devgrp,PHN - Phone&lt;br /&gt;
* devgrp,TAB - Tablet&lt;br /&gt;
* devgrp,PMP - Portable Media Player (iPod)&lt;br /&gt;
* devgrp,UNWN - Unknown/Unclassified&lt;br /&gt;
* devgrp,DSK - Desktop&lt;br /&gt;
* devgrp,STV ←​ CTV/OTT Device&lt;br /&gt;
==== Notes ====&lt;br /&gt;
* Mandatory for accurate measurement, and if unable to pass, Nielsen cannot guarantee the impression will be classified correctly. &lt;br /&gt;
* “​UNWN” will result in Nielsen attempting an introspection of the User Agent in the HTTP request sent against Device Atlas for classification. &lt;br /&gt;
* “STV” is the default value for OTT when the specific device value isn’t passed.&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== C9 - Advertising ID (Mandatory) ==&lt;br /&gt;
This is the advertiser ID for the client’s mobile device. IDFA for iOS, Google Advertising ID for Android:&lt;br /&gt;
* devid,&amp;lt;IDFA&amp;gt;&lt;br /&gt;
* devid,&amp;lt;IFA&amp;gt;&lt;br /&gt;
* devid,&amp;lt;Google Advertising ID&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Notes ====&lt;br /&gt;
For Android devices, the Google Advertiser ID should be used as the default and the Android ID as the second option.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* If C9 is &amp;lt;empty&amp;gt;, upon receiving the ping, the Nielsen collection server will attempt a 302 redirect to the data provider per the regular DAR pixel for browsers.&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
* As of August 1, 2014, Google is enforcing use of the Advertising ID for advertising and user analytics (http://play.google.com/about/developer-content-policy.html).&lt;br /&gt;
&amp;lt;blockquote&amp;gt;'' &amp;quot;Beginning August 1st 2014, all updates and new apps uploaded to the Play Store must use the advertising ID (when available on a device) in lieu of any other device identifiers for any advertising purposes.&amp;quot;&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
* It is preferred that the IDFA or Google Advertising ID be sent as is from the mobile device (“cleartext”). However, if mandated, we will support SHA256 hashed values with no-salt. Passing a hashed value (and/or salting) using any other standard will result in a failed match by the data provider upon receiving the ping. In turn, this results in impressions surfacing in the DAR unmeasurable audience totals. Please contact Nielsen if you anticipate a large percentage of hashed values coming in from your publisher clients.&lt;br /&gt;
&lt;br /&gt;
=== Privacy, Ad Tracking, and Ad Targeting ===&lt;br /&gt;
In newer iterations of the iOS and Android device operating systems, a facility exists allowing users to “opt-out” of “Ad Tracking”. It is Nielsen’s interpretation that this setting is primarily designed to allow users to specify opt-out of Ad Targeting rather than Ad Measurement. DAR&lt;br /&gt;
does not provide Ad Targeting data.&lt;br /&gt;
&lt;br /&gt;
However, it is also Nielsen’s position that the publisher or Ad network should provide a mechanism to also allow a user to opt-out of Ad Measurement. The Nielsen SDK will honor the Nielsen Ad Measurement opt-out settings configurable @ http://www.nielsen.com/us/en/campaigns/privacy-policy-opt-out.html.&lt;br /&gt;
&lt;br /&gt;
However if the integration approach described in this document is being used instead of the Nielsen SDK then '''YOU''' as the publisher or Ad network must provide a capability to opt-out of Ad Measurement as the configuration on www.nielsen.com will not be detectable. You may&lt;br /&gt;
elect to interpret the iOS / Android “Ad Tracking” setting for the purpose of limit Ad measurement or provide a separate discreet mechanism to allow a user to opt-out of Ad measurement.&lt;br /&gt;
&lt;br /&gt;
Please see '''&amp;amp;uoo''' later in this document for implementation details of the optout indicator.&lt;br /&gt;
&lt;br /&gt;
For additional clarification on privacy policy, please contact your Nielsen representative.&lt;br /&gt;
&lt;br /&gt;
== C10 - Platform (Mandatory) ==&lt;br /&gt;
To determine this value, Nielsen suggests that the ad network leverage user agent information to determine if the client device is either a mobile or desktop device.&lt;br /&gt;
&lt;br /&gt;
Valid literal values for mobile and desktop data values are as follows:&lt;br /&gt;
* plt,MBL&lt;br /&gt;
* plt,DSK&lt;br /&gt;
* plt,OTT&lt;br /&gt;
==== Notes ====&lt;br /&gt;
* Mandatory for accurate measurement, and if unable to pass, Nielsen cannot guarantee the impression will be classified correctly. &lt;br /&gt;
* Omitting c10, or a value in c10, will result in Nielsen attempting an introspection of the User Agent in the HTTP request sent against Device Atlas for classification. &lt;br /&gt;
* “OTT” (Connective Devices) is a valid value that is populated by participating vendors (Amazon, Hulu and Roku).  Non-participating vendors will be unmeasurable volumetric metric only.&lt;br /&gt;
&lt;br /&gt;
== C12 - App Version (Optional) ==&lt;br /&gt;
This is the version of the ad network system software or SDK that is implemented in this extension. Although this field is not required, this feature can be useful for troubleshooting purposes following deployment.&lt;br /&gt;
* apv,&amp;lt;N.N&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== C13 - AppID ==&lt;br /&gt;
This Nielsen provided ID is unique to the ad network and is required for certification.&lt;br /&gt;
* asid,&amp;lt;NNNNNNNNN-NNNN-NNNN-NNNN-NNNNNNNNNNNN&amp;gt;&lt;br /&gt;
An App ID will be provided for testing. A separate App ID will be provided for production use. Please request from your Nielsen representative.&lt;br /&gt;
&amp;lt;blockquote&amp;gt;'''Note''': If you are a publisher leveraging the non-SDK solution, you will be provided with a unique App ID for each combination of app and device OS type.&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== C14 - OS Version (Optional) ==&lt;br /&gt;
Operating system version&lt;br /&gt;
* osver,&amp;lt;OS Version&amp;gt;&lt;br /&gt;
Example: for iOS -&amp;gt; 7.0.4&lt;br /&gt;
&lt;br /&gt;
== UOO - Opt Out ==&lt;br /&gt;
Opt-out parameter&lt;br /&gt;
* &amp;lt;Boolean state&amp;gt;&lt;br /&gt;
&amp;lt;Boolean state&amp;gt; is a Boolean representation of whether the user is opting out or not.&lt;br /&gt;
&lt;br /&gt;
The absence of uoo in the tag is interpreted as an implicit opt-in. i.e. not opting out.&lt;br /&gt;
&lt;br /&gt;
The following pairings of opt-out are supported. '''Important:''' you must choose one set of paired values only and inform your Nielsen representative.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Opt-out !! Opt-in&lt;br /&gt;
|-&lt;br /&gt;
| uoo=true || uoo=false&lt;br /&gt;
|-&lt;br /&gt;
| uoo=1 || uoo=0&lt;br /&gt;
|-&lt;br /&gt;
| uoo=yes || uoo=no&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;blockquote&amp;gt;'''Note''':  if your Ad server is not capable os supporting the discrete &amp;amp;uoo parameter then you can set the c9 value to &amp;lt;code&amp;gt;devid,optout&amp;lt;/code&amp;gt; (for example &amp;lt;code&amp;gt;…&amp;amp;c8=PHN&amp;amp;c9=devid,optout&amp;amp;c10=MBL…&amp;lt;/code&amp;gt;)&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Server-Side Tag Dispatch ==&lt;br /&gt;
The standard way of triggering a Digital Ad Ratings (DAR) tag on Mobile-App is for the publisher app to trigger (either directly or via Ad server) the tag upon Ad exposure to the user. i.e. a client-side initiated tag.&lt;br /&gt;
&lt;br /&gt;
It is important to note that MRC/IAB measurement standards stipulate that the Ad exposure event still be initiated and recorded from the client-side, even if the Ad measurement tag (in this case a DAR tag) is physically initiated from the server-side. Evidence may be required (publisher log file or similar) from the MRC/IAB that the user was exposed to the Ad creative on their device.&lt;br /&gt;
&lt;br /&gt;
The following additional changes to the standard mobile-app DAR tag are required to support dispatch the DAR tag from a '''server-side''' publisher ad server:&lt;br /&gt;
&lt;br /&gt;
#'''X-Forwarded-For (XFF) IP:''' The original client IP address must be passed in the X-Forwarded-For (XFF) HTTP header field. When the impression is fired directly from the Ad Server, the XReal-IP will be the Ad Server IP.&lt;br /&gt;
#'''Cachebuster:''' Already present in the DAR tag, this now becomes mandatory. A cachebuster or random number ensures a new call is made to the Ad Server. By including a cachebuster ('r' parameter), the tag will not be cached. The timestamp of when the Ad was served can be used.&lt;br /&gt;
#'''User Agent (UA):''' The HTTP UA from the client device should be used to populate the HTTP UA in the server-server connection/ping.&lt;br /&gt;
#'''TLS:''' the tag received by Nielsen must be TLS v1.2 compliant or greater.&lt;br /&gt;
&lt;br /&gt;
==== Important notes ====&lt;br /&gt;
* the current iteration of server-server tag collection only supports mobile-app (IFA and AAID) and will NOT support cookie based audience measurement.&lt;br /&gt;
* The client’s server-server setup that is going to trigger/send the DAR tag should ​suppress​ any Nielsen cookie returned by the Nielsen collection server as a result of the first DAR tag received. If the Nielsen cookie (returned upon receiving the first DAR tag into secure.imrworldwide.com) is not suppressed then invalid traffic (IVT) filtration will quickly be triggered upon receiving the 2​nd and nth tag.&lt;br /&gt;
&lt;br /&gt;
== Appendix A: Example Implementation ==&lt;br /&gt;
In the below examples, you will see the overall DAR flow (Figure 1) and a detailed illustrative Ad Request / Response model (Figure 2).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div align=&amp;quot;center&amp;quot;&amp;gt;'''Figure 1 – End to End Data Flow'''&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:mDAR_Dataflow.png|center|link=]]&lt;br /&gt;
&lt;br /&gt;
Nielsen certified publishers and platforms will append the new parameters (below) with the appropriate URL safe values passed to Nielsen’s current DAR tag. The current DAR tag should be acquired using the existing processes for each campaign/placement. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&amp;lt;code&amp;gt;'''&amp;amp;c7'''=osgrp,IOS'''&amp;amp;c8'''=devgrp,PHN'''&amp;amp;c9'''=devid,XXXX-XX-XXXXXXXXX'''&amp;amp;c10'''=plt,MBL'''&amp;amp;c12'''=apv,AppVersion'''&amp;amp;c13'''=asid,XXXX-XX-XXXX-XXXX&amp;lt;/code&amp;gt;&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div align=&amp;quot;center&amp;quot;&amp;gt;'''Figure 2 – Illustrative Ad Request / Ad Response'''&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:ad_response.png|center|link=]]&lt;br /&gt;
&lt;br /&gt;
The above is an example of how an Ad server is supporting the build of mobile DAR tags for its publisher clients.&lt;br /&gt;
*Step 2 in Figure 1 is a summary of steps 1 and 2 in Figure 2 above.&lt;br /&gt;
*Steps 3 and 4 in Figure 1 is a summary of steps 3 through 9 in Figure 2 above.&lt;br /&gt;
&lt;br /&gt;
== Appendix B: Implementation, Testing &amp;amp; Certification ==&lt;br /&gt;
Once you have integrated the ping per the above specs, Nielsen requires you to pass through a one-time certification before traffic can be accepted into the production environment.&lt;br /&gt;
&lt;br /&gt;
The overall process is:&lt;br /&gt;
* Valid DAR contract or NDA is in place.&lt;br /&gt;
* Kick-off meeting with Nielsen onboarding team.&lt;br /&gt;
* Confirm meet minimums testing requirements:&lt;br /&gt;
** Host Ad/Tag for in-app delivery&lt;br /&gt;
** Can pass opt-out back to Nielsen&lt;br /&gt;
** Can pass Device ID in cleartext or SHA-256&lt;br /&gt;
* Nielsen provides the mDAR testing form that includes the test App ID and the test tag&lt;br /&gt;
* Identify the live campaigns for initial testing and run the test tag; suggest 5,000-10,000 impressions.&lt;br /&gt;
* Nielsen validates the data received from the test and confirms the initial test successful and provides the production App ID.&lt;br /&gt;
* Ensure contracts are in place for external test campaign with Nielsen Client Service team.&lt;br /&gt;
* Identify another live campaigns for production testing with production tag and app ID.&lt;br /&gt;
* Nielsen validates the data received from the final test and confirms certification for any DAR countries tested.&lt;br /&gt;
==== Goals ====&lt;br /&gt;
* To test in full DAR E2E environment, receive matches from data provider for demographics and correct identification of mobile impressions.&lt;br /&gt;
* To test that all minimum requirements in step 3 are passed to Nielsen with no issues.&lt;br /&gt;
* To test in a full DAR end-to-end environment, receive matches from data providers for demographics and correct identification of mobile impressions.&lt;/div&gt;</summary>
		<author><name>ColinBrown</name></author>
	</entry>
	<entry>
		<id>https://nielsentest.mywikis.net/w/index.php?title=Digital_Measurement_Android_Suffix_Guide&amp;diff=5893</id>
		<title>Digital Measurement Android Suffix Guide</title>
		<link rel="alternate" type="text/html" href="https://nielsentest.mywikis.net/w/index.php?title=Digital_Measurement_Android_Suffix_Guide&amp;diff=5893"/>
		<updated>2022-07-26T19:46:53Z</updated>

		<summary type="html">&lt;p&gt;ColinBrown: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Breadcrumb|}} {{Breadcrumb|Digital}} {{Breadcrumb|DCR &amp;amp; DTVR}} {{Breadcrumb|Digital_Measurement_Android_Artifactory_Guide}} {{CurrentBreadcrumb}}&lt;br /&gt;
[[Category:Digital]]&lt;br /&gt;
&lt;br /&gt;
= Android app sdk version suffix=&lt;br /&gt;
We have added an extra third character in the build version of appsdk to represent the android-x support in appsdk. &lt;br /&gt;
&lt;br /&gt;
From onwards now you will see meter version of app sdk ending with 5 characters suffix  as &amp;lt;code&amp;gt;aa.8.2.0.0_{suffix}&amp;lt;/code&amp;gt; .&lt;br /&gt;
&lt;br /&gt;
Below are details of possible suffix characters with description&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Character Index in suffix !! Possible Values!! Description&lt;br /&gt;
|-&lt;br /&gt;
|0 (first character in suffix)||g,a and v||&amp;lt;code&amp;gt;g&amp;lt;/code&amp;gt; means it's the GLOBAL flavored sdk (Default).&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;a&amp;lt;/code&amp;gt; means the build was designed for AGF.&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;v&amp;lt;/code&amp;gt; identifies the VRI flavoured sdk.&lt;br /&gt;
|-&lt;br /&gt;
|1 (second character in suffix)||a,s and l ||&amp;lt;code&amp;gt;a&amp;lt;/code&amp;gt; means the sdk is coming from github as a gradle dependency.&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;s&amp;lt;/code&amp;gt; sdk is integrated as jar.&amp;lt;br&amp;gt; &amp;lt;code&amp;gt;l&amp;lt;/code&amp;gt; sdk is coming from adobe launch.&lt;br /&gt;
|-&lt;br /&gt;
|2 (third character in suffix)||a and x	||&amp;lt;code&amp;gt;a&amp;lt;/code&amp;gt; means the sdk is built for non androidx apps.&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;x&amp;lt;/code&amp;gt; means the sdk is built for '''androidx''' apps.&amp;lt;br&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|3 (fourth character in suffix)||a and k||&amp;lt;code&amp;gt;a&amp;lt;/code&amp;gt; means AdSupport included. (Default)&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;k&amp;lt;/code&amp;gt; '''No IDFA or IDFV (kids framework)'''.&amp;lt;br&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|4 (fifth character in suffix)||o and t||&amp;lt;code&amp;gt;o&amp;lt;/code&amp;gt; means the sdk is getting instantiated using the AppSdk class. (Default)&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;t&amp;lt;/code&amp;gt; means sdk is  using NielsenEventTracker class.&amp;lt;br&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|5 (sixth character in suffix)||h,w,r and n||&amp;lt;code&amp;gt;h&amp;lt;/code&amp;gt; then sdk supports Hybrid Webviews.&amp;lt;br&amp;gt; &amp;lt;code&amp;gt;w&amp;lt;/code&amp;gt; identifies React Native Webview support.&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;r&amp;lt;/code&amp;gt; sdk supports React Native standard bridge.&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; means sdk supports Native apps.&lt;br /&gt;
|-&lt;br /&gt;
|6 (seventh character in suffix)||g,s and n||&amp;lt;code&amp;gt;g&amp;lt;/code&amp;gt; the sdk will request the Google Advertising ID.&amp;lt;br&amp;gt; &amp;lt;code&amp;gt;s&amp;lt;/code&amp;gt; the sdk will request the Secure Android ID.&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; the sdk will not request any ID. (EG: Not Applicable)&lt;br /&gt;
|}&lt;br /&gt;
Below are few examples of possible suffix in app sdk meter version &lt;br /&gt;
&lt;br /&gt;
* '''aa.8.2.0.0_gaxaohg''' &lt;br /&gt;
** Sdk version 8.2.0.0 &lt;br /&gt;
** '''GLOBAL flavour'''&lt;br /&gt;
** integrated as '''gradle dependency'''&lt;br /&gt;
** '''android x'''&lt;br /&gt;
** AdSupport&lt;br /&gt;
** using AppSdk class to instantiate&lt;br /&gt;
** Hybrid Webview support&lt;br /&gt;
** Google Ad ID&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* '''aa.8.2.0.0_vaxkons'''&lt;br /&gt;
**Sdk version 8.2.0.0&lt;br /&gt;
** '''VRI flavour'''&lt;br /&gt;
** integrated as '''gradle dependency''' &lt;br /&gt;
** supporting '''android x''' &lt;br /&gt;
** Kids framework&lt;br /&gt;
** using AppSdk class to instantiate&lt;br /&gt;
** native app.&lt;br /&gt;
** Secure Android ID&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>ColinBrown</name></author>
	</entry>
	<entry>
		<id>https://nielsentest.mywikis.net/w/index.php?title=International_DCR&amp;diff=5885</id>
		<title>International DCR</title>
		<link rel="alternate" type="text/html" href="https://nielsentest.mywikis.net/w/index.php?title=International_DCR&amp;diff=5885"/>
		<updated>2022-07-15T23:42:44Z</updated>

		<summary type="html">&lt;p&gt;ColinBrown: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Breadcrumb|}} {{Breadcrumb|Digital}} {{CurrentBreadcrumb}}&lt;br /&gt;
[[Category:Digital]]&lt;br /&gt;
{{CategoryIcon|International.png|International DCR}}&lt;br /&gt;
&lt;br /&gt;
__NOTOC__&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;Please contact your Nielsen representative for documentation if the guides for your country aren't listed.&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! colspan=&amp;quot;5&amp;quot; | Downloads&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 90px;&amp;quot; |{{SmallIcon|DownloadIcon.png|alt=Cloud API}} &lt;br /&gt;
|style=&amp;quot;width: 90px;&amp;quot; | {{SmallIcon|SDKIcon.png}}&lt;br /&gt;
| '''[[Digital Downloads|SDK Downloads]]'''&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: 90px;&amp;quot; | Australia&lt;br /&gt;
! style=&amp;quot;width: 90px;&amp;quot; |&lt;br /&gt;
! style=&amp;quot;width: 45px;&amp;quot; | &lt;br /&gt;
! style=&amp;quot;width: 45px;&amp;quot; | OS&lt;br /&gt;
!| Guide&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | {{SmallIcon|AUFlagIcon.png}}&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | {{SmallIcon|SDKIcon.png}}&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | {{OSIcon|VideoIcon.png}}&lt;br /&gt;
|-&lt;br /&gt;
|  {{OSIcon|macOSIcon.png}}&lt;br /&gt;
| '''[[DCR Australia Video iOS SDK|Request DCR Australia Video iOS SDK]]'''&lt;br /&gt;
|-&lt;br /&gt;
| {{OSIcon|AndroidIcon.png}}&lt;br /&gt;
| '''[[DCR Australia Video Android SDK|Request DCR Australia Video Android SDK]]'''&lt;br /&gt;
|-&lt;br /&gt;
| {{OSIcon|BrowserIcon.png}}&lt;br /&gt;
| '''[[DCR Australia Video Browser SDK|Request DCR Australia Video Browser SDK]]'''&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: 90px;&amp;quot; | Czech&lt;br /&gt;
! style=&amp;quot;width: 90px;&amp;quot; |&lt;br /&gt;
! style=&amp;quot;width: 45px;&amp;quot; | &lt;br /&gt;
! style=&amp;quot;width: 45px;&amp;quot; | OS&lt;br /&gt;
!| Guide&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;6&amp;quot; | {{SmallIcon|CZFlagIcon.png}}&lt;br /&gt;
| rowspan=&amp;quot;6&amp;quot; | {{SmallIcon|SDKIcon.png}}&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | {{OSIcon|VideoIcon.png}}&lt;br /&gt;
| {{OSIcon|macOSIcon.png}}&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
{{OSIcon|AndroidIcon.png}}&lt;br /&gt;
| '''[[DCR Czech Video App SDK]]'''&lt;br /&gt;
|-&lt;br /&gt;
| {{OSIcon|BrowserIcon.png}}&lt;br /&gt;
| '''[[DCR Czech Video Browser SDK]]'''&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;1&amp;quot; | {{OSIcon|StaticIcon.png}}&lt;br /&gt;
| {{OSIcon|BrowserIcon.png}}&lt;br /&gt;
| '''[[DCR Czech Static Browser SDK]]'''&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; |&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; |&lt;br /&gt;
| '''[[Czech SDK Metadata]]'''&lt;br /&gt;
|-&lt;br /&gt;
| '''[[Czech Changing Approved Player]]'''&lt;br /&gt;
|-&lt;br /&gt;
| '''[[Czech Contacts]]'''&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;width: 90px;&amp;quot; | Denmark&lt;br /&gt;
! style=&amp;quot;width: 90px;&amp;quot; |&lt;br /&gt;
! style=&amp;quot;width: 45px;&amp;quot; | &lt;br /&gt;
! style=&amp;quot;width: 45px;&amp;quot; | OS&lt;br /&gt;
!| Guide&lt;br /&gt;
!| Links&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;5&amp;quot; | {{SmallIcon|DKFlagIcon.png}}&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | {{SmallIcon|SDKIcon.png}}&lt;br /&gt;
| rowspan=&amp;quot;5&amp;quot; | {{OSIcon|VideoIcon.png}}&lt;br /&gt;
|-&lt;br /&gt;
|  {{OSIcon|macOSIcon.png}}&lt;br /&gt;
| '''[[DCR Denmark Video iOS SDK]]'''&lt;br /&gt;
| [https://engineeringportal.nielsen.com/docs/Special:ClickThrough?region=DK Sign License Agreement]&lt;br /&gt;
|-&lt;br /&gt;
| {{OSIcon|AndroidIcon.png}}&lt;br /&gt;
| '''[[DCR Denmark Video Android SDK]]'''&lt;br /&gt;
| [https://engineeringportal.nielsen.com/docs/Special:ClickThrough?region=DK Sign License Agreement]&lt;br /&gt;
|-&lt;br /&gt;
| {{OSIcon|BrowserIcon.png}}&lt;br /&gt;
| '''[[DCR Denmark Video Browser SDK]]'''&lt;br /&gt;
| [https://engineeringportal.nielsen.com/docs/Special:ClickThrough?region=DK Sign License Agreement]&lt;br /&gt;
|-&lt;br /&gt;
| {{SmallIcon|CloudAPIIcon.png}}&lt;br /&gt;
| {{OSIcon|APIIcon.png}}&lt;br /&gt;
| '''[[DCR Denmark Video Cloud API]]'''&lt;br /&gt;
| [https://engineeringportal.nielsen.com/docs/Special:ClickThrough?region=DK Sign License Agreement]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! colspan=&amp;quot;3&amp;quot; | Germany&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 90px;&amp;quot; |{{SmallIcon|DEFlagIcon.png}} &lt;br /&gt;
|style=&amp;quot;width: 90px;&amp;quot; | {{SmallIcon|SDKIcon.png}}&lt;br /&gt;
| '''[[AGF Implementation Documentation]]'''&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;width: 90px;&amp;quot; | Ireland&lt;br /&gt;
! style=&amp;quot;width: 90px;&amp;quot; |&lt;br /&gt;
! style=&amp;quot;width: 45px;&amp;quot; | &lt;br /&gt;
! style=&amp;quot;width: 45px;&amp;quot; | OS&lt;br /&gt;
!| Guide&lt;br /&gt;
!| Links&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | {{SmallIcon|IEflagicon.png}}&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | {{SmallIcon|SDKIcon.png}}&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | {{OSIcon|VideoIcon.png}}&lt;br /&gt;
|-&lt;br /&gt;
| {{OSIcon|macOSIcon.png}}&lt;br /&gt;
| '''[[DCR Ireland Video iOS SDK]]'''&lt;br /&gt;
| [https://engineeringportal.nielsen.com/w/IRL/ Download IRL iOS SDK]&lt;br /&gt;
|-&lt;br /&gt;
| {{OSIcon|AndroidIcon.png}}&lt;br /&gt;
| '''[[DCR Ireland Video Android SDK]]'''&lt;br /&gt;
| [https://engineeringportal.nielsen.com/w/IRL/ Download IRL Android SDK]&lt;br /&gt;
|-&lt;br /&gt;
| {{OSIcon|BrowserIcon.png}}&lt;br /&gt;
| '''[[DCR Ireland Video Browser SDK]]'''&lt;br /&gt;
| [https://engineeringportal.nielsen.com/w/IRL/ Download IRL Browser SDK]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;width: 90px;&amp;quot; | Italy&lt;br /&gt;
! style=&amp;quot;width: 90px;&amp;quot; |&lt;br /&gt;
! style=&amp;quot;width: 45px;&amp;quot; | &lt;br /&gt;
! style=&amp;quot;width: 45px;&amp;quot; | OS&lt;br /&gt;
!| Guide&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;9&amp;quot; | {{SmallIcon|ITFlagIcon.png}}&lt;br /&gt;
| rowspan=&amp;quot;9&amp;quot; | {{SmallIcon|SDKIcon.png}}&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | {{OSIcon|VideoIcon.png}}&lt;br /&gt;
|{{OSIcon|macOSIcon.png}}&lt;br /&gt;
| '''[[DCR Italy Video iOS SDK]]'''&lt;br /&gt;
|-&lt;br /&gt;
|{{OSIcon|AndroidIcon.png}}&lt;br /&gt;
| '''[[DCR Italy Video Android SDK]]'''&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;1&amp;quot; | {{OSIcon|BrowserIcon.png}}&lt;br /&gt;
| '''[[DCR Italy Video Browser SDK (6.0.0)]]'''&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;5&amp;quot; | {{OSIcon|StaticIcon.png}}&lt;br /&gt;
|{{OSIcon|macOSIcon.png}}&lt;br /&gt;
| '''[[DCR Italy Static iOS SDK]]'''&lt;br /&gt;
|-&lt;br /&gt;
|{{OSIcon|AndroidIcon.png}}&lt;br /&gt;
| '''[[DCR Italy Static Android SDK]]'''&lt;br /&gt;
|-&lt;br /&gt;
| {{OSIcon|BrowserIcon.png}}&lt;br /&gt;
| '''[[DCR Italy Static Browser SDK]]'''&lt;br /&gt;
|-&lt;br /&gt;
|  {{OSIcon|FacebookIcon.png|alt=Facebook Instant Articles}}&lt;br /&gt;
| '''[[DCR Italy Static Facebook Instant Articles Browser SDK]]'''&lt;br /&gt;
|-&lt;br /&gt;
|  {{OSIcon|AMPIcon.png|alt=Google AMP}}&lt;br /&gt;
| '''[[DCR Italy Static Google AMP Cloud API]]'''&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;width: 90px;&amp;quot; | KSA&lt;br /&gt;
! style=&amp;quot;width: 90px;&amp;quot; |&lt;br /&gt;
! style=&amp;quot;width: 45px;&amp;quot; | &lt;br /&gt;
! style=&amp;quot;width: 45px;&amp;quot; | OS&lt;br /&gt;
!| Guide&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | {{SmallIcon|Saudi Arabia.png}}  &lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | {{SmallIcon|SDKIcon.png}}&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | {{OSIcon|VideoIcon.png}}&lt;br /&gt;
| {{OSIcon|macOSIcon.png}}&lt;br /&gt;
| '''[[DCR KSA Video iOS SDK]]'''&lt;br /&gt;
|-&lt;br /&gt;
| {{OSIcon|AndroidIcon.png}}&lt;br /&gt;
| '''[[DCR KSA Video Android SDK]]'''&lt;br /&gt;
|-&lt;br /&gt;
| {{OSIcon|BrowserIcon.png}}&lt;br /&gt;
| '''[[DCR KSA Video Browser SDK]]'''&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: 90px;&amp;quot; | Norway&lt;br /&gt;
! style=&amp;quot;width: 90px;&amp;quot; |&lt;br /&gt;
! style=&amp;quot;width: 45px;&amp;quot; | &lt;br /&gt;
! style=&amp;quot;width: 45px;&amp;quot; | OS&lt;br /&gt;
!| Guide&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | {{SmallIcon|norway-flag-xs.png}}&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | {{SmallIcon|SDKIcon.png}}&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | {{OSIcon|VideoIcon.png}}&lt;br /&gt;
| {{OSIcon|macOSIcon.png}}&lt;br /&gt;
| '''[[DCR Norway Audio ios App SDK]]'''&lt;br /&gt;
|-&lt;br /&gt;
| {{OSIcon|AndroidIcon.png}}&lt;br /&gt;
| '''[[DCR Norway Audio Android App SDK]]'''&lt;br /&gt;
|-&lt;br /&gt;
| {{OSIcon|BrowserIcon.png}}&lt;br /&gt;
| '''[[DCR Norway Audio Browser SDK]]'''&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: 90px;&amp;quot; | Poland&lt;br /&gt;
! style=&amp;quot;width: 90px;&amp;quot; |&lt;br /&gt;
! style=&amp;quot;width: 45px;&amp;quot; | &lt;br /&gt;
! style=&amp;quot;width: 45px;&amp;quot; | OS&lt;br /&gt;
!| Guide&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | {{SmallIcon|PLFlagIcon.png}}&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | {{SmallIcon|SDKIcon.png}}&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | {{OSIcon|VideoIcon.png}}&lt;br /&gt;
| {{OSIcon|macOSIcon.png}}&lt;br /&gt;
| '''[[DCR Poland Video iOS SDK]]'''&lt;br /&gt;
|-&lt;br /&gt;
| {{OSIcon|AndroidIcon.png}}&lt;br /&gt;
| '''[[DCR Poland Video Android SDK]]'''&lt;br /&gt;
|-&lt;br /&gt;
| {{OSIcon|BrowserIcon.png}}&lt;br /&gt;
| '''[[DCR Poland Video Browser SDK]]'''&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;width: 90px;&amp;quot; | India&lt;br /&gt;
! style=&amp;quot;width: 90px;&amp;quot; |&lt;br /&gt;
! style=&amp;quot;width: 45px;&amp;quot; | &lt;br /&gt;
! style=&amp;quot;width: 45px;&amp;quot; | OS&lt;br /&gt;
!| Guide&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | {{SmallIcon|INFlagIcon.png}}&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | {{SmallIcon|SDKIcon.png}}&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | {{OSIcon|VideoIcon.png}}&lt;br /&gt;
|-&lt;br /&gt;
|  {{OSIcon|macOSIcon.png}}&lt;br /&gt;
| '''[[DCR India Video iOS SDK]]'''&lt;br /&gt;
|-&lt;br /&gt;
| {{OSIcon|AndroidIcon.png}}&lt;br /&gt;
| '''[[DCR India Video Android SDK]]'''&lt;br /&gt;
|-&lt;br /&gt;
| {{OSIcon|BrowserIcon.png}}&lt;br /&gt;
| '''[[DCR India Video Browser SDK]]'''&lt;br /&gt;
|}&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;width: 90px;&amp;quot; | Sweden&lt;br /&gt;
! style=&amp;quot;width: 90px;&amp;quot; |&lt;br /&gt;
! style=&amp;quot;width: 45px;&amp;quot; | &lt;br /&gt;
! style=&amp;quot;width: 45px;&amp;quot; | OS&lt;br /&gt;
!| Guide&lt;br /&gt;
!| Links&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;5&amp;quot; | {{SmallIcon|SWflagicon.png}}&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | {{SmallIcon|SDKIcon.png}}&lt;br /&gt;
| rowspan=&amp;quot;5&amp;quot; | {{OSIcon|VideoIcon.png}}&lt;br /&gt;
|-&lt;br /&gt;
|  {{OSIcon|macOSIcon.png}}&lt;br /&gt;
| '''[[DCR Sweden Video iOS SDK]]'''&lt;br /&gt;
| [https://engineeringportal.nielsen.com/docs/Special:ClickThrough?region=SE Sign License Agreement]&lt;br /&gt;
|-&lt;br /&gt;
| {{OSIcon|AndroidIcon.png}}&lt;br /&gt;
| '''[[DCR Sweden Video Android SDK]]'''&lt;br /&gt;
| [https://engineeringportal.nielsen.com/docs/Special:ClickThrough?region=SE Sign License Agreement]&lt;br /&gt;
|-&lt;br /&gt;
| {{OSIcon|BrowserIcon.png}}&lt;br /&gt;
| '''[[DCR Sweden Video Browser SDK]]'''&lt;br /&gt;
| [https://engineeringportal.nielsen.com/docs/Special:ClickThrough?region=SE Sign License Agreement]&lt;br /&gt;
|-&lt;br /&gt;
| {{SmallIcon|CloudAPIIcon.png}}&lt;br /&gt;
| {{OSIcon|APIIcon.png}}&lt;br /&gt;
| '''[[DCR Sweden Video Cloud API]]'''&lt;br /&gt;
| [https://engineeringportal.nielsen.com/docs/Special:ClickThrough?region=SE Sign License Agreement]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;width: 90px;&amp;quot; | Taiwan&lt;br /&gt;
! style=&amp;quot;width: 90px;&amp;quot; |&lt;br /&gt;
! style=&amp;quot;width: 45px;&amp;quot; | &lt;br /&gt;
! style=&amp;quot;width: 45px;&amp;quot; | OS&lt;br /&gt;
!| Guide&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | {{SmallIcon|TWFlagIcon.png}}&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | {{SmallIcon|SDKIcon.png}}&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | {{OSIcon|VideoIcon.png}}&lt;br /&gt;
| {{OSIcon|macOSIcon.png}}&lt;br /&gt;
| '''[[DCR Taiwan Video iOS SDK]]'''&lt;br /&gt;
|-&lt;br /&gt;
| {{OSIcon|AndroidIcon.png}}&lt;br /&gt;
| '''[[DCR Taiwan Video Android SDK]]'''&lt;br /&gt;
|-&lt;br /&gt;
| {{OSIcon|BrowserIcon.png}}&lt;br /&gt;
| '''[[DCR Taiwan Video Browser SDK]]'''&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;width: 90px;&amp;quot; | Thailand&lt;br /&gt;
! style=&amp;quot;width: 90px;&amp;quot; |&lt;br /&gt;
! style=&amp;quot;width: 45px;&amp;quot; | &lt;br /&gt;
! style=&amp;quot;width: 45px;&amp;quot; | OS&lt;br /&gt;
!| Guide&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | {{SmallIcon|THFlagIcon.png}}&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | {{SmallIcon|SDKIcon.png}}&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | {{OSIcon|VideoIcon.png}}&lt;br /&gt;
| {{OSIcon|macOSIcon.png}}&lt;br /&gt;
| '''[[DCR Thailand Video iOS SDK]]'''&lt;br /&gt;
|-&lt;br /&gt;
| {{OSIcon|AndroidIcon.png}}&lt;br /&gt;
| '''[[DCR Thailand Video Android SDK]]'''&lt;br /&gt;
|-&lt;br /&gt;
| {{OSIcon|BrowserIcon.png}}&lt;br /&gt;
| '''[[DCR Thailand Video Browser SDK]]'''&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>ColinBrown</name></author>
	</entry>
	<entry>
		<id>https://nielsentest.mywikis.net/w/index.php?title=File:Saudi_Arabia.png&amp;diff=5884</id>
		<title>File:Saudi Arabia.png</title>
		<link rel="alternate" type="text/html" href="https://nielsentest.mywikis.net/w/index.php?title=File:Saudi_Arabia.png&amp;diff=5884"/>
		<updated>2022-07-15T23:42:33Z</updated>

		<summary type="html">&lt;p&gt;ColinBrown: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Saudi Arabia&lt;/div&gt;</summary>
		<author><name>ColinBrown</name></author>
	</entry>
	<entry>
		<id>https://nielsentest.mywikis.net/w/index.php?title=International_DCR&amp;diff=5883</id>
		<title>International DCR</title>
		<link rel="alternate" type="text/html" href="https://nielsentest.mywikis.net/w/index.php?title=International_DCR&amp;diff=5883"/>
		<updated>2022-07-15T23:41:09Z</updated>

		<summary type="html">&lt;p&gt;ColinBrown: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Breadcrumb|}} {{Breadcrumb|Digital}} {{CurrentBreadcrumb}}&lt;br /&gt;
[[Category:Digital]]&lt;br /&gt;
{{CategoryIcon|International.png|International DCR}}&lt;br /&gt;
&lt;br /&gt;
__NOTOC__&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;Please contact your Nielsen representative for documentation if the guides for your country aren't listed.&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! colspan=&amp;quot;5&amp;quot; | Downloads&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 90px;&amp;quot; |{{SmallIcon|DownloadIcon.png|alt=Cloud API}} &lt;br /&gt;
|style=&amp;quot;width: 90px;&amp;quot; | {{SmallIcon|SDKIcon.png}}&lt;br /&gt;
| '''[[Digital Downloads|SDK Downloads]]'''&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: 90px;&amp;quot; | Australia&lt;br /&gt;
! style=&amp;quot;width: 90px;&amp;quot; |&lt;br /&gt;
! style=&amp;quot;width: 45px;&amp;quot; | &lt;br /&gt;
! style=&amp;quot;width: 45px;&amp;quot; | OS&lt;br /&gt;
!| Guide&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | {{SmallIcon|AUFlagIcon.png}}&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | {{SmallIcon|SDKIcon.png}}&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | {{OSIcon|VideoIcon.png}}&lt;br /&gt;
|-&lt;br /&gt;
|  {{OSIcon|macOSIcon.png}}&lt;br /&gt;
| '''[[DCR Australia Video iOS SDK|Request DCR Australia Video iOS SDK]]'''&lt;br /&gt;
|-&lt;br /&gt;
| {{OSIcon|AndroidIcon.png}}&lt;br /&gt;
| '''[[DCR Australia Video Android SDK|Request DCR Australia Video Android SDK]]'''&lt;br /&gt;
|-&lt;br /&gt;
| {{OSIcon|BrowserIcon.png}}&lt;br /&gt;
| '''[[DCR Australia Video Browser SDK|Request DCR Australia Video Browser SDK]]'''&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: 90px;&amp;quot; | Czech&lt;br /&gt;
! style=&amp;quot;width: 90px;&amp;quot; |&lt;br /&gt;
! style=&amp;quot;width: 45px;&amp;quot; | &lt;br /&gt;
! style=&amp;quot;width: 45px;&amp;quot; | OS&lt;br /&gt;
!| Guide&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;6&amp;quot; | {{SmallIcon|CZFlagIcon.png}}&lt;br /&gt;
| rowspan=&amp;quot;6&amp;quot; | {{SmallIcon|SDKIcon.png}}&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | {{OSIcon|VideoIcon.png}}&lt;br /&gt;
| {{OSIcon|macOSIcon.png}}&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
{{OSIcon|AndroidIcon.png}}&lt;br /&gt;
| '''[[DCR Czech Video App SDK]]'''&lt;br /&gt;
|-&lt;br /&gt;
| {{OSIcon|BrowserIcon.png}}&lt;br /&gt;
| '''[[DCR Czech Video Browser SDK]]'''&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;1&amp;quot; | {{OSIcon|StaticIcon.png}}&lt;br /&gt;
| {{OSIcon|BrowserIcon.png}}&lt;br /&gt;
| '''[[DCR Czech Static Browser SDK]]'''&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; |&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; |&lt;br /&gt;
| '''[[Czech SDK Metadata]]'''&lt;br /&gt;
|-&lt;br /&gt;
| '''[[Czech Changing Approved Player]]'''&lt;br /&gt;
|-&lt;br /&gt;
| '''[[Czech Contacts]]'''&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;width: 90px;&amp;quot; | Denmark&lt;br /&gt;
! style=&amp;quot;width: 90px;&amp;quot; |&lt;br /&gt;
! style=&amp;quot;width: 45px;&amp;quot; | &lt;br /&gt;
! style=&amp;quot;width: 45px;&amp;quot; | OS&lt;br /&gt;
!| Guide&lt;br /&gt;
!| Links&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;5&amp;quot; | {{SmallIcon|DKFlagIcon.png}}&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | {{SmallIcon|SDKIcon.png}}&lt;br /&gt;
| rowspan=&amp;quot;5&amp;quot; | {{OSIcon|VideoIcon.png}}&lt;br /&gt;
|-&lt;br /&gt;
|  {{OSIcon|macOSIcon.png}}&lt;br /&gt;
| '''[[DCR Denmark Video iOS SDK]]'''&lt;br /&gt;
| [https://engineeringportal.nielsen.com/docs/Special:ClickThrough?region=DK Sign License Agreement]&lt;br /&gt;
|-&lt;br /&gt;
| {{OSIcon|AndroidIcon.png}}&lt;br /&gt;
| '''[[DCR Denmark Video Android SDK]]'''&lt;br /&gt;
| [https://engineeringportal.nielsen.com/docs/Special:ClickThrough?region=DK Sign License Agreement]&lt;br /&gt;
|-&lt;br /&gt;
| {{OSIcon|BrowserIcon.png}}&lt;br /&gt;
| '''[[DCR Denmark Video Browser SDK]]'''&lt;br /&gt;
| [https://engineeringportal.nielsen.com/docs/Special:ClickThrough?region=DK Sign License Agreement]&lt;br /&gt;
|-&lt;br /&gt;
| {{SmallIcon|CloudAPIIcon.png}}&lt;br /&gt;
| {{OSIcon|APIIcon.png}}&lt;br /&gt;
| '''[[DCR Denmark Video Cloud API]]'''&lt;br /&gt;
| [https://engineeringportal.nielsen.com/docs/Special:ClickThrough?region=DK Sign License Agreement]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! colspan=&amp;quot;3&amp;quot; | Germany&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 90px;&amp;quot; |{{SmallIcon|DEFlagIcon.png}} &lt;br /&gt;
|style=&amp;quot;width: 90px;&amp;quot; | {{SmallIcon|SDKIcon.png}}&lt;br /&gt;
| '''[[AGF Implementation Documentation]]'''&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;width: 90px;&amp;quot; | Ireland&lt;br /&gt;
! style=&amp;quot;width: 90px;&amp;quot; |&lt;br /&gt;
! style=&amp;quot;width: 45px;&amp;quot; | &lt;br /&gt;
! style=&amp;quot;width: 45px;&amp;quot; | OS&lt;br /&gt;
!| Guide&lt;br /&gt;
!| Links&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | {{SmallIcon|IEflagicon.png}}&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | {{SmallIcon|SDKIcon.png}}&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | {{OSIcon|VideoIcon.png}}&lt;br /&gt;
|-&lt;br /&gt;
| {{OSIcon|macOSIcon.png}}&lt;br /&gt;
| '''[[DCR Ireland Video iOS SDK]]'''&lt;br /&gt;
| [https://engineeringportal.nielsen.com/w/IRL/ Download IRL iOS SDK]&lt;br /&gt;
|-&lt;br /&gt;
| {{OSIcon|AndroidIcon.png}}&lt;br /&gt;
| '''[[DCR Ireland Video Android SDK]]'''&lt;br /&gt;
| [https://engineeringportal.nielsen.com/w/IRL/ Download IRL Android SDK]&lt;br /&gt;
|-&lt;br /&gt;
| {{OSIcon|BrowserIcon.png}}&lt;br /&gt;
| '''[[DCR Ireland Video Browser SDK]]'''&lt;br /&gt;
| [https://engineeringportal.nielsen.com/w/IRL/ Download IRL Browser SDK]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;width: 90px;&amp;quot; | Italy&lt;br /&gt;
! style=&amp;quot;width: 90px;&amp;quot; |&lt;br /&gt;
! style=&amp;quot;width: 45px;&amp;quot; | &lt;br /&gt;
! style=&amp;quot;width: 45px;&amp;quot; | OS&lt;br /&gt;
!| Guide&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;9&amp;quot; | {{SmallIcon|ITFlagIcon.png}}&lt;br /&gt;
| rowspan=&amp;quot;9&amp;quot; | {{SmallIcon|SDKIcon.png}}&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | {{OSIcon|VideoIcon.png}}&lt;br /&gt;
|{{OSIcon|macOSIcon.png}}&lt;br /&gt;
| '''[[DCR Italy Video iOS SDK]]'''&lt;br /&gt;
|-&lt;br /&gt;
|{{OSIcon|AndroidIcon.png}}&lt;br /&gt;
| '''[[DCR Italy Video Android SDK]]'''&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;1&amp;quot; | {{OSIcon|BrowserIcon.png}}&lt;br /&gt;
| '''[[DCR Italy Video Browser SDK (6.0.0)]]'''&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;5&amp;quot; | {{OSIcon|StaticIcon.png}}&lt;br /&gt;
|{{OSIcon|macOSIcon.png}}&lt;br /&gt;
| '''[[DCR Italy Static iOS SDK]]'''&lt;br /&gt;
|-&lt;br /&gt;
|{{OSIcon|AndroidIcon.png}}&lt;br /&gt;
| '''[[DCR Italy Static Android SDK]]'''&lt;br /&gt;
|-&lt;br /&gt;
| {{OSIcon|BrowserIcon.png}}&lt;br /&gt;
| '''[[DCR Italy Static Browser SDK]]'''&lt;br /&gt;
|-&lt;br /&gt;
|  {{OSIcon|FacebookIcon.png|alt=Facebook Instant Articles}}&lt;br /&gt;
| '''[[DCR Italy Static Facebook Instant Articles Browser SDK]]'''&lt;br /&gt;
|-&lt;br /&gt;
|  {{OSIcon|AMPIcon.png|alt=Google AMP}}&lt;br /&gt;
| '''[[DCR Italy Static Google AMP Cloud API]]'''&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;width: 90px;&amp;quot; | KSA&lt;br /&gt;
! style=&amp;quot;width: 90px;&amp;quot; |&lt;br /&gt;
! style=&amp;quot;width: 45px;&amp;quot; | &lt;br /&gt;
! style=&amp;quot;width: 45px;&amp;quot; | OS&lt;br /&gt;
!| Guide&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | {{SmallIcon|Saudi Arabia.png}}&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | {{SmallIcon|SDKIcon.png}}&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | {{OSIcon|VideoIcon.png}}&lt;br /&gt;
| {{OSIcon|macOSIcon.png}}&lt;br /&gt;
| '''[[DCR KSA Video iOS SDK]]'''&lt;br /&gt;
|-&lt;br /&gt;
| {{OSIcon|AndroidIcon.png}}&lt;br /&gt;
| '''[[DCR KSA Video Android SDK]]'''&lt;br /&gt;
|-&lt;br /&gt;
| {{OSIcon|BrowserIcon.png}}&lt;br /&gt;
| '''[[DCR KSA Video Browser SDK]]'''&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: 90px;&amp;quot; | Norway&lt;br /&gt;
! style=&amp;quot;width: 90px;&amp;quot; |&lt;br /&gt;
! style=&amp;quot;width: 45px;&amp;quot; | &lt;br /&gt;
! style=&amp;quot;width: 45px;&amp;quot; | OS&lt;br /&gt;
!| Guide&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | {{SmallIcon|norway-flag-xs.png}}&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | {{SmallIcon|SDKIcon.png}}&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | {{OSIcon|VideoIcon.png}}&lt;br /&gt;
| {{OSIcon|macOSIcon.png}}&lt;br /&gt;
| '''[[DCR Norway Audio ios App SDK]]'''&lt;br /&gt;
|-&lt;br /&gt;
| {{OSIcon|AndroidIcon.png}}&lt;br /&gt;
| '''[[DCR Norway Audio Android App SDK]]'''&lt;br /&gt;
|-&lt;br /&gt;
| {{OSIcon|BrowserIcon.png}}&lt;br /&gt;
| '''[[DCR Norway Audio Browser SDK]]'''&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: 90px;&amp;quot; | Poland&lt;br /&gt;
! style=&amp;quot;width: 90px;&amp;quot; |&lt;br /&gt;
! style=&amp;quot;width: 45px;&amp;quot; | &lt;br /&gt;
! style=&amp;quot;width: 45px;&amp;quot; | OS&lt;br /&gt;
!| Guide&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | {{SmallIcon|PLFlagIcon.png}}&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | {{SmallIcon|SDKIcon.png}}&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | {{OSIcon|VideoIcon.png}}&lt;br /&gt;
| {{OSIcon|macOSIcon.png}}&lt;br /&gt;
| '''[[DCR Poland Video iOS SDK]]'''&lt;br /&gt;
|-&lt;br /&gt;
| {{OSIcon|AndroidIcon.png}}&lt;br /&gt;
| '''[[DCR Poland Video Android SDK]]'''&lt;br /&gt;
|-&lt;br /&gt;
| {{OSIcon|BrowserIcon.png}}&lt;br /&gt;
| '''[[DCR Poland Video Browser SDK]]'''&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;width: 90px;&amp;quot; | India&lt;br /&gt;
! style=&amp;quot;width: 90px;&amp;quot; |&lt;br /&gt;
! style=&amp;quot;width: 45px;&amp;quot; | &lt;br /&gt;
! style=&amp;quot;width: 45px;&amp;quot; | OS&lt;br /&gt;
!| Guide&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | {{SmallIcon|INFlagIcon.png}}&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | {{SmallIcon|SDKIcon.png}}&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | {{OSIcon|VideoIcon.png}}&lt;br /&gt;
|-&lt;br /&gt;
|  {{OSIcon|macOSIcon.png}}&lt;br /&gt;
| '''[[DCR India Video iOS SDK]]'''&lt;br /&gt;
|-&lt;br /&gt;
| {{OSIcon|AndroidIcon.png}}&lt;br /&gt;
| '''[[DCR India Video Android SDK]]'''&lt;br /&gt;
|-&lt;br /&gt;
| {{OSIcon|BrowserIcon.png}}&lt;br /&gt;
| '''[[DCR India Video Browser SDK]]'''&lt;br /&gt;
|}&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;width: 90px;&amp;quot; | Sweden&lt;br /&gt;
! style=&amp;quot;width: 90px;&amp;quot; |&lt;br /&gt;
! style=&amp;quot;width: 45px;&amp;quot; | &lt;br /&gt;
! style=&amp;quot;width: 45px;&amp;quot; | OS&lt;br /&gt;
!| Guide&lt;br /&gt;
!| Links&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;5&amp;quot; | {{SmallIcon|SWflagicon.png}}&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | {{SmallIcon|SDKIcon.png}}&lt;br /&gt;
| rowspan=&amp;quot;5&amp;quot; | {{OSIcon|VideoIcon.png}}&lt;br /&gt;
|-&lt;br /&gt;
|  {{OSIcon|macOSIcon.png}}&lt;br /&gt;
| '''[[DCR Sweden Video iOS SDK]]'''&lt;br /&gt;
| [https://engineeringportal.nielsen.com/docs/Special:ClickThrough?region=SE Sign License Agreement]&lt;br /&gt;
|-&lt;br /&gt;
| {{OSIcon|AndroidIcon.png}}&lt;br /&gt;
| '''[[DCR Sweden Video Android SDK]]'''&lt;br /&gt;
| [https://engineeringportal.nielsen.com/docs/Special:ClickThrough?region=SE Sign License Agreement]&lt;br /&gt;
|-&lt;br /&gt;
| {{OSIcon|BrowserIcon.png}}&lt;br /&gt;
| '''[[DCR Sweden Video Browser SDK]]'''&lt;br /&gt;
| [https://engineeringportal.nielsen.com/docs/Special:ClickThrough?region=SE Sign License Agreement]&lt;br /&gt;
|-&lt;br /&gt;
| {{SmallIcon|CloudAPIIcon.png}}&lt;br /&gt;
| {{OSIcon|APIIcon.png}}&lt;br /&gt;
| '''[[DCR Sweden Video Cloud API]]'''&lt;br /&gt;
| [https://engineeringportal.nielsen.com/docs/Special:ClickThrough?region=SE Sign License Agreement]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;width: 90px;&amp;quot; | Taiwan&lt;br /&gt;
! style=&amp;quot;width: 90px;&amp;quot; |&lt;br /&gt;
! style=&amp;quot;width: 45px;&amp;quot; | &lt;br /&gt;
! style=&amp;quot;width: 45px;&amp;quot; | OS&lt;br /&gt;
!| Guide&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | {{SmallIcon|TWFlagIcon.png}}&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | {{SmallIcon|SDKIcon.png}}&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | {{OSIcon|VideoIcon.png}}&lt;br /&gt;
| {{OSIcon|macOSIcon.png}}&lt;br /&gt;
| '''[[DCR Taiwan Video iOS SDK]]'''&lt;br /&gt;
|-&lt;br /&gt;
| {{OSIcon|AndroidIcon.png}}&lt;br /&gt;
| '''[[DCR Taiwan Video Android SDK]]'''&lt;br /&gt;
|-&lt;br /&gt;
| {{OSIcon|BrowserIcon.png}}&lt;br /&gt;
| '''[[DCR Taiwan Video Browser SDK]]'''&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;width: 90px;&amp;quot; | Thailand&lt;br /&gt;
! style=&amp;quot;width: 90px;&amp;quot; |&lt;br /&gt;
! style=&amp;quot;width: 45px;&amp;quot; | &lt;br /&gt;
! style=&amp;quot;width: 45px;&amp;quot; | OS&lt;br /&gt;
!| Guide&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | {{SmallIcon|THFlagIcon.png}}&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | {{SmallIcon|SDKIcon.png}}&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | {{OSIcon|VideoIcon.png}}&lt;br /&gt;
| {{OSIcon|macOSIcon.png}}&lt;br /&gt;
| '''[[DCR Thailand Video iOS SDK]]'''&lt;br /&gt;
|-&lt;br /&gt;
| {{OSIcon|AndroidIcon.png}}&lt;br /&gt;
| '''[[DCR Thailand Video Android SDK]]'''&lt;br /&gt;
|-&lt;br /&gt;
| {{OSIcon|BrowserIcon.png}}&lt;br /&gt;
| '''[[DCR Thailand Video Browser SDK]]'''&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>ColinBrown</name></author>
	</entry>
	<entry>
		<id>https://nielsentest.mywikis.net/w/index.php?title=DCR_KSA_Video_Browser_SDK&amp;diff=5882</id>
		<title>DCR KSA Video Browser SDK</title>
		<link rel="alternate" type="text/html" href="https://nielsentest.mywikis.net/w/index.php?title=DCR_KSA_Video_Browser_SDK&amp;diff=5882"/>
		<updated>2022-07-15T23:39:38Z</updated>

		<summary type="html">&lt;p&gt;ColinBrown: Created page with &amp;quot;{{Breadcrumb|}} {{Breadcrumb|Digital}} {{Breadcrumb|International DCR}}  {{CurrentBreadcrumb}} Category:Digital  == Overview == The Nielsen SDK is one of multiple framewor...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Breadcrumb|}} {{Breadcrumb|Digital}} {{Breadcrumb|International DCR}}  {{CurrentBreadcrumb}}&lt;br /&gt;
[[Category:Digital]]&lt;br /&gt;
&lt;br /&gt;
== Overview ==&lt;br /&gt;
The Nielsen SDK is one of multiple framework SDKs that Nielsen provides to enable measuring linear (live) and on-demand TV viewing using TVs, mobile devices, etc.&lt;br /&gt;
The Browser SDK is the framework for browsers developers to integrate Nielsen Measurement into their media player pages. It supports a variety of Nielsen Measurement Products like Digital in TV Ratings, Digital Content Ratings ([[DCR &amp;amp; DTVR]]).&lt;br /&gt;
&lt;br /&gt;
== Prerequisites ==&lt;br /&gt;
Before you start the integration, you will need:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;width: 30px;&amp;quot; |&lt;br /&gt;
! style=&amp;quot;width: 15%;&amp;quot; | Item&lt;br /&gt;
! Description&lt;br /&gt;
! Source&lt;br /&gt;
|-style=&amp;quot;background-color:#d0f6f8;&amp;quot;&lt;br /&gt;
|| ☑ || '''App ID (appid)''' || Unique ID assigned to the player/site and configured by product. || Contact Nielsen&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Configure SDK ==&lt;br /&gt;
There are two steps required for configuring the SDK:&lt;br /&gt;
*Add Static Queue Snippet&lt;br /&gt;
*Create SDK Instance&lt;br /&gt;
&lt;br /&gt;
=== Static Queue Snippet ===&lt;br /&gt;
Add the following script tag to the website:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&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.nmrodam.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;
var nSdkInstance = NOLBUNDLE.nlsQ(&amp;quot;PXXXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX&amp;quot;, &amp;quot;nlsnInstance&amp;quot;);&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;
The static queue snippet allows the SDK APIs to be called while the actual SDK and configuration file are still being downloaded. As the queue can capture all API calls before the download completes, there is no wait time. Once the SDK is available, the API calls will transition from directing to the queue to the SDK seamlessly.&lt;br /&gt;
&lt;br /&gt;
===Create SDK Instance===&lt;br /&gt;
To initialize the SDK, create an SDK instance by making the initialization call:&lt;br /&gt;
&lt;br /&gt;
==== Initialization API Call ====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
NOLBUNDLE.nlsQ(&amp;quot;&amp;lt;apid&amp;gt;&amp;quot;, &amp;quot;&amp;lt;instanceName&amp;gt;&amp;quot;,{nol_sdkDebug: &amp;quot;debug&amp;quot;})&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
When creating an instance, pass the following three values:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Parameter	!! Description	!! Values&lt;br /&gt;
|-&lt;br /&gt;
| apid	|| Unique ID assigned to player/site ||	'PXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX'&lt;br /&gt;
|-&lt;br /&gt;
|instanceName ||	Name of SDK instance ||	&amp;quot;any string value&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| nol_sdkDebug	|| Enables Nielsen console logging. Only required for testing (not in production) || &amp;quot;{nol_sdkDebug: &amp;quot;debug&amp;quot;})&amp;quot;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Example SDK Initialization ====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
var nSdkInstance = NOLBUNDLE.nlsQ(&amp;quot;PXXXXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXX&amp;quot;, &amp;quot;nlsnInstance&amp;quot;, {nol_sdkDebug: &amp;quot;debug&amp;quot;});&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
When the initialization call is made, a unique static configuration file, &amp;lt;apid&amp;gt;.js, will be downloaded based on the apid and will be cached on the user’s browser.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Once the configuration is downloaded, the SDK itself will be downloaded and initialized. All SDK modules are included in one file: “nlsSDK600.eu.bundle.min.js”.&lt;br /&gt;
&lt;br /&gt;
=== Example SDK Configuration ===&lt;br /&gt;
The configuration should include the Static Queue Snippet and an SDK Instance for an unique AppID as shown in the example:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;script type=&amp;quot;text/javascript&amp;quot;&amp;gt;&lt;br /&gt;
	// Add Static Queue Snippet&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.nmrodam.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;
	// Created SDK Instance&lt;br /&gt;
	var nSdkInstance = NOLBUNDLE.nlsQ(&amp;quot;PXXXXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXX&amp;quot;, {nol_sdkDebug: &amp;quot;DEBUG&amp;quot;});&lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Create Metadata Objects ===&lt;br /&gt;
Before starting any measurement of an asset(Content or Ad) with the created SDK Instance, you need to create an asset metadata object in order to identify the asset. There are two types of asset metadata:&lt;br /&gt;
&lt;br /&gt;
content: identify a video&lt;br /&gt;
ad: identify each ad&lt;br /&gt;
The metadata received for each asset is used for classification and reporting.&lt;br /&gt;
&lt;br /&gt;
Metadata are passed through key-values using the Nielsen reserved keys. You will need to set up content and ad objects with the required Nielsen keys as shown in the sample code below.&lt;br /&gt;
&lt;br /&gt;
==== Content Metadata ====&lt;br /&gt;
Content metadata should remain constant throughout the completion of an episode / clip including the ads play.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Key !! Description !!	Values	 !! Required&lt;br /&gt;
|-&lt;br /&gt;
| type ||	Type of asset	|| &amp;quot;content&amp;quot;	|| Yes&lt;br /&gt;
|-&lt;br /&gt;
| assetid	|| Unique ID assigned to content (32 character limit)  || custom &amp;lt;br&amp;gt;(no [[Special Characters]])|| Yes&lt;br /&gt;
|-&lt;br /&gt;
| program	|| Name of program (100 characters limit)	|| custom	|| Yes&lt;br /&gt;
|-&lt;br /&gt;
| title	|| Episode title (100 characters limit)	|| custom	|| Yes&lt;br /&gt;
|-&lt;br /&gt;
| length	|| Length of content in seconds for VOD (Video on demand). The value for live stream content is 0. ||&lt;br /&gt;
*&amp;quot;seconds&amp;quot;– VOD&lt;br /&gt;
*&amp;quot;0&amp;quot;– Live Stream&lt;br /&gt;
||	&lt;br /&gt;
Yes&lt;br /&gt;
|-&lt;br /&gt;
| airdate	|| The airdate in the linear TV. Original (local) air date and time (hh:mm:ss as 24h time stamp); if not known set it to eg. &amp;quot;19700101 00:00:00&amp;quot; ||	YYYYMMDD hh:mm:ss	|| Yes&lt;br /&gt;
|-&lt;br /&gt;
| isfullepisode	|| Full episode flag ||	&lt;br /&gt;
*&amp;quot;y&amp;quot;– full episode&lt;br /&gt;
*&amp;quot;n&amp;quot;– non full episode	&lt;br /&gt;
||&lt;br /&gt;
Yes&lt;br /&gt;
|-&lt;br /&gt;
|adloadtype	|| type of ad load:&lt;br /&gt;
* 1) Linear – matches TV ad load &lt;br /&gt;
* 2) Dynamic – Dynamic Ad Insertion (DAI)&lt;br /&gt;
||&lt;br /&gt;
*&amp;quot;1&amp;quot; – content with linear ads &lt;br /&gt;
*&amp;quot;2&amp;quot; – content with dynamic ads	&lt;br /&gt;
||&lt;br /&gt;
Yes &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Example Content Object ====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
var content_metadata_object = {  &lt;br /&gt;
&lt;br /&gt;
  // SDK Metadata&lt;br /&gt;
  type:           'content',&lt;br /&gt;
  assetid:        'VID123-123456',&lt;br /&gt;
  program:        'program name',&lt;br /&gt;
  title:          'episode title',&lt;br /&gt;
  length:         '543', // length in seconds (String) &lt;br /&gt;
  airdate:        '19700101 00:00:00',&lt;br /&gt;
  isfullepisode:  'y',&lt;br /&gt;
  adloadtype:     '2'&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Ad Metadata ===&lt;br /&gt;
The Ad Metadata (if applicable) should be passed for each individual ad.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Keys	!! Description	!! Values	!! Required&lt;br /&gt;
|-&lt;br /&gt;
| type 	|| type of Ad	||  &amp;lt;code&amp;gt;'preroll'&amp;lt;/code&amp;gt;,  &amp;lt;code&amp;gt;'midroll'&amp;lt;/code&amp;gt;,  &amp;lt;code&amp;gt;'postroll'&amp;lt;/code&amp;gt; ||  Yes&lt;br /&gt;
|-&lt;br /&gt;
| assetid ||	unique ID assigned to Ad	|| custom	|| Yes&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Example Ad Object ====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
var adMetadataObject = &lt;br /&gt;
{  &lt;br /&gt;
  type:    'preroll',&lt;br /&gt;
  assetid: 'AD-1'&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;blockquote&amp;gt; URL Character Limit: There is a URL character limit of 2K characters due to browser limitations. Exceeding this value could impair data delivery on particular browsers. &amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Start the Measurement ===&lt;br /&gt;
Nielsen APIs calls are made by calling the function ggPM(&amp;quot;event&amp;quot;, parameter, ...) with &amp;quot;event&amp;quot; Parameter indicating the SDK API.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
nSdkInstance.ggPM(&amp;quot;event&amp;quot;, parameter, ...);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Event !!	Parameter	!! Description&lt;br /&gt;
|-&lt;br /&gt;
| &amp;quot;loadMetadata&amp;quot;	|| content/ad metadata object	|| Needs to be called at the beginning of each asset&lt;br /&gt;
|-&lt;br /&gt;
| &amp;quot;setPlayheadPosition&amp;quot;	|| playhead position as integer&amp;lt;br/&amp;gt;&lt;br /&gt;
VOD: current position in seconds &amp;lt;br/&amp;gt;&lt;br /&gt;
Live: current Unix timestamp (seconds since 01-01-1970 UTC) &amp;lt;br/&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
Pass playhead position every second during playback&lt;br /&gt;
|-&lt;br /&gt;
|-&lt;br /&gt;
| &amp;quot;stop&amp;quot; ||	playhead position in seconds	|| Call when content interrupted/paused or ads complete playing and pass playhead position&lt;br /&gt;
|-&lt;br /&gt;
| &amp;quot;end&amp;quot;	|| playhead position in seconds	|| Call when the current video asset completes playback and pass the playhead position. &amp;lt;br/&amp;gt;&lt;br /&gt;
Example: At the end of the content stream, if the user switches to another piece of content when the browser is refreshed or closed.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Start the measurement by calling the &amp;quot;event&amp;quot; names &amp;quot;loadMetadata&amp;quot; followed by &amp;quot;setPlayheadPosition&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
// START OF STREAM  (main content)&lt;br /&gt;
nSdkInstance.ggPM(&amp;quot;loadMetadata&amp;quot;, contentMetadataObject); &lt;br /&gt;
// CONTENT plays&lt;br /&gt;
// pass playhead every second&lt;br /&gt;
nSdkInstance.ggPM(&amp;quot;setPlayheadPosition&amp;quot;, playheadPosition);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Example Events ====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*'''Event:''' loadMetadata  |  '''Value Pass ( Object ):''' Content Metadata Object&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
  nSdkInstance.ggPM('loadMetadata', contentMetadataObject); &lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*'''Event:''' loadMetadata  |  '''Value Pass  ( Object ):''' Pre-roll AD Metadata Object&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
  nSdkInstance.ggPM('loadMetadata', prerollMetadataObject); &lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*'''Event:''' setPlayheadPosition  |  '''Value Pass ( Integer ):''' playheadPosition&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
  nSdkInstance.ggPM('setPlayheadPosition', playheadPosition); &lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*'''Event:''' stop  |  '''Value Pass ( Integer ):''' stopPlayheadPosition &lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
  nSdkInstance.ggPM('stop', stopPlayheadPosition); &lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*'''Event:''' end  |  '''Value Pass ( Integer ):''' endPlayheadPosition &lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
  nSdkInstance.ggPM('end', endPlayheadPosition); &lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Stop/Resume the Measurement for video Playback Interruptions ==&lt;br /&gt;
&lt;br /&gt;
=== Handle Video Playback Interruption ===&lt;br /&gt;
The setPlayheadPostion event is used for handling playback interruption. To indicate that the video player is not playing (i.e. paused, buffering), stop passing the playhead position to the SDK. &lt;br /&gt;
Once the Playback resumes , begin sending the playhead position again with the correct playhead value.&lt;br /&gt;
&lt;br /&gt;
=== List of video Playback Interruptions ===&lt;br /&gt;
The following possible  video Playback Interruptions must be handled:&lt;br /&gt;
* Player PAUSED&lt;br /&gt;
* Player BUFFERING&lt;br /&gt;
* Browser/Tab close&lt;br /&gt;
* Leaving the page to another destination&lt;br /&gt;
* Pressing the stop button&lt;br /&gt;
* Network Loss&lt;br /&gt;
&lt;br /&gt;
=== Example for handling Playback Interruption: Browser/Tab close/Page Reload ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
window.addEventListener(&amp;quot;beforeunload&amp;quot;, function(event) &lt;br /&gt;
{&lt;br /&gt;
  // Only inside an Ad indicate &amp;lt;stop&amp;gt; for the ad&lt;br /&gt;
  nSdkInstance.ggPM(&amp;quot;stop&amp;quot;, playheadPosition);&lt;br /&gt;
  &lt;br /&gt;
  // Indicate &amp;lt;end&amp;gt; for the content&lt;br /&gt;
  nSdkInstance.ggPM(&amp;quot;end&amp;quot;, playheadPosition);&lt;br /&gt;
});&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;'''Note:''' additional code may be  needed in order to support specific browser versions (e.g. older versions of Internet Explorer).&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== SDK Call Sequence ==&lt;br /&gt;
The sample event lifecycles can be used as a reference for identifying the order for calling events.&lt;br /&gt;
&lt;br /&gt;
=== Content Playback Call Sequence ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
// START OF STREAM&lt;br /&gt;
nSdkInstance.ggPM(&amp;quot;loadMetadata&amp;quot;, contentMetadataObject); &lt;br /&gt;
// CONTENT plays&lt;br /&gt;
// pass playhead every second&lt;br /&gt;
//   &lt;br /&gt;
nSdkInstance.ggPM(&amp;quot;setPlayheadPosition&amp;quot;, playheadPosition);&lt;br /&gt;
//&lt;br /&gt;
// END OF STREAM&lt;br /&gt;
nSdkInstance.ggPM(&amp;quot;end&amp;quot;, playheadPosition);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Ad Playback Call Sequence (Optional for DR) ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
// START OF Ad&lt;br /&gt;
nSdkInstance.ggPM(&amp;quot;loadMetadata&amp;quot;, adMetadataObject); &lt;br /&gt;
// Ad plays&lt;br /&gt;
// pass playhead every second&lt;br /&gt;
//   &lt;br /&gt;
nSdkInstance.ggPM(&amp;quot;setPlayheadPosition&amp;quot;, playheadPosition);&lt;br /&gt;
// END OF Ad&lt;br /&gt;
nSdkInstance.ggPM(&amp;quot;stop&amp;quot;, playheadPosition);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
* &amp;quot;setPlayheadPosition&amp;quot; is used for calculating duration and must be passed every second. The final playhead position must be sent for the current asset being played before calling &amp;quot;stop&amp;quot; or &amp;quot;end&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
* For Ad Pods, events must be called for each individual Ad. Each Ad playhead position should begin at &amp;quot;0&amp;quot; when an ad starts.&lt;br /&gt;
&lt;br /&gt;
* When content has resumed following an ad break, the playhead position update must continue where previous content segment left off. &lt;br /&gt;
* The playhead position should be passed as a rounded number with no decimals.&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Review SDK Integration Architecture Diagram ===&lt;br /&gt;
&lt;br /&gt;
==== For Content Playback ====&lt;br /&gt;
&lt;br /&gt;
[[File:nlsn-sdk-achitecture-diagram-content-v1.png||SDK Integration Architecture Diagram - Content]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== For Ad Playback ====&lt;br /&gt;
[[File:nlsn-sdk-achitecture-diagram-ad-v1.png||SDK Integration Architecture Diagram - Ad]]&lt;br /&gt;
&lt;br /&gt;
== Disclose Nielsen Privacy Statement ==&lt;br /&gt;
The Browser SDK video measurement does not set cross-domain cookies, therefore no centralized opt-out functionality is available. The Nielsen Browser SDK does not set cookies associated with the collection domain. The SDK sets specific cookie for the domain where the player is hosted (first party) and this cookie is not used across websites.&lt;br /&gt;
The only personal information collected with the SDK network pings is the IP address, which is  anonymized immediately after collection.&lt;br /&gt;
&lt;br /&gt;
In order to disclose Nielsen measurement privacy statement, please include the following items in your privacy policy:&lt;br /&gt;
* A notice that the player includes third party measurement software that allows users to contribute to market research.&lt;br /&gt;
* A link to the Nielsen Digital Measurement Privacy Policy located at&lt;br /&gt;
** https://global.nielsen.com/legal/privacy-principles/digital-measurement-privacy-statement/&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Turning off the First Party ID for Opt-out Users  ===&lt;br /&gt;
The First Party ID(FPID) is enabled by default in the Browser SDK. For Opt-out users, the First Party ID can be turned off during the initialization of the SDK Instance, i.e. the parameter enableFpid can be set to &amp;quot;false&amp;quot; (FPID disabled) or &amp;quot;true&amp;quot; (FPID enabled). &lt;br /&gt;
&lt;br /&gt;
===== Example of SDK Initialization with enableFpid =====&lt;br /&gt;
&lt;br /&gt;
====== First Party ID turned on ======&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
nSdkInstance = NOLBUNDLE.nlsQ(appID, &amp;quot;videoSdkInstance&amp;quot;, {&lt;br /&gt;
enableFpid: &amp;quot;true&amp;quot;&lt;br /&gt;
});&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====== First Party ID turned off ======&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
nSdkInstance = NOLBUNDLE.nlsQ(appID, &amp;quot;videoSdkInstance&amp;quot;, {&lt;br /&gt;
enableFpid: &amp;quot;false&amp;quot;&lt;br /&gt;
});&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Test your player by yourself ==&lt;br /&gt;
=== Guide ===&lt;br /&gt;
1. Run your player in the Browser, start a video&amp;lt;br /&amp;gt;&lt;br /&gt;
2. Open the Developer Network View in order to monitor network traffic&amp;lt;br /&amp;gt;&lt;br /&gt;
3. Filter the network traffic by &amp;quot;nmr&amp;quot; and confirm presence of SDK pings&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Example of SDK ping ===&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;https://secure-ksa.nmrodam.com/cgi-bin/gn?prd=dcr&amp;amp;ci=us-500207&amp;amp;ch=us-500207_c77_P&amp;amp;asn=defChnAsset&amp;amp;fp_id=&amp;amp;fp_cr_tm=&amp;amp;fp_acc_tm=&amp;amp;fp_emm_tm=&amp;amp;ve_id=&amp;amp;devmodel=&amp;amp;manuf=&amp;amp;sysname=&amp;amp;sysversion=&amp;amp;sessionId=zlmmxkq867zt4bpnumlyz6dpn9hyp1610980356&amp;amp;tl=Episode%201&amp;amp;prv=1&amp;amp;c6=vc%2Cc77&amp;amp;ca=us-500207_c77_VID5556674-123456&amp;amp;cg=TAMSample%20DK&amp;amp;c13=asid%2CP10DF14BA-937E-436D-99DF-ED39A0422387&amp;amp;c32=segA%2CNA&amp;amp;c33=segB%2CNA&amp;amp;c34=segC%2CNA&amp;amp;c15=apn%2C&amp;amp;plugv=&amp;amp;playerv=&amp;amp;sup=1&amp;amp;segment2=&amp;amp;segment1=&amp;amp;forward=0&amp;amp;ad=0&amp;amp;cr=4_00_99_V1_00000&amp;amp;c9=devid%2C&amp;amp;enc=true&amp;amp;c1=nuid%2C999&amp;amp;at=view&amp;amp;rt=video&amp;amp;c16=sdkv%2Cbj.6.0.0&amp;amp;c27=cln%2C0&amp;amp;crs=&amp;amp;lat=&amp;amp;lon=&amp;amp;c29=plid%2C16109803568088038&amp;amp;c30=bldv%2C6.0.0.563&amp;amp;st=dcr&amp;amp;c7=osgrp%2C&amp;amp;c8=devgrp%2C&amp;amp;c10=plt%2C&amp;amp;c40=adbid%2C&amp;amp;c14=osver%2CNA&amp;amp;c26=dmap%2C1&amp;amp;dd=&amp;amp;hrd=&amp;amp;wkd=&amp;amp;c35=adrsid%2C&amp;amp;c36=cref1%2C&amp;amp;c37=cref2%2C&amp;amp;c11=agg%2C1&amp;amp;c12=apv%2C&amp;amp;c51=adl%2C0&amp;amp;c52=noad%2C0&amp;amp;sd=170&amp;amp;devtypid=&amp;amp;pc=NA&amp;amp;c53=fef%2Cy&amp;amp;c54=oad%2C20200713%2010%3A22%3A00&amp;amp;c55=cref3%2C&amp;amp;c57=adldf%2C2&amp;amp;ai=VID5556674-123456&amp;amp;c3=st%2Cc&amp;amp;c64=starttm%2C1610980392&amp;amp;adid=VID5556674-123456&amp;amp;c58=isLive%2Cfalse&amp;amp;c59=sesid%2Cgezrb92q4i9b9jg7acxgn783gjw0a1610980365&amp;amp;c61=createtm%2C1610980392&amp;amp;c63=pipMode%2C&amp;amp;c68=bndlid%2C&amp;amp;nodeTM=&amp;amp;logTM=&amp;amp;c73=phtype%2C&amp;amp;c74=dvcnm%2C&amp;amp;c76=adbsnid%2C&amp;amp;c77=adsuprt%2C2&amp;amp;uoo=&amp;amp;evdata=&amp;amp;c71=ottflg%2C0&amp;amp;c72=otttyp%2Cnone&amp;amp;c44=progen%2C&amp;amp;davty=0&amp;amp;si=http%3A%2F%2Fnielsenonlinesupport.com%2Fdk%2Findex.htm&amp;amp;c66=mediaurl%2Cassets%252FRTVOD_C3%252Fprog_index.m3u8&amp;amp;c62=sendTime%2C1610980392&amp;amp;rnd=714644&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Provide your app for certification ==&lt;br /&gt;
Once ready please send your web application to Nielsen local staff for certification.&lt;br /&gt;
&lt;br /&gt;
== Going Live ==&lt;br /&gt;
After the integration has been certified (but not prior that), disable debug logging by deleting {nol_sdkDebug: &amp;quot;DEBUG&amp;quot;} from Initialization API Call.&lt;br /&gt;
&lt;br /&gt;
'''Note''': before going live you have to inform Nielsen - this is necessary, because Nielsen team has to adjust internal configuration parameter to enable data collection. Without that notification no data will be collected and no data will be reported.&lt;/div&gt;</summary>
		<author><name>ColinBrown</name></author>
	</entry>
	<entry>
		<id>https://nielsentest.mywikis.net/w/index.php?title=DCR_KSA_Video_Android_SDK&amp;diff=5881</id>
		<title>DCR KSA Video Android SDK</title>
		<link rel="alternate" type="text/html" href="https://nielsentest.mywikis.net/w/index.php?title=DCR_KSA_Video_Android_SDK&amp;diff=5881"/>
		<updated>2022-07-15T23:39:04Z</updated>

		<summary type="html">&lt;p&gt;ColinBrown: Created page with &amp;quot;{{Breadcrumb|}} {{Breadcrumb|Digital}} {{Breadcrumb|International DCR}}  {{CurrentBreadcrumb}} Category:Digital  __TOC__  == Overview == The Nielsen SDK is one of the mult...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Breadcrumb|}} {{Breadcrumb|Digital}} {{Breadcrumb|International DCR}}  {{CurrentBreadcrumb}}&lt;br /&gt;
[[Category:Digital]]&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
== Overview ==&lt;br /&gt;
The Nielsen SDK is one of the multiple framework SDKs that Nielsen provides to enable measuring linear (live) and on-demand TV viewing using TVs, mobile devices, etc.&lt;br /&gt;
The App SDK is the framework for mobile application developers to integrate Nielsen Measurement into their media player applications. It supports a variety of Nielsen Measurement Products like  It supports a variety of Nielsen Measurement Products like Digital in TV Ratings ([[DCR &amp;amp; DTVR|DTVR]]), Digital Content Ratings ([[DCR &amp;amp; DTVR|DCR]]), and [[Digital Ad Ratings]] (DAR). Nielsen SDKs are also equipped to measure static content and can track key life cycle events of an application like:&lt;br /&gt;
*Application launch events and how long app was running&lt;br /&gt;
*Time of viewing a subsection/page in the application.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
This ''SDK Android integration guide'' is applicable for '''Android TV''' as well.&lt;br /&gt;
&lt;br /&gt;
== Prerequisites ==&lt;br /&gt;
Before you start the integration, you will need:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;width: 30px;&amp;quot; |&lt;br /&gt;
! style=&amp;quot;width: 15%;&amp;quot; | Item&lt;br /&gt;
! Description&lt;br /&gt;
! Source&lt;br /&gt;
|-style=&amp;quot;background-color:#d0f6f8;&amp;quot;&lt;br /&gt;
|| ☑ || &amp;quot;App ID (appid)&amp;quot; || Unique ID assigned to the player/site and configured by product. || Contact Nielsen&lt;br /&gt;
|-style=&amp;quot;background-color:#d0f6f8;&amp;quot;&lt;br /&gt;
|| ☑ || &amp;quot;Nielsen SDK&amp;quot; || Includes SDK frameworks and &amp;quot;sample implementation&amp;quot;; &amp;quot;See [[Android SDK Release Notes]]&amp;quot; || [[Special:Downloads|Download]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== How to obtain the NielsenAppApi ===&lt;br /&gt;
The Nielsen AppSDK can either be downloaded directly or can be integrated directly within an application through the use of Gradle. We recommend using the Gradle-based integration whenever possible to ensure you maintain the most recent changes and enhancements to the Nielsen libraries.&lt;br /&gt;
* [[Digital_Measurement_Android_Artifactory_Guide|Select to obtain Gradle implementation guide]]&lt;br /&gt;
* [[Special:Downloads|Select to Download Directly]]&lt;br /&gt;
&lt;br /&gt;
== Setting up your  Development Environment  ==&lt;br /&gt;
=== Configuring Android Development Environment ===&lt;br /&gt;
*The Nielsen App SDK (located in the [https://engineeringportal.nielsen.com/docs/Special:Downloads Downloads section] of the website) class is the primary application interface to the Nielsen App SDK on Android.&lt;br /&gt;
*The Nielsen App SDK class is defined as the only public class belonging to the com.nielsen.app.sdk package.&lt;br /&gt;
*The Nielsen App SDK can also be added via [https://engineeringportal.nielsen.com/docs/Digital_Measurement_Android_Artifactory_Guide Artifact Repository].&lt;br /&gt;
&lt;br /&gt;
'''Nielsen App SDK is compatible with Android OS versions 2.3+. Clients can control / configure the protocol to be used – HTTPS or HTTP to suit their needs.'''&lt;br /&gt;
&lt;br /&gt;
The requirement for the Java ''AppSdk.jar'' library and the ''libAppSdk.so'' native library will depend on the type of host application that will make use of them.&lt;br /&gt;
* '''For Video player applications'''&lt;br /&gt;
** The Android OS hosting the App SDK should use a media player supporting HLS streaming (Android 3.0 and later will support it natively).&lt;br /&gt;
** If the player application uses a 3rd party media player implementing its own HLS, then the minimum Android version will be limited to version 2.3, since the SDK depends on Google Play support to work properly.&lt;br /&gt;
&lt;br /&gt;
Once SDK is downloaded ensure to unzip the Nielsen SDK and copy the AppSdk.jar in your app (Android Studio) libs folder, then right click the AppSdk.jar and select '''Add As Library'''.&lt;br /&gt;
Ensure the AppSdk.jar file is added in 'build.grade (App Level) file.&lt;br /&gt;
* App SDK 1.2 provides support for x86, mips, and armeabi-7a architecture.&lt;br /&gt;
&lt;br /&gt;
==== Google Play Services ====&lt;br /&gt;
Add the Google Play Services in the project,&lt;br /&gt;
Steps: Android Studio -&amp;gt; File -&amp;gt; Project Structure -&amp;gt;(In module selection) select App -&amp;gt; Dependencies (tab) -&amp;gt; Click &amp;quot;+&amp;quot; button and search for &amp;lt;code&amp;gt;&amp;quot;*play-services*&amp;quot;&amp;lt;/code&amp;gt;.  Then select the most recent version of the play-services Artifact.&lt;br /&gt;
Ensure it is added in build.gradle (App level) file&lt;br /&gt;
&lt;br /&gt;
==== Google AD ID Permissions ====&lt;br /&gt;
The following is required if target API level is set to 31 (Android 12) with the Ad Version of the Nielsen SDK.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;uses-permission android:name=&amp;quot;com.google.android.gms.permission.AD_ID&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Manifest File ==== &lt;br /&gt;
* Add the following permissions on the project’s ''AndroidManifest.xml'' file.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;uses-permission android:name=&amp;quot;android.permission.ACCESS_NETWORK_STATE&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;uses-permission android:name=&amp;quot;android.permission.INTERNET&amp;quot;/&amp;gt;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
For more details to handle runtime permissions in Android versions, please visit [https://developer.android.com/training/permissions/requesting.html].   &lt;br /&gt;
&lt;br /&gt;
* In &amp;lt;code&amp;gt;AndroidManifest.xml &amp;lt;/code&amp;gt;under &amp;lt;code&amp;gt;&amp;lt;application&amp;gt;&amp;lt;/code&amp;gt; add the following metadata&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&amp;lt;meta-data &lt;br /&gt;
android:name=&amp;quot;com.google.android.gms.version&amp;quot; &lt;br /&gt;
android:value=&amp;quot;@integer/google_play_services_version&amp;quot;/&amp;gt;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* App SDK checks to see if there is a Google service available and updated.&lt;br /&gt;
* If not available or updated, App SDK will not use this service when executing its functions and will make reference to missing imports and the app will not be compiled.&lt;br /&gt;
&lt;br /&gt;
==== Library ====&lt;br /&gt;
Nielsen App SDK uses the following packages/classes from the Google Play service.&lt;br /&gt;
* google-play-services_lib&lt;br /&gt;
&lt;br /&gt;
==== Classes/package ====&lt;br /&gt;
* com.google.android.gms.ads.identifier.AdvertisingIdClient;&lt;br /&gt;
* com.google.android.gms.ads.identifier.AdvertisingIdClient.Info;&lt;br /&gt;
* com.google.android.gms.common.ConnectionResult;&lt;br /&gt;
* com.google.android.gms.common.GooglePlayServicesUtil;&lt;br /&gt;
* com.google.android.gms.common.GooglePlayServicesRepairableException;&lt;br /&gt;
* com.google.android.gms.common.GooglePlayServicesNotAvailableException;&lt;br /&gt;
&lt;br /&gt;
== Create SDK Instance ==&lt;br /&gt;
The latest version of the Nielsen App SDK allows instantiating multiple instances of the SDK object when needed, which can then be used simultaneously. '''For the general use case where only one video is played at the same time in the App, a single instance of SDK object can then be used to play back and measure all watched streams one after another.'''&lt;br /&gt;
&lt;br /&gt;
The following table contains the list of arguments that can be passed via the AppInfo JSON schema.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Parameter / Argument !! Description !! Source !! Required/Obligatory? !! Example&lt;br /&gt;
|-&lt;br /&gt;
| appid || Unique id for the application assigned by Nielsen. It is GUID data type.|| Nielsen-specified || Yes || &amp;quot;PXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| appname || Name of the application || Client-defined || Yes || &amp;quot;Nielsen Sample App&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| appversion || Current version of the app used || Client-defined || Yes || &amp;quot;1.0.2&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| sfcode || Nielsen collection facility to which the SDK should connect.&lt;br /&gt;
|| Nielsen-specified || Yes || &amp;quot;ksa&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| nol_devDebug || Enables Nielsen console logging. Only required for testing&lt;br /&gt;
|| Nielsen-specified || Optional || &amp;quot;DEBUG&amp;quot;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
1) [[AppSDK()|AppSDK()]] is no longer a singleton object and should be created as below.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
try{&lt;br /&gt;
  // Prepare AppSdk configuration object (JSONObject)&lt;br /&gt;
  JSONObject appSdkConfig = new JSONObject()&lt;br /&gt;
          .put(&amp;quot;appid&amp;quot;, &amp;quot;PXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX&amp;quot;)&lt;br /&gt;
          .put(&amp;quot;appversion&amp;quot;, &amp;quot;1.0.2&amp;quot;)&lt;br /&gt;
          .put(&amp;quot;appname&amp;quot;, &amp;quot;Nielsen Sample App&amp;quot;)&lt;br /&gt;
          .put(&amp;quot;sfcode&amp;quot;, &amp;quot;ksa&amp;quot;)&lt;br /&gt;
          .put(&amp;quot;nol_devDebug&amp;quot;, &amp;quot;DEBUG&amp;quot;); // only for debug builds &lt;br /&gt;
&lt;br /&gt;
         // Pass appSdkConfig to the AppSdk constructor&lt;br /&gt;
         mAppSdk = new AppSdk(appContext, appSdkConfig, this);&lt;br /&gt;
}&lt;br /&gt;
catch (JSONException e){&lt;br /&gt;
         Log.e(TAG, &amp;quot;Couldn’t prepare JSONObject for appSdkConfig&amp;quot;, e);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
2) implement IAppNotifier into your activity like&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;public class MainActivity extends AppCompatActivity implements IAppNotifier&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
3) implement callback&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;@Override&lt;br /&gt;
public void onAppSdkEvent(long timestamp, int code, String description){&lt;br /&gt;
  Log.d(TAG, &amp;quot;SDK callback onAppSdkEvent &amp;quot; + description);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
So whole Activity will look like&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
import android.content.Context;&lt;br /&gt;
import android.support.v7.app.AppCompatActivity;&lt;br /&gt;
import android.os.Bundle;&lt;br /&gt;
import android.util.Log;&lt;br /&gt;
&lt;br /&gt;
import com.nielsen.app.sdk.*;&lt;br /&gt;
&lt;br /&gt;
import org.json.JSONException;&lt;br /&gt;
import org.json.JSONObject;&lt;br /&gt;
&lt;br /&gt;
public class MainActivity extends AppCompatActivity implements IAppNotifier {&lt;br /&gt;
&lt;br /&gt;
    private AppSdk mAppSdk = null;&lt;br /&gt;
    private String TAG = &amp;quot;MainActivity&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
    @Override&lt;br /&gt;
    protected void onCreate(Bundle savedInstanceState) {&lt;br /&gt;
        super.onCreate(savedInstanceState);&lt;br /&gt;
        setContentView(R.layout.activity_main);&lt;br /&gt;
&lt;br /&gt;
        Context context = getApplicationContext();&lt;br /&gt;
&lt;br /&gt;
        try{&lt;br /&gt;
            // Prepare AppSdk configuration object (JSONObject)&lt;br /&gt;
            JSONObject appSdkConfig = new JSONObject()&lt;br /&gt;
                    .put(&amp;quot;appid&amp;quot;, &amp;quot;PXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX&amp;quot;)&lt;br /&gt;
                    .put(&amp;quot;appversion&amp;quot;, &amp;quot;1.0.2&amp;quot;)&lt;br /&gt;
                    .put(&amp;quot;appname&amp;quot;, &amp;quot;Nielsen Sample App&amp;quot;)&lt;br /&gt;
                    .put(&amp;quot;sfcode&amp;quot;, &amp;quot;ksa&amp;quot;)&lt;br /&gt;
                    .put(&amp;quot;nol_devDebug&amp;quot;, &amp;quot;DEBUG&amp;quot;); // only for debug builds&lt;br /&gt;
&lt;br /&gt;
            // Pass appSdkConfig to the AppSdk constructor&lt;br /&gt;
            mAppSdk = new AppSdk(context, appSdkConfig, this ); // Notifier - activity implements IAppNotifier, callback in onAppSdkEvent()&lt;br /&gt;
&lt;br /&gt;
        }&lt;br /&gt;
        catch (JSONException e){&lt;br /&gt;
            Log.e(TAG, &amp;quot;Couldn’t prepare JSONObject for appSdkConfig&amp;quot;, e);&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    @Override&lt;br /&gt;
    public void onAppSdkEvent(long timestamp, int code, String description) {&lt;br /&gt;
        Log.d(TAG, &amp;quot;SDK callback onAppSdkEvent &amp;quot; + description);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== APP SDK Error &amp;amp; Event Codes ====&lt;br /&gt;
To view the Error and Event codes for iOS and Android, please review the [[APP SDK Event Codes|App SDK Event Code]] Reference page.&lt;br /&gt;
&lt;br /&gt;
==== Life cycle of SDK instance ====&lt;br /&gt;
Life cycle of SDK instance includes four general states:&lt;br /&gt;
# '''Initial state''' – The SDK is not initialized and hence, not ready to process playing information. Once the SDK is moved out of this state, it needs instantiation of the new SDK instance in order to get the instance in the &amp;quot;&amp;quot;Initial state&amp;quot;&amp;quot;.&lt;br /&gt;
# '''Idle state'''– The SDK is initialized and is ready to process playing information. Once Initialized, the SDK instance is not processing any data, but is listening for the play event to occur.&lt;br /&gt;
# '''Processing state''' – The SDK instance is processing playing information. API calls &amp;quot;play&amp;quot; and &amp;quot;loadMetadata&amp;quot; move the SDK instance into this state. In this state, the SDK instance will be able to process the API calls (see below)&lt;br /&gt;
# '''Disabled state''' – The SDK instance is disabled and is not processing playing information. SDK instance moves into this state in one of the following scenarios.&lt;br /&gt;
## Initialization fails&lt;br /&gt;
## &amp;lt;code&amp;gt;appDisableApi&amp;lt;/code&amp;gt; is called&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;objective-c&amp;quot;&amp;gt;&lt;br /&gt;
@property (assign) BOOL appDisableApi;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Create Metadata Objects ==&lt;br /&gt;
The parameters passed must be either a JSON formatted string. The JSON passed in the SDK must be well-formed.&lt;br /&gt;
&lt;br /&gt;
* JSON value must be string value.&lt;br /&gt;
** This includes boolean and numeric values. For example, a value of true should be represented with &amp;quot;true&amp;quot;, number value 123 should be &amp;quot;123&amp;quot;.&lt;br /&gt;
** All the Variable Names like appid, appname, dataSrc, title, type etc. are case-sensitive. Use the correct variable name as specified in the documentation.&lt;br /&gt;
* JSON string can be prepared using either raw NSString or serialized NSDictionary.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Create channelName Metadata ===&lt;br /&gt;
channelName should remain constant throughout the completion of an episode or live stream.&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Key !! Description !!	Values	 !! Required&lt;br /&gt;
|-&lt;br /&gt;
| channelName	|| Any string representing the channel/stream	|| custom	|| Yes&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Create Content Metadata ====&lt;br /&gt;
Content metadata should remain constant throughout the entirety of an episode/clip including when ads play.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Keys	!! Description	!! Values	!! Required&lt;br /&gt;
|-&lt;br /&gt;
| type 	|| type of asset || &amp;lt;code&amp;gt;'content'&amp;lt;/code&amp;gt; || Yes&lt;br /&gt;
|-&lt;br /&gt;
| assetid || unique ID assigned to asset (32 Character limit) || custom (no [[Special Characters|Special Characters]]) || Yes&lt;br /&gt;
|-&lt;br /&gt;
| program || name of program (100 character limit) || custom || Yes&lt;br /&gt;
|-&lt;br /&gt;
| title || name of program (100 character limit) || custom || Yes&lt;br /&gt;
|-&lt;br /&gt;
| length || length of content in seconds || &amp;lt;code&amp;gt;seconds&amp;lt;/code&amp;gt; (0 for live stream) || Yes&lt;br /&gt;
|-&lt;br /&gt;
| airdate || the airdate in the linear TV || YYYYMMDD HH24:MI:SS || Yes&lt;br /&gt;
|-&lt;br /&gt;
| isfullepisode || full episode flag || &amp;lt;code&amp;gt;'y'&amp;lt;/code&amp;gt;- full episode, &amp;lt;code&amp;gt;'n'&amp;lt;/code&amp;gt;- non full episode || Yes&lt;br /&gt;
|-&lt;br /&gt;
| adloadtype || type of ad load:&lt;br /&gt;
*&amp;lt;code&amp;gt;'1'&amp;lt;/code&amp;gt; Linear – matches TV ad load&lt;br /&gt;
*&amp;lt;code&amp;gt;'2'&amp;lt;/code&amp;gt; Dynamic – Dynamic Ad Insertion (DAI)&lt;br /&gt;
|| &amp;lt;code&amp;gt;'2'&amp;lt;/code&amp;gt; - DCR measures content with dynamic ads &lt;br /&gt;
|| Yes&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Create Ad Metadata ====&lt;br /&gt;
The Ad Metadata (if applicable) should be passed for each individual ad.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Keys	!! Description	!! Values	!! Required&lt;br /&gt;
|-&lt;br /&gt;
| type 	|| type of Ad	||  &amp;lt;code&amp;gt;'preroll'&amp;lt;/code&amp;gt;,  &amp;lt;code&amp;gt;'midroll'&amp;lt;/code&amp;gt;,  &amp;lt;code&amp;gt;'postroll'&amp;lt;/code&amp;gt; || Yes&lt;br /&gt;
|-&lt;br /&gt;
| assetid ||	unique ID assigned to Ad	|| custom (no [[Special Characters|Special Characters]]) || Yes&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
'''Note:''' All metadata values should be passed as UTF-8 strings.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt; URL Character Limit: There is a URL character limit of 2K characters due to browser limitations. Exceeding this value could impair data delivery on particular browsers. &amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== MetaData Example ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
JSONObject channelInfo = new JSONObject()&lt;br /&gt;
    .put(&amp;quot;channelName&amp;quot;,&amp;quot;My Channel Name 1&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
JSONObject contentMetadata = new JSONObject()&lt;br /&gt;
    .put(&amp;quot;type&amp;quot;, &amp;quot;content&amp;quot;)&lt;br /&gt;
    .put(&amp;quot;assetid&amp;quot;, &amp;quot;vid345-67483&amp;quot;)&lt;br /&gt;
    .put(&amp;quot;program&amp;quot;, &amp;quot;Program Name&amp;quot;)&lt;br /&gt;
    .put(&amp;quot;title&amp;quot;, &amp;quot;Program S3, EP1&amp;quot;)&lt;br /&gt;
    .put(&amp;quot;length&amp;quot;, &amp;quot;3600&amp;quot;)&lt;br /&gt;
    .put(&amp;quot;isfullepisode&amp;quot;, &amp;quot;y&amp;quot;)&lt;br /&gt;
    .put(&amp;quot;adloadtype&amp;quot;, &amp;quot;2&amp;quot;)&lt;br /&gt;
    .put(&amp;quot;airdate&amp;quot;, &amp;quot;20161013 20:00:00&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
JSONObject adMetadata = new JSONObject()&lt;br /&gt;
    .put(&amp;quot;type&amp;quot;, &amp;quot;postroll&amp;quot;)&lt;br /&gt;
    .put(&amp;quot;assetid&amp;quot;, &amp;quot;AD-ID123&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Start the Measurement ==&lt;br /&gt;
&lt;br /&gt;
=== Overview of SDK API Calls ===&lt;br /&gt;
&lt;br /&gt;
==== play ====&lt;br /&gt;
The play method prepares the SDK for reporting once an asset has loaded and playback has begun. Use play to pass the channel descriptor information through channelName parameter when the user taps the &amp;quot;&amp;quot;Play&amp;quot;&amp;quot; button on the player. Call play only when initially starting the video.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;mAppSdk.play(JSONObject channelInfo);&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== loadMetadata ====&lt;br /&gt;
Needs to be called at the beginning of each asset, pass JSON object for relevant content or ad. Make sure to pass as 1st loadMetadata for content at the begining of playlist - see below API call sequence examples.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;mAppSdk.loadMetadata(JSONObject contentMetadata);&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== playheadPosition ====&lt;br /&gt;
Pass playhead position every second during playback. for VOD: pass current position in seconds. for Live: current Unix timestamp (seconds since Jan-1-1970 UTC) - if it is possible to seek back in Live content, then pass related Unix time (not current). Pass whole number that increments only by 1 like 1,2,3..&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;Java&amp;quot;&amp;gt;mAppSdk.setPlayheadPosition(long videoPositon);&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== stop ====&lt;br /&gt;
Call when&lt;br /&gt;
* ads complete playing&lt;br /&gt;
* when a user pauses playback&lt;br /&gt;
* upon any user interruption scenario - see bellow chapter Interruption scenario&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;mAppSdk.stop();&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== end ====&lt;br /&gt;
Call when the content asset completes playback.  Stops measurement progress.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;mAppSdk.end();&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== API Call Sequence ===&lt;br /&gt;
==== Use Case 1: Content has no Ads ====&lt;br /&gt;
Call [[play()]] at start of stream&lt;br /&gt;
&lt;br /&gt;
Call [[loadMetadata()]] with JSON metadata for content as below.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;json&amp;quot;&amp;gt;{&lt;br /&gt;
  &amp;quot;type&amp;quot;: &amp;quot;content&amp;quot;,&lt;br /&gt;
  &amp;quot;assetid&amp;quot;: &amp;quot;vid345-67483&amp;quot;,&lt;br /&gt;
  &amp;quot;program&amp;quot;: &amp;quot;ProgramName&amp;quot;,&lt;br /&gt;
  &amp;quot;title&amp;quot;: &amp;quot;Program S3, EP1&amp;quot;,&lt;br /&gt;
  &amp;quot;length&amp;quot;: &amp;quot;3600&amp;quot;,&lt;br /&gt;
  ...&lt;br /&gt;
}&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Call [[setPlayheadPosition()]] every one second until a pause.&lt;br /&gt;
Use the sample API sequence below as a reference to identify the specific events that need to be called during content playback without ads.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Type !! Sample code !! Description&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | Start of stream || &amp;lt;code&amp;gt;mAppSdk.play(); &amp;lt;/code&amp;gt; || // Call at start of each new stream&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;mAppSdk.loadMetadata(contentMetaDataObject);&amp;lt;/code&amp;gt; || // contentMetadataObject contains the JSON metadata for the content being played&lt;br /&gt;
|-&lt;br /&gt;
| Content || &amp;lt;code&amp;gt;mAppSdk.setPlayheadPosition(playheadPosition);&amp;lt;/code&amp;gt; || // position is position of the playhead while the content is being played&lt;br /&gt;
|-&lt;br /&gt;
| Interruption || &amp;lt;code&amp;gt;mAppSdk.stop();&amp;lt;/code&amp;gt; || // call stop when content playback is interrupted&lt;br /&gt;
|-&lt;br /&gt;
| Resume Content || &amp;lt;code&amp;gt;mAppSdk.setPlayheadPosition(playheadPosition);&amp;lt;/code&amp;gt; || // continue pasing playhead position every second starting from position where content is resumed&lt;br /&gt;
|- &lt;br /&gt;
| End of Stream || &amp;lt;code&amp;gt;mAppSdk.end();&amp;lt;/code&amp;gt; || // Content playback is completed.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Use Case 2: Content has Ads ====&lt;br /&gt;
Call [[play()]] with channelName JSON as below.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;json&amp;quot;&amp;gt;{&lt;br /&gt;
   &amp;quot;channelName&amp;quot;: &amp;quot;My Channel Name 1&amp;quot;&lt;br /&gt;
}&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Call [[loadMetadata()]] with JSON metadata for ad as below.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;json&amp;quot;&amp;gt;{&lt;br /&gt;
   &amp;quot;type&amp;quot;: &amp;quot;preroll&amp;quot;,&lt;br /&gt;
   &amp;quot;assetid&amp;quot;: &amp;quot;ad-123&amp;quot;&lt;br /&gt;
   ...&lt;br /&gt;
}&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;Note: In case the individual ad details are not available, send ad pod (presence) details through the [[loadMetadata]] and playhead position through [[playheadPosition]].&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Call [[setPlayheadPosition()]] every one second until a pause / another [[loadMetadata()]] is called. Playhead should be passed for the entire duration of ad pod, if the ad pod details are passed as part of [[loadMetadata()]].&lt;br /&gt;
&lt;br /&gt;
The sample API sequence can be used as a reference to identify the specific events that need to be called during content and ad playback.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Type !! Sample code !! Description&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | Start of stream || &amp;lt;code&amp;gt;mAppSdk.play(channelInfo); &amp;lt;/code&amp;gt; || // channelName contains JSON metadata of channel name being played&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;mAppSdk.loadMetadata(contentMetaDataObject);&amp;lt;/code&amp;gt; || // contentMetadataObject contains the JSON metadata for the content being played&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Preroll || &amp;lt;code&amp;gt;mAppSdk.loadMetadata(prerollMetadataObject);&amp;lt;/code&amp;gt; || // prerollMetadataObject contains the JSON metadata for the preroll ad&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;mAppSdk.setPlayheadPosition(playheadPosition);&amp;lt;/code&amp;gt; || // position is position of the playhead while the preroll ad is being played&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;mAppSdk.stop();&amp;lt;/code&amp;gt; || // Call stop after preroll occurs&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | Content || &amp;lt;code&amp;gt;mAppSdk.loadMetadata(contentMetaDataObject);&amp;lt;/code&amp;gt; || // contentMetadataObject contains the JSON metadata for the content being played&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;mAppSdk.setPlayheadPosition(playheadPosition);&amp;lt;/code&amp;gt; || // position is position of the playhead while the content is being played&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;6&amp;quot; | Midroll || &amp;lt;code&amp;gt;mAppSdk.loadMetadata(midrollMetaDataObject);&amp;lt;/code&amp;gt; || // midrollMetadataObject contains the JSON metadata for the midroll ad&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;mAppSdk.setPlayheadPosition(playheadPosition);&amp;lt;/code&amp;gt; || // position is position of the playhead while the midroll ad is being played&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;mAppSdk.stop();&amp;lt;/code&amp;gt; || // App moves to background(midroll pauses) &lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;mAppSdk.loadMetadata(midrollMetaDataObject);&amp;lt;/code&amp;gt; || // App moves to foreground (midroll resumes) &lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;mAppSdk.setPlayheadPosition(playheadPosition);&amp;lt;/code&amp;gt; || // playheadPosition is position of the playhead while the midroll ad is being played &lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;mAppSdk.stop();&amp;lt;/code&amp;gt; || // Call stop after midroll occurs&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | Content (End of stream) || &amp;lt;code&amp;gt;mAppSdk.loadMetadata(contentMetaDataObject);&amp;lt;/code&amp;gt; || // contentMetadataObject contains the JSON metadata for the content being played&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;mAppSdk.setPlayheadPosition(playheadPosition);&amp;lt;/code&amp;gt; || // position is position of the playhead while the content is being played&lt;br /&gt;
|-&lt;br /&gt;
| End of Stream || &amp;lt;code&amp;gt;mAppSdk.end();&amp;lt;/code&amp;gt; || // Call end() at the end of content&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Postroll || &amp;lt;code&amp;gt;mAppSdk.loadMetadata(postrollMetaDataObject);&amp;lt;/code&amp;gt; || // postrollMetadataObject contains the JSON metadata for the postroll ad&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;mAppSdk.setPlayheadPosition(playheadPosition);&amp;lt;/code&amp;gt; || // position is position of the playhead while the postroll ad is being played&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;mAppSdk.stop();&amp;lt;/code&amp;gt; || // Call stop after postroll occurs&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;Note: Each Ad playhead should reset or begin from 0 at ad start. When content has resumed following an ad break, playhead position must continue from where previous content segment was left off.&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Handling Foreground and Background states ==&lt;br /&gt;
There are a few approaches to managing the Foreground and Background states of an app available to use for state measurement.&lt;br /&gt;
&lt;br /&gt;
*Utilizing the Androidx LifeCycleObserver (The recommended approach starting sdk version 7.1.0.0+)&lt;br /&gt;
*Utilizing the SdkBgFgDetectionUtility class&lt;br /&gt;
*Adding a tag to the Manifest XML&lt;br /&gt;
*Manual Management&lt;br /&gt;
=== The LifeCycleObserver ===&lt;br /&gt;
AndroidX replaces the original support library APIs with packages in the androidx namespace, and Android Studio 3.2 and higher provides an automated migration tool. (Select '''Refactor&amp;gt; Migrate to AndroidX''' from the menu bar.)&lt;br /&gt;
&lt;br /&gt;
Starting with version 7.1.0, with AndroidX support, an additional utility is provided in the AppSDK - application background/foreground state detection by the AppSdk leveraging the Android Architecture component &amp;quot;LifeCycleObserver&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
The AppSdk is now capable of detecting the application UI visibility state transitions between background and foreground, without forcing the applications to register for AppSdk's AppSdkApplication class, which is responsible for handling the detection of application background/foreground state transitions at present.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;Please note, that if you already have an app designed that utilizes the depreciated SdkBgFgDetectionUtility Class, the AppSDK will ignore any calls to these methods if it can utilize the LifeCycleObserver. LifeCycleObserver based auto detection will take precedence.&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Adding the AndroidX dependency ====&lt;br /&gt;
In order to make use of the app background/foreground state transition auto detection feature of AndroidX AppSdk, the app gradle file needs the androidx dependency. The AppSdk API calls - &amp;lt;code&amp;gt;appInForeground()&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;appInBackground()&amp;lt;/code&amp;gt; will still be respected by AppSdk by executing the old AppSdk flow of handling &amp;quot;app in foreground&amp;quot; and &amp;quot;app in background&amp;quot; states as is.&lt;br /&gt;
&lt;br /&gt;
==== Using the LifeCycle Extension ====&lt;br /&gt;
The following androidx dependency is required in the app gradle file:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;implementation &amp;quot;androidx.lifecycle:lifecycle-extensions:2.1.0&amp;quot;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;If you would like to take advantage of this auto detection feature of AppSdk at the very initial stage (e.g. splash screen or at of app launch time), before the AppSdk is initialized, can do so by calling the following newly introduced AppSdk public api, passing the application context :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;public static void registerLifeCycleObserver(Context applicationContext)&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Log messages for the new auto detection ====&lt;br /&gt;
&lt;br /&gt;
*When the AppSdk app successfully registers for the LifeCycleObserver : &amp;lt;code&amp;gt;Registered LifeCycleObserver for App Background/Foreground auto-detection&amp;lt;/code&amp;gt;&lt;br /&gt;
*When the app enters the foreground state :&amp;lt;code&amp;gt;App is in foreground, auto detected by AppSDK&amp;lt;/code&amp;gt;&lt;br /&gt;
*When the app enters the background state :&amp;lt;code&amp;gt;App is in background, auto detected by AppSDK&amp;lt;/code&amp;gt;&lt;br /&gt;
*If the client app doesn't have the &amp;quot;androidx&amp;quot; gradle dependency and AppSdk fails to register LifeCycleObserver :&amp;lt;code&amp;gt;AndroidX LifecycleObserver can not be observed. Please use androidx dependency to activate SDK auto-detection of app background/foreground state.&amp;lt;/code&amp;gt;&lt;br /&gt;
*When the appInForeground() is explicitly called while LifeCycleObserver auto detection is active :&amp;lt;code&amp;gt;Ignoring the appInBackground() call, as the App Background/Foreground auto-detection is active. The current state is - foreground&amp;lt;/code&amp;gt;&lt;br /&gt;
*When the appInBackground() is explicitly called while LifeCycleObserver auto detection is active :&amp;lt;code&amp;gt;Ignoring the appInBackground() call, as the App Background/Foreground auto-detection is active. The current state is - background&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== The SdkBgFgDetectionUtility class ===&lt;br /&gt;
Foreground/Background state measurement is a requirement of Nielsen AppSDK implementation which is especially crucial for static measurement. It may be implemented in multiple ways for Android. This includes&lt;br /&gt;
&lt;br /&gt;
*Enable the Nielsen SDK to measure background/foreground state by makingthe relevant update to the AndroidManifest.&lt;br /&gt;
*Integrate Nielsen’s SdkBgFgDetectionUtility class within your Custom Application Class.&lt;br /&gt;
*Custom implementation of the required methods within your application.&lt;br /&gt;
&lt;br /&gt;
==== ForeGround/Background Measurement via AndroidManifest ====&lt;br /&gt;
The simplest way to measure the app background/foreground state is to add the following application tag to the Manifest XML. Integrating this into the Manifest XML will enable the SDK to measure app state directly. This approach is supported for Android 4.0 and up only; it requires that the application class is not in use for some other purpose.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt; &amp;lt;application android:name=&amp;quot;com.nielsen.app.sdk.AppSdkApplication&amp;quot;&amp;gt; &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Using the Android SdkBgFbDetectionUtility Class ====&lt;br /&gt;
For developers who are already using the application class, it is recommended that background/foreground state is implemented using the [[Android Background Foreground|SdkBgFgDetectionUtility class.]] The [[Android Background Foreground|SdkBgFgDetectionUtility class.]] is compatible with Android 4+ and has been made available to Nielsen clients. (You will need to copy/paste the code provided into a file).&lt;br /&gt;
&lt;br /&gt;
==== Manual Background/ForeGround State Management ====&lt;br /&gt;
In cases where the developer is not able to use the AndroidManifest.xml solution nor the Nielsen provided [[Android Background Foreground|SdkBgFgDetectionUtility class.]] the developer will need to manually identify the change of state through the application and call the respective API (appInForeground() or appInBackground()) to inform the SDK regarding the change of state from background to foreground or foreground to background.&lt;br /&gt;
&lt;br /&gt;
The SDK is informed about app state using the below methods.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;AppLaunchMeasurementManager.appInForeground(getApplicationContext());&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;AppLaunchMeasurementManager.appInBackground(getApplicationContext());&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Within the lifecycle of individual activities, onResume() and onPause() are best suited to providing indication of the app state.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Correct measurement of the foreground/background state is crucial to Static App measurement within Nielsen Digital Content Ratings (DCR).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Stop/Resume the Measurement for video Playback Interruptions ==&lt;br /&gt;
As part of integrating Nielsen App SDK with the player application, the Audio / Video app developer needs to handle the following possible interruption scenarios:&lt;br /&gt;
* Pause / Play&lt;br /&gt;
* Network Loss (Wi-Fi / Airplane / Cellular)&lt;br /&gt;
* Call Interrupt (SIM or Third party Skype / Hangout call)&lt;br /&gt;
* Alarm Interrupt&lt;br /&gt;
* Content Buffering&lt;br /&gt;
* Device Lock / Unlock (Video players only, not for Audio players)&lt;br /&gt;
* App going in the Background/Foreground (Video players only, not for Audio players)&lt;br /&gt;
* Channel / Station Change Scenario&lt;br /&gt;
* Unplugging of headphone&lt;br /&gt;
In case of encountering one of the above interruptions, the player application needs to&lt;br /&gt;
* Call &amp;lt;code&amp;gt;stop&amp;lt;/code&amp;gt; immediately (except when content is buffering) and withhold sending playhead position.&lt;br /&gt;
* Once the playback resumes, start sending pings &amp;lt;code&amp;gt;playheadPosition&amp;lt;/code&amp;gt; for the new viewing session.&lt;br /&gt;
Please see the [[Digital Measurement FAQ]] for more details&lt;br /&gt;
&lt;br /&gt;
== Review SDK Integration Architecture Diagram ==&lt;br /&gt;
&lt;br /&gt;
=== For Content Playback ===&lt;br /&gt;
&lt;br /&gt;
[[File:nlsn-sdk-achitecture-diagram-content-v1.png||SDK Integration Architecture Diagram - Content]]&lt;br /&gt;
&lt;br /&gt;
=== For Ad Playback ===&lt;br /&gt;
[[File:nlsn-sdk-achitecture-diagram-ad-v1.png||SDK Integration Architecture Diagram - Ad]]&lt;br /&gt;
&lt;br /&gt;
== Disclose Nielsen Privacy Statement ==&lt;br /&gt;
The App SDK uses Mobile Ad IDs (Android ID or IDFA) which are fully hashed on the device before being sent to Nielsen (Nielsen never receives un-hashed values).&lt;br /&gt;
Users retain the possibility to oppose the use of Mobile Ad IDs, or to reset them, by using the functionality provided by the mobile operating system (iOS or Android).&lt;br /&gt;
&lt;br /&gt;
In order to disclose Nielsen measurement privacy statement, please include the following items in your privacy policy:&lt;br /&gt;
* A notice that the player includes third party measurement software that allows users to contribute to market research.&lt;br /&gt;
* A link to the Nielsen Digital Measurement Privacy Policy located at https://global.nielsen.com/legal/privacy-principles/digital-measurement-privacy-statement/ .&lt;br /&gt;
&lt;br /&gt;
== Optional Step for DCR Chromecast Android SDK ==&lt;br /&gt;
For the implementation of Chromecast SDK architecture. Please refer to this guide: [https://engineeringportal.nielsen.com/docs/DCR_Chromecast_Android_SDK DCR Chromecast Android SDK]&lt;br /&gt;
&lt;br /&gt;
== Test your player by yourself ==&lt;br /&gt;
=== Guide ===&lt;br /&gt;
1. Connect your PC and test device (tablet or phone) via same router.&amp;lt;br /&amp;gt;&lt;br /&gt;
2. PC side: run Proxy sw (like Charles) and get local IP&amp;lt;br /&amp;gt;&lt;br /&gt;
3. Test device: modify Wifi setting to pass through Proxy IP from step 2.&amp;lt;br /&amp;gt;&lt;br /&gt;
4. Test device: run your player, launch video&amp;lt;br /&amp;gt;&lt;br /&gt;
5. PC side: filter traffic by &amp;quot;nmrodam&amp;quot; and confirm presence of SDK pings&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Example of SDK ping (https call) ===&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;https://secure-ksa.nmrodam.com/cgi-bin/gn?prd=dcr&amp;amp;ci=se-910684&amp;amp;ch=se-910684_c01_P&amp;amp;asn=defChnAsset&amp;amp;fp_id=096ohdsc0jqkmct81qpxhmn19qx041630053963&amp;amp;fp_cr_tm=1630053963&amp;amp;fp_acc_tm=1630053963&amp;amp;fp_emm_tm=1630053963&amp;amp;ve_id=afc5d61a88b62672&amp;amp;sessionId=zc6gh3uhka7d2mtobb2b2m7sixygy1630053963&amp;amp;tl=Djuren%20p%C3%A5%20Djuris&amp;amp;prv=1&amp;amp;c6=vc,c01&amp;amp;ca=se-910684_c01_218531&amp;amp;cg=Hemligheter&amp;amp;c13=asid,T1194003B-797F-4896-A5C0-05914236146E&amp;amp;c32=segA,NA&amp;amp;c33=segB,NA&amp;amp;c34=segC,NA&amp;amp;c15=apn,&amp;amp;plugv=4.4.1&amp;amp;playerv=ExoPlayer&amp;amp;sup=1&amp;amp;segment2=&amp;amp;segment1=&amp;amp;forward=0&amp;amp;ad=1&amp;amp;cr=4_00_99_D1_10000&amp;amp;c9=devid,c041ec5e50722cdf8cc5b4826c24ae54c5747a6570e900006c826b37ca01ce17&amp;amp;enc=true&amp;amp;c1=nuid,c041ec5e50722cdf8cc5b4826c24ae54c5747a6570e900006c826b37ca01ce17&amp;amp;at=timer&amp;amp;rt=video&amp;amp;c16=sdkv,aa.8.1.0&amp;amp;c27=cln,34&amp;amp;crs=0&amp;amp;lat=&amp;amp;lon=&amp;amp;c29=plid,16300539624283525&amp;amp;c30=bldv,aa.8.1.0.0_gaxnons&amp;amp;st=dcr&amp;amp;c7=osgrp,&amp;amp;c8=devgrp,&amp;amp;c10=plt,&amp;amp;c40=adbid,&amp;amp;c14=osver,ANDROID.11&amp;amp;c26=dmap,1&amp;amp;dd=&amp;amp;hrd=&amp;amp;wkd=&amp;amp;c35=adrsid,&amp;amp;c36=cref1,&amp;amp;c37=cref2,&amp;amp;c11=agg,1&amp;amp;c12=apv,4.4.1.4004001&amp;amp;c51=adl,0&amp;amp;c52=noad,0&amp;amp;sd=578&amp;amp;pc=NA&amp;amp;c53=fef,n&amp;amp;c54=oad,&amp;amp;c55=cref3,&amp;amp;c57=adldf,2&amp;amp;ai=218531&amp;amp;c3=st,c&amp;amp;c64=starttm,1630053962&amp;amp;adid=218531&amp;amp;c58=isLive,false&amp;amp;c59=sesid,257f8bz854wmqa31gk3icyi7cmj131630053964&amp;amp;c61=createtm,1630053997&amp;amp;c63=pipMode,&amp;amp;ci_userid=&amp;amp;is_auto_play=no&amp;amp;pl_title=&amp;amp;is_prem=no&amp;amp;is_prog=&amp;amp;ad_origin=&amp;amp;adidx=&amp;amp;is_tpad=&amp;amp;ci_passthr=&amp;amp;c62=sendTime,1630053997&amp;amp;c68=bndlid,air.se.urplay.android_player.debug&amp;amp;nodeTM=&amp;amp;logTM=&amp;amp;c73=phtype,&amp;amp;c74=dvcnm,&amp;amp;c76=adbsnid,&amp;amp;c77=adsuprt,2&amp;amp;uoo=&amp;amp;evdata=PL%3A1630053964727%3A0&amp;amp;c71=ottflg,0&amp;amp;c72=otttyp,&amp;amp;c44=progen,&amp;amp;davty=1&amp;amp;si=&amp;amp;c66=mediaurl,&amp;amp;sdd=retry,0~~retryreason,~~devmodel,SM-G981B~~devtypid,samsung-SM-G981B~~sysname,Android~~sysversion,11~~manuf,samsung&amp;amp;cat_id=3398d8e4-e613-42c1-92aa-1a6fc52dcf5c&amp;amp;vtoff=0&amp;amp;rnd=1630053997971&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Step 9 :  Provide your app for certification ==&lt;br /&gt;
Once ready please send your application to Nielsen local staff for certification.&lt;br /&gt;
&lt;br /&gt;
== Step 10 :  Going Live ==&lt;br /&gt;
After the integration has been certified by Nielsen (but not prior to that), do the following:&lt;br /&gt;
&lt;br /&gt;
# '''Disable Debug Logging''': Disable logging by deleting &amp;lt;code&amp;gt;{nol_sdkDebug: 'DEBUG'}&amp;lt;/code&amp;gt; from initialization call.&lt;br /&gt;
# '''Notify Nielsen''': Once you are ready to go live, let us know so we can enable you for reporting. We will not be able to collect or report data prior to receiving notification from you.&lt;/div&gt;</summary>
		<author><name>ColinBrown</name></author>
	</entry>
	<entry>
		<id>https://nielsentest.mywikis.net/w/index.php?title=DCR_KSA_Video_iOS_SDK&amp;diff=5880</id>
		<title>DCR KSA Video iOS SDK</title>
		<link rel="alternate" type="text/html" href="https://nielsentest.mywikis.net/w/index.php?title=DCR_KSA_Video_iOS_SDK&amp;diff=5880"/>
		<updated>2022-07-15T23:37:34Z</updated>

		<summary type="html">&lt;p&gt;ColinBrown: Created page with &amp;quot;{{Breadcrumb|}} {{Breadcrumb|Digital}} {{Breadcrumb|International DCR}}  {{CurrentBreadcrumb}} Category:Digital __TOC__   == Overview == The Nielsen SDK is one of the mult...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Breadcrumb|}} {{Breadcrumb|Digital}} {{Breadcrumb|International DCR}}  {{CurrentBreadcrumb}}&lt;br /&gt;
[[Category:Digital]]&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Overview ==&lt;br /&gt;
The Nielsen SDK is one of the multiple framework SDKs that Nielsen provides to enable measuring linear (live) and on-demand TV viewing using TVs, mobile devices, etc.&lt;br /&gt;
The App SDK is the framework for mobile application developers to integrate Nielsen Measurement into their media player applications. It supports a variety of Nielsen Measurement Products like Digital Content Ratings (DCR), and [[Digital Ad Ratings]] (DAR). Nielsen SDKs are also equipped to measure static content and can track key life cycle events of an application like:&lt;br /&gt;
*Application launch events and how long app was running&lt;br /&gt;
{{iOS_SpecialNotes_for_iOS14}}&lt;br /&gt;
&lt;br /&gt;
{{iOS_Prerequisites_and_Implementation_Overview}}&lt;br /&gt;
&lt;br /&gt;
== Setting up your  Development Environment  ==&lt;br /&gt;
Prior to SDK Version 6.2.0.0 the  IOS framework has been distributed as a static library packaged into framework bundle format. Apple recommends to use dynamic framework, it has some benefits over static libraries like less executable file size of an app, faster startup time and native support in xCode IDE. Nielsen AppSDK has been transformed into dynamic framework in this release ([[iOS_Static_Framework_Setup|static framework]] is still available).&lt;br /&gt;
&lt;br /&gt;
If migrating from the static library to this new dynamic framework, once implemented, unless your specific application requires, you can remove the following Frameworks that were once required:&amp;lt;code&amp;gt; [AdSupport, JavascriptCore, SystemConfiguration, Security, AVFoundation, libc++] &amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The '''Dynamic framework''' is created as a fat framework. It means that it contains slices required for devices (armv7, arm64) as well as slices required for simulators (i386, x86_64). Simulator slices are needed to let clients build and debug their app on the simulators, but they should be removed before sending the app to the AppStore. The example of the shell script that should be added as a Run Script phase in the application can be [[DCR_Video_iOS_SDK#Removing_Simulators_.28Dynamic_Framework_Only.29|found below]].&lt;br /&gt;
&lt;br /&gt;
'''[[DCR_Video_iOS_SDK_xcframework|XCFramework]]''' is solution for the problems described above Apple recommends to use XCFrameworks. In XCFramework, we no longer build a single framework with multiple architectures. Instead, we build one small framework for each combination of architecture and target and store it in its own folder. The top-level XCFramework folder have folders like ios-arm64, ios-arm64-simulator, etc. Each of these folders is its own framework, complete with headers, modules, and binary.&lt;br /&gt;
&lt;br /&gt;
=== Configuring Xcode Development Environment ===&lt;br /&gt;
Starting with SDK version 6.0.0.0, the Nielsen App SDK is compatible with Apple iOS versions 8.0 and above.  In addition, when using the dynamic framework,  all the required frameworks are linked automatically as the are needed.  More details can be found here: https://stackoverflow.com/questions/24902787/dont-we-need-to-link-framework-to-xcode-project-anymore&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;'''Note''': All communications between the SDK and the Census (Collection Facility) use HTTPS.&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Special Note for Static Framework ===&lt;br /&gt;
Starting from 8.2.0.0 release framework is build from the mixed (swift + objc) source codse.&lt;br /&gt;
If [[iOS_Static_Framework_Setup|static (xc)framework is integrated additional settings]] should be applied to fix build or runtime issues.&lt;br /&gt;
&lt;br /&gt;
=== Download Framework ===&lt;br /&gt;
The first step is to download and copy the [[Special:Downloads|NielsenAppApi.framework]] bundle to the app project directory. (''Not required if using CocaPods'')&lt;br /&gt;
&lt;br /&gt;
=== Add Framework ===&lt;br /&gt;
In the General tab for app configuration add NielsenAppApi.framework in the list of Embedded Binaries.  (''Not required if using CocaPods'')&lt;br /&gt;
&lt;br /&gt;
=== Add Path ===&lt;br /&gt;
Add path to the NielsenAppApi.framework in the Framework Search Paths build setting.  (''Not required if using CocaPods'')&lt;br /&gt;
&lt;br /&gt;
=== Import Framework ===&lt;br /&gt;
Add NielsenAppApi.framework module in the source file of your app:&lt;br /&gt;
&lt;br /&gt;
==== Using Swift ====&lt;br /&gt;
Add the following:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;swift&amp;quot;&amp;gt;&lt;br /&gt;
import NielsenAppApi&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Using Objective-C ====&lt;br /&gt;
&amp;lt;syntaxhighlight lang =&amp;quot;objective-c&amp;quot;&amp;gt;&lt;br /&gt;
@import NielsenAppApi;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== xCode 12 building errors ====&lt;br /&gt;
Developers who uses &amp;quot;fat&amp;quot; framework in their apps started reporting the following error that they get building the app in xCode 12.3+:&lt;br /&gt;
&amp;lt;blockquote&amp;gt;Building for iOS Simulator, but the linked and embedded framework 'MyFramework.framework' was built for iOS + iOS Simulator.&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
The binary framework contains different code for the same architecture in multiple places, and Xcode doesn’t know how to handle it. There is workaround that people recommend to use in such cases:&lt;br /&gt;
* https://stackoverflow.com/questions/63267897/building-for-ios-simulator-but-the-linked-framework-framework-was-built&lt;br /&gt;
* https://stackoverflow.com/questions/63932158/xcode12-issus-ld-building-for-ios-simulator-but-linking-in-object-file-built&lt;br /&gt;
&lt;br /&gt;
==== IPA processing failure ====&lt;br /&gt;
&amp;lt;code&amp;gt;Assertion failed: Expected 4 archs in otool output:&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The error above is due to the &amp;quot;fat&amp;quot; (simulator+device) framework which will not appear if you have not enabled Bitcode.  To build your app with full Bitcode support, it is recommended that you use a [[DCR_Video_iOS_SDK_xcframework|XCFramework]] to avoid the 4 archs in otool output message.&lt;br /&gt;
&lt;br /&gt;
== Create SDK Instance ==&lt;br /&gt;
The latest version of the Nielsen App SDK allows instantiating multiple instances of the SDK object when needed, which can then be used simultaneously. '''For the general use case where only one video is played at the same time in the App, a single instance of SDK object can then be used to play back and measure all watched streams one after another.'''&lt;br /&gt;
&lt;br /&gt;
The following table contains the list of arguments that can be passed via the AppInfo JSON schema.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Parameter / Argument !! Description !! Source !! Required/Obligatory? !! Example&lt;br /&gt;
|-&lt;br /&gt;
| appid || Unique id for the application assigned by Nielsen. It is GUID data type.|| Nielsen-specified || Yes || &amp;quot;PXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| appname || Name of the application || Client-defined || Yes || &amp;quot;Nielsen Sample App&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| appversion || Current version of the app used || Client-defined || Yes || &amp;quot;1.0.4&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| sfcode || Nielsen collection facility to which the SDK should connect.&lt;br /&gt;
|| Nielsen-specified || Yes || &amp;quot;ksa&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| nol_devDebug || Enables Nielsen console logging. Only required for testing&lt;br /&gt;
|| Nielsen-specified || Optional || &amp;quot;DEBUG&amp;quot;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Debug flag for development environment ==&lt;br /&gt;
Player application developers / integrators can use Debug flag to check whether an App SDK API call made is successful. To activate the Debug flag,&lt;br /&gt;
Pass the argument &amp;lt;code&amp;gt;@&amp;quot;nol_devDebug&amp;quot;:@&amp;quot;DEBUG&amp;quot;&amp;lt;/code&amp;gt;, in the JSON string.&lt;br /&gt;
&lt;br /&gt;
* '''DEBUG''': Debug logs, used by the developers to debug more complex issues.&lt;br /&gt;
&lt;br /&gt;
Once the flag is active, it logs each API call made and the data passed. The log created by this flag is minimal.&lt;br /&gt;
&amp;lt;blockquote&amp;gt;'''Note''': DO NOT activate the Debug flag in a production environment.&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Sample SDK Initialization Code ====&lt;br /&gt;
&lt;br /&gt;
Initialize the Nielsen App object within the viewDidLoad view controller delegate method using initWithAppInfo:delegate:&lt;br /&gt;
&amp;lt;blockquote&amp;gt;If App SDK is initialized using init or new methods, it will ignore the API calls resulting in no measurement. The SDK will not return any errors.&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Using Objective-C=====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;objective-c&amp;quot;&amp;gt;&lt;br /&gt;
#import &amp;quot;NlsAppApiFactory.h&amp;quot;&lt;br /&gt;
#import &amp;lt;NielsenAppApi/NielsenAppApi.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
@implementation NlsAppApiFactory&lt;br /&gt;
&lt;br /&gt;
+ (NielsenAppApi *)createNielsenAppApiWithDelegate:(id&amp;lt;NielsenAppApiDelegate&amp;gt;)delegate;&lt;br /&gt;
{&lt;br /&gt;
    NSDictionary *appInformation = @{&lt;br /&gt;
                                     @&amp;quot;appid&amp;quot;: &amp;quot;PXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX&amp;quot;,&lt;br /&gt;
                                     @&amp;quot;appversion&amp;quot;: &amp;quot;1.0&amp;quot;,&lt;br /&gt;
                                     @&amp;quot;appname&amp;quot;: &amp;quot;app name here&amp;quot;,&lt;br /&gt;
                                     @&amp;quot;sfcode&amp;quot;: &amp;quot;ksa&amp;quot;,&lt;br /&gt;
                                     @&amp;quot;nol_devDebug&amp;quot;: @&amp;quot;DEBUG&amp;quot;&lt;br /&gt;
                                    };&lt;br /&gt;
    return [[NielsenAppApi alloc] initWithAppInfo:appInformation delegate:delegate];&lt;br /&gt;
}&lt;br /&gt;
@end&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The following would be the &amp;lt;code&amp;gt;NlsAppApiFactory.h&amp;lt;/code&amp;gt; file:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;objective-c&amp;quot;&amp;gt;&lt;br /&gt;
#import &amp;lt;Foundation/Foundation.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
@class NielsenAppApi;&lt;br /&gt;
@protocol NielsenAppApiDeligate;&lt;br /&gt;
&lt;br /&gt;
@interface NlsAppApiFactory : NSObject&lt;br /&gt;
&lt;br /&gt;
+ (NielsenAppAPI *) createNielsenAppApiWithDelegate:(id&amp;lt;NielsenAppApiDelegate&amp;gt;)delegate;&lt;br /&gt;
&lt;br /&gt;
@end&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Using Swift =====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;NielsenInit.swift&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;swift&amp;quot;&amp;gt;&lt;br /&gt;
class NielsenInit: NSObject {&lt;br /&gt;
    class func createNielsenAppApi(delegate: NielsenAppApiDelegate) -&amp;gt; NielsenAppApi?{&lt;br /&gt;
    let appInformation:[String: String] = [&lt;br /&gt;
            &amp;quot;appid&amp;quot;: &amp;quot;PXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX&amp;quot;,&lt;br /&gt;
            &amp;quot;appversion&amp;quot;: &amp;quot;1.0&amp;quot;,&lt;br /&gt;
            &amp;quot;appname&amp;quot;: &amp;quot;app name here&amp;quot;,&lt;br /&gt;
            &amp;quot;sfcode&amp;quot;: &amp;quot;ksa&amp;quot;,&lt;br /&gt;
            &amp;quot;nol_devDebug&amp;quot;: &amp;quot;DEBUG&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;
&lt;br /&gt;
&lt;br /&gt;
Sample code using AVPlayer.&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;ViewController.swift&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;swift&amp;quot;&amp;gt;&lt;br /&gt;
class ViewController: UIViewController, NielsenAppApiDelegate, AVPictureInPictureControllerDelegate, CLLocationManagerDelegate  {&lt;br /&gt;
&lt;br /&gt;
    let avPlayerViewController = AVPlayerViewController()&lt;br /&gt;
    var avPlayer:AVPlayer?&lt;br /&gt;
    var nielsenAppApi: NielsenAppApi!&lt;br /&gt;
&lt;br /&gt;
  override func viewDidLoad() {&lt;br /&gt;
        super.viewDidLoad()&lt;br /&gt;
&lt;br /&gt;
        self.nielsenAppApi = NielsenInit.createNielsenAppApi(delegate: self)&lt;br /&gt;
        NSLog(&amp;quot;Nielsen SDK initialized&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
            }&lt;br /&gt;
  }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== APP SDK Error &amp;amp; Event Codes ====&lt;br /&gt;
To view the Error and Event codes for iOS and Android, please review the [[APP SDK Event Codes|App SDK Event Code]] Reference page.&lt;br /&gt;
&lt;br /&gt;
==== Life cycle of SDK instance ====&lt;br /&gt;
The life cycle of SDK instance includes four general states:&lt;br /&gt;
# '''Initial state''' – The SDK is not initialized and hence, not ready to process playing information. Once the SDK is moved out of this state, it needs instantiation of the new SDK instance in order to get the instance in the '''Initial state'''.&lt;br /&gt;
# '''Idle state''' – The SDK is initialized and is ready to process playing information. Once Initialized, the SDK instance is not processing any data, but is listening for the play event to occur.&lt;br /&gt;
# '''Processing state''' – The SDK instance is processing playing information. API calls &amp;quot;play&amp;quot; and &amp;quot;loadMetadata&amp;quot; move the SDK instance into this state. In this state, the SDK instance will be able to process the API calls (see below)&lt;br /&gt;
# '''Disabled state''' – The SDK instance is disabled and is not processing playing information. SDK instance moves into this state in one of the following scenarios.&lt;br /&gt;
## Initialization fails&lt;br /&gt;
## &amp;lt;code&amp;gt;appDisableApi&amp;lt;/code&amp;gt; is called&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;objective-c&amp;quot;&amp;gt;&lt;br /&gt;
@property (assign) BOOL appDisableApi;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Create Metadata Objects ==&lt;br /&gt;
The parameters passed must be either a JSON formatted NSString or a NSDictionary object. The JSON passed in the SDK must be well-formed.&lt;br /&gt;
* NSDictionary object&lt;br /&gt;
** If an object of unexpected type is passed to the method, the error message will be logged.&lt;br /&gt;
** If string has invalid JSON format, the error message will be logged.&lt;br /&gt;
* JSON value must be string value.&lt;br /&gt;
** This includes boolean and numeric values. For example, a value of true should be represented with &amp;quot;true&amp;quot;, number value 123 should be &amp;quot;123&amp;quot;.&lt;br /&gt;
** All the Variable Names like appid, appname, dataSrc, title, type etc. are case-sensitive. Use the correct variable name as specified in the documentation.&lt;br /&gt;
* JSON string can be prepared using either raw NSString or serialized NSDictionary.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Create channelName Metadata ===&lt;br /&gt;
channelName should remain constant throughout the completion of an episode or live stream.&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Key !! Description !!	Values	 !! Required&lt;br /&gt;
|-&lt;br /&gt;
| channelName	|| Any string representing the channel/stream	|| custom	|| Yes&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Create Content Metadata ===&lt;br /&gt;
Content metadata should remain constant throughout the entirety of an episode/clip including when ads play.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Keys	!! Description	!! Values	!! Required&lt;br /&gt;
|-&lt;br /&gt;
| type 	|| type of asset || &amp;lt;code&amp;gt;'content'&amp;lt;/code&amp;gt; || Yes&lt;br /&gt;
|-&lt;br /&gt;
| assetid || unique ID assigned to asset (32 Character limit) || custom (no [[Special Characters|Special Characters]]) || Yes&lt;br /&gt;
|-&lt;br /&gt;
| program || name of program (100 character limit) || custom || Yes&lt;br /&gt;
|-&lt;br /&gt;
| title || name of program (100 character limit) || custom || Yes&lt;br /&gt;
|-&lt;br /&gt;
| length || length of content in seconds || &amp;lt;code&amp;gt;seconds&amp;lt;/code&amp;gt; (0 for live stream) || Yes&lt;br /&gt;
|-&lt;br /&gt;
| airdate || the airdate in the linear TV || YYYYMMDD HH24:MI:SS || Yes&lt;br /&gt;
|-&lt;br /&gt;
| isfullepisode || full episode flag || &amp;lt;code&amp;gt;'y'&amp;lt;/code&amp;gt;- full episode, &amp;lt;code&amp;gt;'n'&amp;lt;/code&amp;gt;- non full episode || Yes&lt;br /&gt;
|-&lt;br /&gt;
| adloadtype || type of ad load:&lt;br /&gt;
*&amp;lt;code&amp;gt;'1'&amp;lt;/code&amp;gt; Linear – matches TV ad load&lt;br /&gt;
*&amp;lt;code&amp;gt;'2'&amp;lt;/code&amp;gt; Dynamic – Dynamic Ad Insertion (DAI)&lt;br /&gt;
|| &amp;lt;code&amp;gt;'2'&amp;lt;/code&amp;gt; - DCR measures content with dynamic ads &lt;br /&gt;
|| Yes&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Create Ad Metadata ===&lt;br /&gt;
The Ad Metadata (if applicable) should be passed for each individual ad.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Keys	!! Description	!! Values	!! Required&lt;br /&gt;
|-&lt;br /&gt;
| type 	|| type of Ad	||  &amp;lt;code&amp;gt;'preroll'&amp;lt;/code&amp;gt;,  &amp;lt;code&amp;gt;'midroll'&amp;lt;/code&amp;gt;,  &amp;lt;code&amp;gt;'postroll'&amp;lt;/code&amp;gt; || Yes&lt;br /&gt;
|-&lt;br /&gt;
| assetid ||	unique ID assigned to Ad	|| custom (no [[Special Characters|Special Characters]]) || Yes&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
'''Note:''' All metadata values should be passed as UTF-8 strings.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt; URL Character Limit: There is a URL character limit of 2K characters due to browser limitations. Exceeding this value could impair data delivery on particular browsers. &amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== MetaData Example ===&lt;br /&gt;
&lt;br /&gt;
==== Using Objective-C ====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;objective-c&amp;quot;&amp;gt;&lt;br /&gt;
NSDictionary  *channelInfo = @&lt;br /&gt;
{&lt;br /&gt;
    @&amp;quot;channelName&amp;quot;:@&amp;quot;My Channel Name 1&amp;quot;,&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
NSDictionary *contentMetadata = @&lt;br /&gt;
  {&lt;br /&gt;
    @ &amp;quot;type&amp;quot;: @ &amp;quot;content&amp;quot;,&lt;br /&gt;
    @ &amp;quot;assetid&amp;quot;: @ &amp;quot;88675545&amp;quot;,&lt;br /&gt;
    @ &amp;quot;title&amp;quot;: @ &amp;quot;Program S3, EP1&amp;quot;,&lt;br /&gt;
    @ &amp;quot;isfullepisode&amp;quot;: @ &amp;quot;y&amp;quot;,  &lt;br /&gt;
    @ &amp;quot;program&amp;quot;: @ &amp;quot;Program Name&amp;quot;,&lt;br /&gt;
    @ &amp;quot;length&amp;quot;: @ &amp;quot;3600&amp;quot;,&lt;br /&gt;
    @ &amp;quot;airdate&amp;quot;: @ &amp;quot;20200321 10:05:00&amp;quot;,&lt;br /&gt;
    @ &amp;quot;adloadtype&amp;quot;: @ &amp;quot;2&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
NSDictionary *adMetadata = @&lt;br /&gt;
  {&lt;br /&gt;
    @&amp;quot;type&amp;quot; : &amp;quot;postroll&amp;quot;,&lt;br /&gt;
    @&amp;quot;assetid&amp;quot; : &amp;quot;AD-ID123&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Using Swift ====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;swift&amp;quot;&amp;gt;&lt;br /&gt;
     let channelInfo = [&lt;br /&gt;
        &amp;quot;channelName&amp;quot;: &amp;quot;My Channel Name 1&amp;quot;,&lt;br /&gt;
     ]&lt;br /&gt;
&lt;br /&gt;
     let contentMetadata = [&lt;br /&gt;
         &amp;quot;type&amp;quot;: &amp;quot;content&amp;quot;,&lt;br /&gt;
         &amp;quot;assetid&amp;quot;: &amp;quot;88675545&amp;quot;,&lt;br /&gt;
         &amp;quot;title&amp;quot;: &amp;quot;Program S3, EP1&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;program&amp;quot;:&amp;quot;Program Name&amp;quot;,&lt;br /&gt;
         &amp;quot;length&amp;quot;:&amp;quot;3600&amp;quot;, &lt;br /&gt;
         &amp;quot;airdate&amp;quot;:&amp;quot;20171020 10:05:00&amp;quot;&lt;br /&gt;
     ]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    let adMetadata = [&lt;br /&gt;
        &amp;quot;type&amp;quot;: &amp;quot;preroll&amp;quot;,&lt;br /&gt;
        &amp;quot;assetid&amp;quot; : &amp;quot;ad123&amp;quot;&lt;br /&gt;
    ]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Start the Measurement ==&lt;br /&gt;
&lt;br /&gt;
=== Overview of SDK API Calls ===&lt;br /&gt;
&lt;br /&gt;
==== play ====&lt;br /&gt;
The play method prepares the SDK for reporting once an asset has loaded and playback has begun. Use play to pass the channel descriptor information through channelName parameter when the user taps the '''Play''' button on the player. Call play only when initially starting the video.&lt;br /&gt;
===== Using Objective-C =====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;objective-c&amp;quot;&amp;gt;[self.nielsenAppApi play:channelInfo];&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
===== Using Swift =====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;swift&amp;quot;&amp;gt;self.nielsenAppApi?.play(channelInfo);&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== loadMetadata ====&lt;br /&gt;
Needs to be called at the beginning of each asset, pass JSON object for relevant content or ad. Make sure to pass as 1st loadMetadata for content at the begining of playlist - see below API call sequence examples.&lt;br /&gt;
===== Using Objective-C =====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;objective-c&amp;quot;&amp;gt;[self.nielsenAppApi loadMetadata:metadataDict];&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
===== Using Swift =====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;swift&amp;quot;&amp;gt;self.nielsenAppApi?.loadMetadata(metadataDict)&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== playheadPosition ====&lt;br /&gt;
Pass playhead position every second during playback. for VOD: pass current position in seconds. for Live: current Unix timestamp (seconds since Jan-1-1970 UTC) - if it is possible to seek back in Live content, then pass related Unix time (not current). Pass whole number that increments only by 1 like 1,2,3..&lt;br /&gt;
===== Using Objective-C =====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;objective-c&amp;quot;&amp;gt;&lt;br /&gt;
[self.nielsenAppApi playheadPosition:pos];&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
===== Using Swift =====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;swift&amp;quot;&amp;gt;&lt;br /&gt;
self.nielsenAppApi?.playheadPosition(pos);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== stop ====&lt;br /&gt;
Call when&lt;br /&gt;
* ads complete playing&lt;br /&gt;
* when a user pauses playback&lt;br /&gt;
* upon any user interruption scenario - see bellow chapter Interruption scenario&lt;br /&gt;
===== Using Objective-C =====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;objective-c&amp;quot;&amp;gt;[self.nielsenAppApi stop];&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
===== Using Swift =====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;swift&amp;quot;&amp;gt;self.nielsenAppApi?.stop;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== end ====&lt;br /&gt;
Call when the content asset completes playback.  Stops measurement progress.&lt;br /&gt;
===== Using Objective-C =====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;objective-c&amp;quot;&amp;gt;[self.nielsenAppApi end];&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
===== Using Swift =====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;swift&amp;quot;&amp;gt;self.nielsenAppApi?.end&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== API Call Sequence ===&lt;br /&gt;
==== Use Case 1: Content has no Ads ====&lt;br /&gt;
Call [[play()]] with channelName JSON as below.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;json&amp;quot;&amp;gt;{&lt;br /&gt;
   &amp;quot;channelName&amp;quot;: &amp;quot;ChannelName&amp;quot;&lt;br /&gt;
}&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Call [[loadMetadata()]] with JSON metadata for content as below.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;json&amp;quot;&amp;gt;{&lt;br /&gt;
  &amp;quot;type&amp;quot;: &amp;quot;content&amp;quot;,&lt;br /&gt;
  &amp;quot;assetid&amp;quot;: &amp;quot;vid345-67483&amp;quot;,&lt;br /&gt;
  &amp;quot;program&amp;quot;: &amp;quot;ProgramName&amp;quot;,&lt;br /&gt;
  &amp;quot;title&amp;quot;: &amp;quot;Program S3, EP1&amp;quot;,&lt;br /&gt;
  &amp;quot;length&amp;quot;: &amp;quot;3600&amp;quot;,&lt;br /&gt;
  ...&lt;br /&gt;
}&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Call [[playheadPosition|playheadPosition()]] every one second until a pause.&lt;br /&gt;
Use the sample API sequence below as a reference to identify the specific events that need to be called during content playback without ads.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Type !! Sample code !! Description&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | Start of stream || &amp;lt;code&amp;gt;mAppSdk.play(channelName); &amp;lt;/code&amp;gt; || // channelName contains JSON metadata of channel/video name being played&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;mAppSdk.loadMetadata(contentMetaDataObject);&amp;lt;/code&amp;gt; || // contentMetadataObject contains the JSON metadata for the content being played&lt;br /&gt;
|-&lt;br /&gt;
| Content || &amp;lt;code&amp;gt;mAppSdk.playheadPosition(playheadPosition);&amp;lt;/code&amp;gt; || // position is position of the playhead while the content is being played&lt;br /&gt;
|-&lt;br /&gt;
| End of Stream || &amp;lt;code&amp;gt;mAppSdk.end();&amp;lt;/code&amp;gt; || // Content playback is completed.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Use Case 2: Content has Ads ====&lt;br /&gt;
Call [[play()]] with channelName JSON as below.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;json&amp;quot;&amp;gt;{&lt;br /&gt;
   &amp;quot;channelName&amp;quot;: &amp;quot;ChannelName&amp;quot;&lt;br /&gt;
}&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Call [[loadMetadata()]] with JSON metadata for ad as below.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;json&amp;quot;&amp;gt;{&lt;br /&gt;
   &amp;quot;type&amp;quot;: &amp;quot;preroll&amp;quot;,&lt;br /&gt;
   &amp;quot;assetid&amp;quot;: &amp;quot;ad_123&amp;quot;,&lt;br /&gt;
   ...&lt;br /&gt;
}&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;blockquote&amp;gt;Note: In case the individual ad details are not available, send ad pod (presence) details through the [[loadMetadata]] and playhead position through [[playheadPosition]].&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Call [[playheadPosition|playheadPosition()]] every one second until a pause / another [[loadMetadata()]] is called. Playhead should be passed for the entire duration of ad pod, if the ad pod details are passed as part of [[loadMetadata()]].&lt;br /&gt;
&lt;br /&gt;
The sample API sequence can be used as a reference to identify the specific events that need to be called during content and ad playback.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Type !! Sample code !! Description&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | Start of stream || &amp;lt;code&amp;gt;mAppSdk.play(channelName); &amp;lt;/code&amp;gt; || // channelName contains JSON metadata of channel/video name being played&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;mAppSdk.loadMetadata(contentMetaDataObject);&amp;lt;/code&amp;gt; || // contentMetadataObject contains the JSON metadata for the content being played&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Preroll || &amp;lt;code&amp;gt;mAppSdk.loadMetadata(prerollMetadataObject);&amp;lt;/code&amp;gt; || // prerollMetadataObject contains the JSON metadata for the preroll ad&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;mAppSdk.playheadPosition(playheadPosition);&amp;lt;/code&amp;gt; || // position is position of the playhead while the preroll ad is being played&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;mAppSdk.stop();&amp;lt;/code&amp;gt; || // Call stop after preroll occurs&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | Content || &amp;lt;code&amp;gt;mAppSdk.loadMetadata(contentMetaDataObject);&amp;lt;/code&amp;gt; || // contentMetadataObject contains the JSON metadata for the content being played&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;mAppSdk.setPlayheadPosition(playheadPosition);&amp;lt;/code&amp;gt; || // position is position of the playhead while the content is being played&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;6&amp;quot; | Midroll || &amp;lt;code&amp;gt;mAppSdk.loadMetadata(midrollMetaDataObject);&amp;lt;/code&amp;gt; || // midrollMetadataObject contains the JSON metadata for the midroll ad&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;mAppSdk.playheadPosition(playheadPosition);&amp;lt;/code&amp;gt; || // position is position of the playhead while the midroll ad is being played&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;mAppSdk.stop();&amp;lt;/code&amp;gt; || // App moves to background(midroll pauses) &lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;mAppSdk.loadMetadata(midrollMetaDataObject);&amp;lt;/code&amp;gt; || // App moves to foreground (midroll resumes) &lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;mAppSdk.playheadPosition(playheadPosition);&amp;lt;/code&amp;gt; || // playheadPosition is position of the playhead while the midroll ad is being played &lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;mAppSdk.stop();&amp;lt;/code&amp;gt; || // Call stop after midroll occurs&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | Content (End of stream) || &amp;lt;code&amp;gt;mAppSdk.loadMetadata(contentMetaDataObject);&amp;lt;/code&amp;gt; || // contentMetadataObject contains the JSON metadata for the content being played&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;mAppSdk.playheadPosition(playheadPosition);&amp;lt;/code&amp;gt; || // position is position of the playhead while the content is being played&lt;br /&gt;
|-&lt;br /&gt;
| End of Stream || &amp;lt;code&amp;gt;mAppSdk.end();&amp;lt;/code&amp;gt; || // Call end() at the end of content&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Postroll || &amp;lt;code&amp;gt;mAppSdk.loadMetadata(postrollMetaDataObject);&amp;lt;/code&amp;gt; || // postrollMetadataObject contains the JSON metadata for the postroll ad&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;mAppSdk.playheadPosition(playheadPosition);&amp;lt;/code&amp;gt; || // position is position of the playhead while the postroll ad is being played&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;mAppSdk.stop();&amp;lt;/code&amp;gt; || // Call stop after postroll occurs&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;Note: Each Ad playhead should reset or begin from 0 at ad start. When content has resumed following an ad break, playhead position must continue from where previous content segment was left off.&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Stop/Resume the Measurement for video Playback Interruptions ==&lt;br /&gt;
As part of integrating Nielsen App SDK with the player application, the Audio / Video app developer needs to handle the following possible interruption scenarios:&lt;br /&gt;
* Pause / Play&lt;br /&gt;
* Network Loss (Wi-Fi / Airplane / Cellular)&lt;br /&gt;
* Call Interrupt (SIM or Third-party Skype / Hangout call)&lt;br /&gt;
* Alarm Interrupt&lt;br /&gt;
* Content Buffering&lt;br /&gt;
* Device Lock / Unlock (Video players only, not for Audio players)&lt;br /&gt;
* App going in the Background/Foreground (Video players only, not for Audio players)&lt;br /&gt;
* Channel / Station Change Scenario&lt;br /&gt;
* Unplugging of headphone&lt;br /&gt;
In case of encountering one of the above interruptions, the player application needs to&lt;br /&gt;
* Call &amp;lt;code&amp;gt;stop&amp;lt;/code&amp;gt; immediately (except when content is buffering) and withhold sending playhead position.&lt;br /&gt;
* Once the playback resumes, start sending pings &amp;lt;code&amp;gt;playheadPosition&amp;lt;/code&amp;gt; for the new viewing session.&lt;br /&gt;
Please see the [[Digital Measurement FAQ]] for more details&lt;br /&gt;
&lt;br /&gt;
== Review SDK Integration Architecture Diagram ==&lt;br /&gt;
&lt;br /&gt;
=== For Content Playback ===&lt;br /&gt;
&lt;br /&gt;
[[File:nlsn-sdk-achitecture-diagram-content-v1.png||SDK Integration Architecture Diagram - Content]]&lt;br /&gt;
&lt;br /&gt;
=== For Ad Playback ===&lt;br /&gt;
[[File:nlsn-sdk-achitecture-diagram-ad-v1.png||SDK Integration Architecture Diagram - Ad]]&lt;br /&gt;
&lt;br /&gt;
{{iOS_NoID_Privacy_and_Opt-Out}}&lt;br /&gt;
&lt;br /&gt;
{{iOS_Airplay}}&lt;br /&gt;
== Test your player by yourself ==&lt;br /&gt;
=== Guide ===&lt;br /&gt;
1. Connect your PC and test device (tablet or phone) via same router.&amp;lt;br /&amp;gt;&lt;br /&gt;
2. PC side: run Proxy sw (like Charles) and get local IP&amp;lt;br /&amp;gt;&lt;br /&gt;
3. Test device: modify Wifi setting to pass through Proxy IP from step 2.&amp;lt;br /&amp;gt;&lt;br /&gt;
4. Test device: run your player, launch video&amp;lt;br /&amp;gt;&lt;br /&gt;
5. PC side: filter traffic by &amp;quot;nmrodam&amp;quot; and confirm presence of SDK pings&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Example of SDK ping (https call) ===&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;https://secure-ksa.nmrodam.com/cgi-bin/gn?prd=dcr&amp;amp;ci=se-910685&amp;amp;ch=se-910685_c01_P&amp;amp;asn=defChnAsset&amp;amp;fp_id=a2nfmy17lyvkhlxqstvmgypqly90m1629966210&amp;amp;fp_cr_tm=1629966210&amp;amp;fp_acc_tm=1629966210&amp;amp;fp_emm_tm=1629966210&amp;amp;ve_id=20A7CFD5-9860-4256-A6CE-45C251F4C243&amp;amp;sessionId=yvx0rtsxydmaxueji8zgfzj0f2f1w1629966209&amp;amp;tl=&amp;amp;prv=1&amp;amp;c6=vc,c01&amp;amp;ca=se-910685_c01_51HERB1501&amp;amp;cg=Play%20%3E%20Webbtv%20%3E%20Nyheter&amp;amp;c13=asid,P3D8D326A-2DBC-486A-8FD8-9AF4452B2A41&amp;amp;c32=segA,NA&amp;amp;c33=segB,NA&amp;amp;c34=segC,NA&amp;amp;c15=apn,Aftonbladet&amp;amp;plugv=&amp;amp;playerv=&amp;amp;sup=1&amp;amp;segment2=&amp;amp;segment1=&amp;amp;forward=0&amp;amp;ad=1&amp;amp;cr=4_00_99_D1_00000&amp;amp;c9=devid,12b9377cbe7e5c94e8a70d9d23929523d14afa954793130f8a3959c7b849aca8&amp;amp;enc=true&amp;amp;c1=nuid,12b9377cbe7e5c94e8a70d9d23929523d14afa954793130f8a3959c7b849aca8&amp;amp;at=timer&amp;amp;rt=video&amp;amp;c16=sdkv,ai.8.1.0&amp;amp;c27=cln,15&amp;amp;crs=&amp;amp;lat=&amp;amp;lon=&amp;amp;c29=plid,16299662096458868&amp;amp;c30=bldv,ai.8.1.0.0_gsxaoni&amp;amp;st=dcr&amp;amp;c7=osgrp,&amp;amp;c8=devgrp,&amp;amp;c10=plt,&amp;amp;c40=adbid,&amp;amp;c14=osver,iOS14.6&amp;amp;c26=dmap,1&amp;amp;dd=&amp;amp;hrd=&amp;amp;wkd=&amp;amp;c35=adrsid,&amp;amp;c36=cref1,&amp;amp;c37=cref2,&amp;amp;c11=agg,1&amp;amp;c12=apv,5.47.83.0.25245&amp;amp;c51=adl,15&amp;amp;c52=noad,1&amp;amp;sd=15&amp;amp;pc=NA&amp;amp;c53=fef,n&amp;amp;c54=oad,&amp;amp;c55=cref3,&amp;amp;c57=adldf,2&amp;amp;ai=51HERB1501&amp;amp;c3=st,a&amp;amp;c64=starttm,1629966240&amp;amp;adid=51HERB1501&amp;amp;c58=isLive,false&amp;amp;c59=sesid,iqal6k21r0de8gm901kif5xznar7q1629966240&amp;amp;c61=createtm,1629966255&amp;amp;c63=pipMode,&amp;amp;ci_userid=&amp;amp;is_auto_play=&amp;amp;pl_title=&amp;amp;is_prem=&amp;amp;is_prog=&amp;amp;ad_origin=&amp;amp;adidx=1%2F1&amp;amp;is_tpad=&amp;amp;ci_passthr=&amp;amp;c62=sendTime,1629966255&amp;amp;c68=bndlid,se.aftonbladet.Aftonbladet&amp;amp;c69=cvw,&amp;amp;nodeTM=&amp;amp;logTM=&amp;amp;c73=phtype,&amp;amp;c74=dvcnm,&amp;amp;c76=adbsnid,&amp;amp;uoo=&amp;amp;c44=progen,&amp;amp;davty=1&amp;amp;si=&amp;amp;c66=mediaurl,&amp;amp;sdd=retry,0~~retryreason,~~devmodel,iPhone9%2C4~~devtypid,iPhone9%2C4~~sysname,iOS~~sysversion,14.6~~manuf,Apple&amp;amp;cat_id=a6f7fb13-8801-484c-9692-6db6dfb470aa&amp;amp;vtoff=0&amp;amp;rnd=1629966255319&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Provide your app for certification ==&lt;br /&gt;
Once ready please send your application to Nielsen local staff for certification.&lt;br /&gt;
&lt;br /&gt;
== Going Live ==&lt;br /&gt;
Following Nielsen testing, you will need to:&lt;br /&gt;
&lt;br /&gt;
# '''Disable Debug Logging''': Disable logging by deleting &amp;lt;code&amp;gt;{nol_devDebug: 'DEBUG'}&amp;lt;/code&amp;gt; from initialization call.&lt;br /&gt;
# '''Notify Nielsen''': Once you are ready to go live, let us know so we can enable you for reporting. We will not be able to collect or report data prior to receiving notification from you.&lt;/div&gt;</summary>
		<author><name>ColinBrown</name></author>
	</entry>
	<entry>
		<id>https://nielsentest.mywikis.net/w/index.php?title=DAR_Tag_Implementation_Guide&amp;diff=5834</id>
		<title>DAR Tag Implementation Guide</title>
		<link rel="alternate" type="text/html" href="https://nielsentest.mywikis.net/w/index.php?title=DAR_Tag_Implementation_Guide&amp;diff=5834"/>
		<updated>2022-06-29T01:52:15Z</updated>

		<summary type="html">&lt;p&gt;ColinBrown: /* SERVER-SIDE TAG DISPATCH */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Breadcrumb|}} {{Breadcrumb|Digital}} {{Breadcrumb|Digital Ad Ratings}}  {{CurrentBreadcrumb}}&lt;br /&gt;
[[Category:Digital]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Introduction =&lt;br /&gt;
&lt;br /&gt;
This document provides an overview of the Nielsen Digital Ad Ratings (DAR) Tags and the steps necessary to implement them as part of your digital advertising campaigns.&lt;br /&gt;
=== What is DAR ===&lt;br /&gt;
DAR is a measurement platform for digital advertising campaigns. The platform provides a clear view of the true audience of a campaign, including Reach, Frequency, and GRP statistics by audience demographic group. &lt;br /&gt;
=== What we measure=== &lt;br /&gt;
All DAR tags allow you to measure campaign impressions and the DAR JavaScript tags measure ad viewability, GIVT (General Invalid Traffic), and SIVT (Sophisticated Invalid Traffic) across platforms including web, mobile, and in-app.&lt;br /&gt;
=== How we measure it=== &lt;br /&gt;
Nielsen’s DAR suite of JavaScript tags together with a pixel tag fallback will be present in your ad placements. We utilize industry-standard APIs to perform measurement cross-browser and cross-platform. In most cases, you will only need to add a simple URL through your ad management interface to fully utilize DAR measurement in your campaigns.&lt;br /&gt;
=== Prerequisites ===&lt;br /&gt;
For steps outlined in this document, you should have access to Nielsen’s Campaign Management Interface (CMI) and a Nielsen Technical Account Manager (TAM) will be working with you during the implementation phase.&lt;br /&gt;
__TOC__&lt;br /&gt;
= DAR Measurement Types =&lt;br /&gt;
&lt;br /&gt;
== DAR Display== &lt;br /&gt;
&lt;br /&gt;
The DAR Display JavaScript tag reports ad impressions as well as measures ad viewability and SIVT. In standard web placements, it will find the ad unit in the surrounding DOM container and will then report viewability as a time series with a 1-second resolution.&lt;br /&gt;
&lt;br /&gt;
The DAR tag will report the MRC-required minimum of 1 second on screen and a continuous viewability time series for the lifetime of the ad session to enable additional viewability qualifiers.&lt;br /&gt;
&lt;br /&gt;
The tag can utilize the IAB’s [https://iabtechlab.com/standards/open-measurement-sdk/ '''Open Measurement SDK'''] (OM SDK) including [https://iabtechlab.com/blog/open-measurement-for-web-video-arrives/ '''OM Web'''] integration if the OM Interface Definition (OMID) is available, or it will use industry-standard web APIs to measure viewability.&lt;br /&gt;
&lt;br /&gt;
=== Requirements ===&lt;br /&gt;
&lt;br /&gt;
The DAR Display tag requires a JavaScript-enabled browser for web environments or the OM SDK for in-app to operate and should be placed close to the corresponding measured ad unit. It should be on the same DOM level (e.g. directly under the same parent) or in a child node under the same parent node. The ad unit should be a content-bearing DOM element (e.g. img, canvas, SVG, iframe, div) with a minimum size of 30x30 pixels.&lt;br /&gt;
&lt;br /&gt;
=== Parameters ===&lt;br /&gt;
&lt;br /&gt;
The minimum required DAR parameters are '''ca, ci, cr, pc, ce''' and '''am'''. See the [[DAR_Tag_Implementation_Guide#Appendix|'''Appendix''']] for a full list of parameters.&lt;br /&gt;
&lt;br /&gt;
=== Example Tag ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;script type=&amp;quot;text/javascript&amp;quot; &lt;br /&gt;
src=&amp;quot;https://dar.imrworldwide.com/js/dar.js?ca=nlsnXXXXXX&amp;amp;cr={AD.ID}&amp;amp;ce={PUBLISHER.ID}&amp;amp;ci=nlsnciXXXX&amp;amp;pc={PLACEMENT.ID}&amp;amp;am=3&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Example OMID Display Placement ===&lt;br /&gt;
&lt;br /&gt;
DAR can be enabled through the OM SDK by passing the required Nielsen OM inputs listed in the table below during setup:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;width: 20%&amp;quot; | OM Parameter&lt;br /&gt;
! style=&amp;quot;width: 40%&amp;quot; | Description&lt;br /&gt;
! style=&amp;quot;width: 40%&amp;quot; | Nielsen Value&lt;br /&gt;
! style=&amp;quot;width: 5%&amp;quot; |Required&lt;br /&gt;
|-&lt;br /&gt;
| Vendor Key&lt;br /&gt;
| ID for measurement provider&lt;br /&gt;
| nielsen.com-omid&lt;br /&gt;
| ✔&lt;br /&gt;
|-&lt;br /&gt;
| JavaScript Resource URL&lt;br /&gt;
| URL for measurement provider’s verification script&lt;br /&gt;
|&amp;lt;syntaxhighlight lang=&amp;quot;html&amp;quot;&amp;gt; https://dar.imrworldwide.com/js/dar.js&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
| ✔&lt;br /&gt;
|-&lt;br /&gt;
| Verification Parameters&lt;br /&gt;
| Measurement provider’s verification tag parameters&lt;br /&gt;
| style=&amp;quot;font-family:'Courier New', Courier, monospace !important; color:#222222;&amp;quot; |&amp;lt;syntaxhighlight lang=&amp;quot;html&amp;quot;&amp;gt;ca=nlsnXXXXXX&amp;amp;cr={AD.ID}&amp;amp;ce=publisherXXXX&amp;amp;ci=nlsnciXXXX&amp;amp;pc=placementID_XXXX1&amp;amp;am=3&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
| ✔&lt;br /&gt;
|-&lt;br /&gt;
| Verification Not Executed URL&lt;br /&gt;
| Error URL when the ad player denies measurement script execution&lt;br /&gt;
| style=&amp;quot;font-family:'Courier New', Courier, monospace !important; color:#222222;&amp;quot; | &amp;lt;syntaxhighlight lang=&amp;quot;html&amp;quot;&amp;gt;https://events.imrworldwide.com/er?ercd=8800&amp;amp;erms=verificationNotExecuted-&lt;br /&gt;
{reason}&amp;amp;ca=nlsnXXXXXX&amp;amp;cr=ad_ID_XXXX&amp;amp;ce=publisherXXXX&amp;amp;&lt;br /&gt;
ci=nlsnciXXXX&amp;amp;pc=placementID_XXXX5&amp;amp;am=3&lt;br /&gt;
&amp;amp;c13={asid,app_id}&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
Note: The verificationNotExecuted Error URL is recommended for better troubleshooting during campaign setup. If your system can provide a macro for the reason of the interrupted measurement session, it can be added in place of the {reason} placeholder in the error URL. This can be an error code or a clear text error message.&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Expected Display Ad Session Pings ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
&lt;br /&gt;
! '''Description'''&lt;br /&gt;
! '''Timing'''&lt;br /&gt;
! '''Path'''&lt;br /&gt;
|-&lt;br /&gt;
| DAR Main Ping&lt;br /&gt;
| At initial load&lt;br /&gt;
| secure-gl.imrworldwide.com/cgi-bin/m&lt;br /&gt;
|-&lt;br /&gt;
| Nielsen Measure Ping&lt;br /&gt;
| Measurement start&lt;br /&gt;
| events.imrworldwide.com/nmp&lt;br /&gt;
|-&lt;br /&gt;
| Primary Standard Ping&lt;br /&gt;
| After 1 second of viewable duration (may not occur based on MRC rules)&lt;br /&gt;
| events.imrworldwide.com/psp&lt;br /&gt;
|-&lt;br /&gt;
| Timed Pings&lt;br /&gt;
| At 1, 5, 15 and 120 seconds of ad session time (may not occur based on ad session length)&lt;br /&gt;
| events.imrworldwide.com/1sp, 5sp, 15sp, 120sp&lt;br /&gt;
|-&lt;br /&gt;
| Final Ping&lt;br /&gt;
| At window/tab unloading event&lt;br /&gt;
| events.imrworldwide.com/fp&lt;br /&gt;
|-&lt;br /&gt;
| Error Ping&lt;br /&gt;
| Potential integration error - please contact your Nielsen representative&lt;br /&gt;
| events.imrworldwide.com/er&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Ping Flow ===&lt;br /&gt;
&lt;br /&gt;
This flow illustrates the behavior of the DAR Display tag.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:Screenshot 2022-06-22 152646.png]]&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|- &lt;br /&gt;
! colspan=&amp;quot;2&amp;quot; | Ping Flow Legend&lt;br /&gt;
|- &lt;br /&gt;
| 1SP, 5SP, 15SP, 120SP&lt;br /&gt;
| Timed Measure Ping at 1, 5, 15 and 120 seconds&lt;br /&gt;
|- &lt;br /&gt;
| D0, D1, D2&lt;br /&gt;
| Dynamic SIVT Pings at 1, 15 &amp;amp;amp; 30 seconds&lt;br /&gt;
|- &lt;br /&gt;
| FP&lt;br /&gt;
| Final Ping&lt;br /&gt;
|- &lt;br /&gt;
| IMPID&lt;br /&gt;
| Unique Impression ID&lt;br /&gt;
|- &lt;br /&gt;
| NMP&lt;br /&gt;
| Nielsen Main Measure Ping&lt;br /&gt;
|-&lt;br /&gt;
| PSP&lt;br /&gt;
| Primary Standard Ping&lt;br /&gt;
|-&lt;br /&gt;
| SIVT&lt;br /&gt;
| Sophisticated Invalid Traffic&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== DAR Video == &lt;br /&gt;
&lt;br /&gt;
The DAR Video tag will typically be trafficked as part of a Video Ad Serving Template (VAST) file. Nielsen provides its wrapped video tag (vWrap) to make this type of deployment easy and consistent across the various ad servers and trafficking options. Nielsen’s vWrap tag supports both automatic OMID and VPAID integration with existing VAST files. The two sections below, [[#Wrapped_Video_Tag_.28vWrap.29_Deployment|'''Wrapped Video Tag''']] and [[#Video_JS_Tag|'''Video JS Tag''']], describe these options and their expected outcomes.&lt;br /&gt;
&lt;br /&gt;
In addition, Nielsen supports '''direct DAR Video tag deployments''' with manual integration in existing workflows. In this case, the section [[#video-js-tag|'''Video JS Tag''']] below describes the basic setup and expected results. In addition, it is recommended that you work closely with your Nielsen Technical Account Manager if you consider a manual tag integration with your campaigns.&lt;br /&gt;
&lt;br /&gt;
=== Wrapped Video Tag (vWrap) Deployment ===&lt;br /&gt;
&lt;br /&gt;
Nielsen’s wrapped DAR video tag, vWrap, is the preferred delivery method for VAST-controlled video ad placements.The vWrap tag is served by a Nielsen service that takes an original VAST with an inline ad (not a wrapper redirect) and dynamically adds the DAR Video tag with measurement solutions for VPAID and OMID. The '''apiframework''' parameter can be used to control which measurement solution will be inserted (see below).&lt;br /&gt;
&lt;br /&gt;
=== Parameters ===&lt;br /&gt;
&lt;br /&gt;
The minimum required DAR parameters are '''ca, ci, ce, cr, pc''', '''am, apiframework''' and '''vastURL'''. See the [[DAR_Tag_Implementation_Guide#Appendix|'''Appendix''']] for a full list of parameters.&lt;br /&gt;
&lt;br /&gt;
The Open Real Time Bidding ([https://iabtechlab.com/wp-content/uploads/2022/04/OpenRTB-2-6_FINAL.pdf '''OpenRTB''']) API framework values for identifying the ad inventory type should be passed in the Nielsen '''apiframework''' parameter. The values should be either 1 or 2 (VPAID) or 7 or 8 (OMID). The available API framework values are listed in the IAB’s [https://github.com/InteractiveAdvertisingBureau/AdCOM/blob/master/AdCOM%20v1.0%20FINAL.md#list--api-frameworks- '''AdCOM specification 1.0''']. If the parameter is left blank or set to 0, Wrap will add the DAR Video tag as '''both''' an OMID verification client and VPAID wrapper. See more details in the [[DAR_Tag_Implementation_Guide#Appendix|'''Appendix''']].&lt;br /&gt;
&lt;br /&gt;
The '''vastURL''' parameter must be the last parameter on the DAR tag with its value set as the full URL (including all original parameters) of the original VAST tag for the ad placement.&lt;br /&gt;
&lt;br /&gt;
=== Example Wrapped Video Tag (vWrap) ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-family:'Courier New', Courier, monospace !important;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! &amp;lt;syntaxhighlight lang=&amp;quot;html&amp;quot;&amp;gt; https://vwrap.imrworldwide.com/v1/wrap?ca=nlsnXXXXXX&amp;amp;cr={AD.ID}&amp;amp;ce={PUBLISHER.ID}&amp;amp;pc={PLACEMENT.ID}&amp;amp;ci=nlsnciXXXX&amp;amp;am=4&amp;amp;&lt;br /&gt;
c9={devid,Advertising_ID}&amp;amp;c13=asid,app_id}&amp;amp;apiframework={APIFRAMEWORK}&amp;amp;vastURL={ORIGINAL_VAST_URL}&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
To observe how vWrap operates, we have provided some example VAST URLs which you can load directly in your browser.&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
==== VAST ad Unit, no Impression/Viewability ====&lt;br /&gt;
First, here is a VAST ad unit with a single video file and no impression tracking or viewability measurement:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
! https://madimator.com/vast-examples/example_video_only_nielsen_15s.xml &lt;br /&gt;
|}&lt;br /&gt;
==== VAST ad Unit, Nielsen vWrap for OMID measurement ====&lt;br /&gt;
This is the same VAST file loaded via Nielsen’s vWrap tag for '''OMID measurement''' (apiframework is set to 7):&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
! https://vwrap.imrworldwide.com/v1/wrap?ca=nlsn305255&amp;amp;cr=nielsenomidtest&amp;amp;ce=nielsen&amp;amp;pc=vastomid&amp;amp;ci=nlsntest&amp;amp;am=4&amp;amp;apiframework=7&amp;amp;vastURL=http://madimator.com/vast-examples/example_video_only_nielsen_15s.xml&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== VAST ad Unit, Nielsen vWrap for VPAID measurement ====&lt;br /&gt;
And here is the same VAST with the vWrap tag configured for '''VPAID measurement''' (apiframework is set to 2):&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
!https://vwrap.imrworldwide.com/v1/wrap?ca=nlsn305255&amp;amp;cr=nielsenomidtest&amp;amp;ce=nielsen&amp;amp;pc=vastvpaid&amp;amp;ci=nlsntest&amp;amp;am=4&amp;amp;apiframework=2&amp;amp;vastURL=http://madimator.com/vast-examples/example_video_only_nielsen_15s.xml &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Video JS Tag ===&lt;br /&gt;
&lt;br /&gt;
The DAR Video tag supports both OM SDK and VPAID video ad measurement and provides viewability time series, audio volume time series, GIVT, and SIVT data. The time series contains playhead events with corresponding measurements at a 1-second resolution. In addition to the time series, a dedicated ping will report on the MRC-required minimum of 2 seconds on screen.&lt;br /&gt;
&lt;br /&gt;
With OM SDK, the DAR Video tag supports the following ad types:&lt;br /&gt;
&lt;br /&gt;
* Native mobile in-app ad placements &lt;br /&gt;
* Mobile web ads&lt;br /&gt;
* OM Web placements&lt;br /&gt;
* OMID-enabled streaming video players with ad SDKs (for instance DAI IMA SDK)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
With VPAID, it supports the following operating modes:&lt;br /&gt;
* As VPAID wrapper for an existing VPAID ad unit in the VAST&lt;br /&gt;
* As VPAID ad unit in a VAST with video files and AdParameters node&lt;br /&gt;
* In Custom Integrations with VPAID host players&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
In most cases, the DAR Video tag should not be manually implemented as a wrapper, instead consider utilizing Nielsen’s vWrap tag.&lt;br /&gt;
&lt;br /&gt;
==== Requirements ====&lt;br /&gt;
&lt;br /&gt;
The DAR Video tag needs a JavaScript environment to operate. The video unit to be measured needs to have a size of at least 30x30 pixels. The DAR Video tag requires access to the VPAID ad unit or to an OM SDK API present in the JavaScript context.&lt;br /&gt;
&lt;br /&gt;
==== Parameters ====&lt;br /&gt;
&lt;br /&gt;
The minimum required DAR parameters are '''ca, ci, ce, cr, pc''' and '''am'''. For VPAID wrapper placements, '''vpaidURL''' is also required.&lt;br /&gt;
&lt;br /&gt;
To comply with MRC guidelines, you will be required to append '''autop''' to indicate click-to-play vs auto-play.&lt;br /&gt;
&lt;br /&gt;
If the DAR Video tag will act as the VPAID wrapper, '''vpaidURL''' has to be the tag’s last parameter and its value set to the full URL (including parameters) of the original VPAID ad unit.&lt;br /&gt;
&lt;br /&gt;
See the [[DAR_Tag_Implementation_Guide#Appendix|'''Appendix''']] for a full list of parameters.&lt;br /&gt;
&lt;br /&gt;
==== Expected Video Ad Session Pings ====&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
! '''Description'''&lt;br /&gt;
! '''Timing'''&lt;br /&gt;
! '''Path'''&lt;br /&gt;
|-&lt;br /&gt;
| DAR Main Ping&lt;br /&gt;
| At initial load&lt;br /&gt;
| secure-gl.imrworldwide.com/cgi-bin/m&lt;br /&gt;
|-&lt;br /&gt;
| Nielsen Measure Ping&lt;br /&gt;
| Measurement start&lt;br /&gt;
| events.imrworldwide.com/nmp&lt;br /&gt;
|-&lt;br /&gt;
| Primary Standard Ping&lt;br /&gt;
| After 2 seconds of viewable duration (may not occur based on MRC rules)&lt;br /&gt;
| events.imrworldwide.com/psp&lt;br /&gt;
|-&lt;br /&gt;
| Quarterly Ping&lt;br /&gt;
| At 25%, 50%, 75% and 100% of video progress&lt;br /&gt;
| events.imrworldwide.com/qp&lt;br /&gt;
|-&lt;br /&gt;
| Final Ping&lt;br /&gt;
| At video stop or window/tab unloading event&lt;br /&gt;
| events.imrworldwide.com/fp&lt;br /&gt;
|-&lt;br /&gt;
| Error Ping&lt;br /&gt;
| Potential integration error - please contact your Nielsen representative&lt;br /&gt;
| events.imrworldwide.com/er&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Ping Flow ====&lt;br /&gt;
&lt;br /&gt;
This flow illustrates the behavior of the DAR Video tag if the impression pixel is part of the VAST to be sent by the ad player and the JS tag has '''&amp;amp;amp;darsup=1'''. The parameter, &amp;lt;code&amp;gt;darsup=1&amp;lt;/code&amp;gt;, is used to suppress the DAR Main Ping from being sent from the JS tag since the DAR main ping will be sent from the DAR impression pixel. This is the default setup if Nielsen’s vWrap tag is being used to set up the video campaign.&lt;br /&gt;
&lt;br /&gt;
[[File:Screenshot 2022-06-22 2.png]]&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|- &lt;br /&gt;
! colspan=&amp;quot;2&amp;quot; | Ping Flow Legend&lt;br /&gt;
|- &lt;br /&gt;
| D0, D1, D2&lt;br /&gt;
| Dynamic SIVT Pings at 1, 15 &amp;amp;amp; 30 seconds&lt;br /&gt;
|- &lt;br /&gt;
| FP&lt;br /&gt;
| Final Ping&lt;br /&gt;
|- &lt;br /&gt;
| IMPID&lt;br /&gt;
| Unique Impression ID&lt;br /&gt;
|- &lt;br /&gt;
| NMP&lt;br /&gt;
| Nielsen Main Measure Ping&lt;br /&gt;
|-&lt;br /&gt;
| PSP&lt;br /&gt;
| Primary Standard Ping&lt;br /&gt;
|-&lt;br /&gt;
| QP&lt;br /&gt;
|Quarterly Media Pings at 25%, 50%, 75% and 100%&lt;br /&gt;
|-&lt;br /&gt;
| SIVT&lt;br /&gt;
| Sophisticated Invalid Traffic&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Example OMID Video Placement ====&lt;br /&gt;
&lt;br /&gt;
DAR can be enabled through the OM SDK by passing the required Nielsen OM inputs listed in the table in the VAST &amp;amp;lt;adVerifications&amp;amp;gt; node:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
! '''OM Parameter'''&lt;br /&gt;
! '''Description'''&lt;br /&gt;
! '''Nielsen Value'''&lt;br /&gt;
! '''Required'''&lt;br /&gt;
|-&lt;br /&gt;
| Vendor Key&lt;br /&gt;
| ID for measurement provider&lt;br /&gt;
| nielsen.com-omid&lt;br /&gt;
| ✔&lt;br /&gt;
|-&lt;br /&gt;
| JavaScript Resource URL&lt;br /&gt;
| URL for measurement provider’s verification script&lt;br /&gt;
| &amp;lt;syntaxhighlight lang=&amp;quot;html&amp;quot;&amp;gt;https://dar.imrworldwide.com/js/darvideo.js&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
| ✔&lt;br /&gt;
|-&lt;br /&gt;
| Verification Parameters&lt;br /&gt;
| Measurement provider’s verification tag parameters&lt;br /&gt;
| style=&amp;quot;font-family:'Courier New', Courier, monospace !important; color:#222222;&amp;quot; |&amp;lt;syntaxhighlight lang=&amp;quot;html&amp;quot;&amp;gt;ca=nlsnXXXXXX&amp;amp;cr={AD.ID}&amp;amp;ce=publisherXXXX&amp;amp;ci=nlsnciXXXX&amp;amp;&lt;br /&gt;
pc=placementID_XXXX1&amp;amp;am=3&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
| ✔&lt;br /&gt;
|-&lt;br /&gt;
| Verification Not Executed URL&lt;br /&gt;
| Error URL when the ad player denies measurement script execution&lt;br /&gt;
| style=&amp;quot;font-family:'Courier New', Courier, monospace !important; color:#222222;&amp;quot; | &amp;lt;syntaxhighlight lang=&amp;quot;html&amp;quot;&amp;gt;https://events.imrworldwide.com/er?ercd=8800&amp;amp;erms=verificationNotExecuted-&lt;br /&gt;
{reason}&amp;amp;ca=nlsnXXXXXX&amp;amp;cr=ad_ID_XXXX&amp;amp;ce=publisherXXXX&amp;amp;&lt;br /&gt;
ci=nlsnciXXXX&amp;amp;pc=placementID_XXXX5&amp;amp;am=3&amp;amp;c9={devid,Advertising_ID}&lt;br /&gt;
&amp;amp;c13={asid,app_id}&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
Note: The verificationNotExecuted Error URL is recommended for better troubleshooting during campaign setup. If your system can provide a macro for the reason of the interrupted measurement session, it can be added in place of the {reason} placeholder in the error URL. This can be an error code or a clear text error message.&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Example VPAID Placement in VAST ====&lt;br /&gt;
&lt;br /&gt;
A typical VAST placement with VPAID will contain an impression pixel, the DAR Video JS tag as MediaFile of type “VPAID”, and the video MediaFiles will be duplicated as AdParameters object. In the example below, there was no original VPAID ad unit (the original VAST only contained MP4 video files), so the &amp;amp;amp;vpaidURL parameter on the DAR JS tag stays empty.&lt;br /&gt;
&lt;br /&gt;
In this example, the DAR JavaScript tag will operate as the VPAID ad unit and will play an appropriate media file from the list contained in the AdParameters node.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;json&amp;quot;&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;Impression id=&amp;quot;Nielsen Digital Ad Ratings&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;![CDATA[https://secure-enc.imrworldwide.com/cgi-bin/m?at=view&amp;amp;cy=2&amp;amp;rt=banner&amp;amp;src=njs&amp;amp;&lt;br /&gt;
st=image&amp;amp;tpv=vwrap&amp;amp;ca=nlsnXXXXXX&amp;amp;cr={AD.ID}&amp;amp;ce=publisherXXXX&amp;amp;ci=nlsnciXXXX&amp;amp;pc=placementID_XXXX1&amp;amp;am=3]]&amp;gt;&lt;br /&gt;
&amp;lt;/Impression&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;MediaFiles&amp;gt;&lt;br /&gt;
    &amp;lt;MediaFile apiFramework=&amp;quot;VPAID&amp;quot; type=&amp;quot;application/javascript&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;![CDATA[https://dar.imrworldwide.com/js/darvideo.js?darsup=1&amp;amp;ca=nlsnXXXXXX&amp;amp;cr={{AD.ID}}&amp;amp;&lt;br /&gt;
ce=publisherXXXX&amp;amp;ci=nlsnciXXXX&amp;amp;pc=placementID_XXXX1&amp;amp;am=3]]&amp;gt;&lt;br /&gt;
    &amp;lt;/MediaFile&amp;gt;&lt;br /&gt;
    &amp;lt;MediaFile bitrate=&amp;quot;720&amp;quot; delivery=&amp;quot;progressive&amp;quot; height=&amp;quot;480&amp;quot; id=&amp;quot;XXXXXX&amp;quot;&lt;br /&gt;
               maintainAspectRatio=&amp;quot;true&amp;quot; scalable=&amp;quot;true&amp;quot; type=&amp;quot;video/mp4&amp;quot;  &lt;br /&gt;
               width=&amp;quot;854&amp;quot;&amp;gt;&amp;lt;![CDATA[https://XXXXX.net/XXXXXX.mp4]]&amp;gt;&lt;br /&gt;
    &amp;lt;/MediaFile&amp;gt;&lt;br /&gt;
&amp;lt;/MediaFiles&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;AdParameters&amp;gt;&lt;br /&gt;
&amp;lt;![CDATA[{&amp;quot;mediaFiles&amp;quot;:[{&amp;quot;bitrate&amp;quot;:&amp;quot;720&amp;quot;,&amp;quot;uri&amp;quot;:&amp;quot;https://XXXXX.net/XXXXXX.mp4&amp;quot;,&amp;quot;height&amp;quot;:&amp;quot;480&amp;quot;,&amp;quot;scalable&amp;quot;:&amp;quot;true&amp;quot;,&lt;br /&gt;
&amp;quot;id&amp;quot;:&amp;quot;XXXXXX&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;video/mp4&amp;quot;,&amp;quot;maintainAspectRatio&amp;quot;:&amp;quot;true&amp;quot;,&amp;quot;delivery&amp;quot;:&amp;quot;progressive&amp;quot;,&amp;quot;width&amp;quot;:&amp;quot;854&amp;quot;}]]&amp;gt;&lt;br /&gt;
&amp;lt;/AdParameters&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Server-Side Integration ====&lt;br /&gt;
&lt;br /&gt;
If you are interested in implementing the DAR tags server-side, e.g. through SSAI, please contact your Nielsen TAM to provide you with the required guidelines.&lt;br /&gt;
&lt;br /&gt;
==== Notes ====&lt;br /&gt;
&lt;br /&gt;
Manual placement of the DAR Video tag is only recommended in situations where the DAR vWrap tag can not be utilized, like in certain mobile in-app ad placements or in scenarios where DAR Video needs to be configured as OMID viewability measurement solution.&lt;br /&gt;
&lt;br /&gt;
== Pixel Tag== &lt;br /&gt;
&lt;br /&gt;
The DAR Impression pixel provides basic campaign impression counts and allows to cover placements served in environments where the DAR JavaScript tag is not supported.&lt;br /&gt;
&lt;br /&gt;
=== Environment ===&lt;br /&gt;
&lt;br /&gt;
The DAR pixel tag should only be used in environments where the DAR JavaScript tag cannot be utilized such as restricted CTV environments, for SSAI Server-Side Beaconing, and other situations where an adequate JavaScript environment is not available.&lt;br /&gt;
&lt;br /&gt;
=== Parameters ===&lt;br /&gt;
&lt;br /&gt;
The minimum required DAR parameters are '''ca, ci, ce, cr, pc''', and '''am''' along with fixed valued params, '''at=view''', '''rt=banner''' and '''st=image''' . See the [[DAR_Tag_Implementation_Guide#Appendix|'''Appendix''']] for a full list of parameters.&lt;br /&gt;
&lt;br /&gt;
=== Example Tag ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;html&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;img src=&amp;quot;https://secure-gl.imrworldwide.com/cgi-bin/m?ca=nlsnXXXXXX&amp;amp;cr=crtve&lt;br /&gt;
&amp;amp;ce={PUBLISHER.ID}&amp;amp;pc=PLACEMENT.ID}&amp;amp;nlsnciXXXX&amp;amp;am=3&amp;amp;at=view&amp;amp;rt=banner&amp;amp;st=image&lt;br /&gt;
&amp;amp;cy=0&amp;amp;r=[timestamp]&amp;quot; style=&amp;quot;display:none&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Tag Integration =&lt;br /&gt;
A successful tag integration will require you to go through the following 6 steps.&lt;br /&gt;
== Step 1: Determine Your Campaign Needs== &lt;br /&gt;
To receive optimal results from DAR measurement, it is good practice to consider the technical requirements of different sites and placements. Please share your media plan with your Technical Account Manager before launch.&lt;br /&gt;
&lt;br /&gt;
Specifically, be on the lookout for placements that might span across web and mobile ad inventory and make sure if all of the in-app placements support OMID. Also, some placement types may need manual setup and cannot be automated or may need extra time for setup and testing.&lt;br /&gt;
&lt;br /&gt;
Please reach out to your Nielsen Technical Account Manager (TAM) for advice if the technical requirements for your campaign are not clear.&lt;br /&gt;
== Step 2: Generate Tags== &lt;br /&gt;
Your Nielsen representative will walk you through the Campaign Management Interface (CMI) so that you can generate DAR tags for your campaigns at any time.&lt;br /&gt;
&lt;br /&gt;
Nielsen supports macro-based tag generation for several major ad servers. Nielsen’s Technical Account Managers can assist you with any technical questions on tagging campaigns for DAR measurement.&lt;br /&gt;
== Step 3: Campaign Integration== &lt;br /&gt;
Your Nielsen tags created in CMI will need to be included when you traffic your ad campaigns. Please reach out to your Nielsen TAM for additional guidance and assistance.&lt;br /&gt;
== Step 4: Test the Tag Implementation== &lt;br /&gt;
Depending on the complexity of the integration, you may be working closely with a TAM at this point or are performing a self-guided tag implementation based on the CMI output.&lt;br /&gt;
&lt;br /&gt;
If working with a TAM, they will coordinate a plan to test the tag implementation ahead of the campaign go-live date. Depending on your campaign needs, testing will involve either running a diagnostic campaign to validate tagging setup or reviewing test pages or apps.&lt;br /&gt;
&lt;br /&gt;
In case of a self-guided tag implementation, we recommend to verify and compare the impression counts in the CMI with your planned campaign volume or ad server reports during the first hours of the campaign. If there are any unexpected impression counts, please reach out to your Nielsen TAM.&lt;br /&gt;
== Step 5: Share your Ad Server Report== &lt;br /&gt;
&lt;br /&gt;
=== Why the Ad Server Report is Needed ===&lt;br /&gt;
&lt;br /&gt;
Knowing the delivered impressions helps Nielsen run Discrepancy Checks ensuring overall quality and reduces errors in the tagging process.&lt;br /&gt;
&lt;br /&gt;
Nielsen can provide the client with a template with the inputs required to complete the quality checks.&lt;br /&gt;
&lt;br /&gt;
=== How to Share Your Delivered impressions ===&lt;br /&gt;
&lt;br /&gt;
Set up an automated daily report from your ad server containing Site Name, Site ID, Placement Name, Placement ID, and data date.&lt;br /&gt;
&lt;br /&gt;
A secondary method to share your media plan information is to grant Nielsen “Reporting access” to your campaign in the designated ad server (such as DCM). To do this, simply grant the login '''clientreporting@nielsen.com''' access. In doing so Nielsen can directly access your media plan information, which enables us to check for updates, and reconcile any discrepancies.&lt;br /&gt;
&lt;br /&gt;
== Step 6: Monitoring Your Campaign== &lt;br /&gt;
Nielsen recommends all clients participate in Discrepancy Checks. Nielsen’s team will verify that the tags delivered have begun to receive data once the campaign goes live and will regularly (typically every 7-14 days) compare the Nielsen reporting to your 3rd party or publisher reporting to ensure we are capturing all data across all placements, as expected, and that the discrepancy gap between your reporting and the Nielsen reporting is kept to a minimum.&lt;br /&gt;
&lt;br /&gt;
= Appendix =&lt;br /&gt;
== Tag Parameters== &lt;br /&gt;
All passthrough parameters will appear on the JavaScript-generated DAR impression ping.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;background-color:#FFF;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;font-weight:bold; background-color:#EAECF0; color:#222;&amp;quot;&lt;br /&gt;
! Query Parameter&lt;br /&gt;
! Description&lt;br /&gt;
! style=&amp;quot;text-align:center;&amp;quot; | Required&lt;br /&gt;
! style=&amp;quot;text-align:center;&amp;quot; | Pass-through&lt;br /&gt;
|- style=&amp;quot;font-weight:bold; text-align:center; vertical-align:middle; background-color:#FFEBD3; color:#222;&amp;quot;&lt;br /&gt;
| colspan=&amp;quot;4&amp;quot; | Group 1 - Required Parameters&lt;br /&gt;
|- style=&amp;quot;vertical-align:middle; color:#222;&amp;quot;&lt;br /&gt;
| ca&lt;br /&gt;
| Campaign ID&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | X&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | X&lt;br /&gt;
|- style=&amp;quot;vertical-align:middle; background-color:#EFEFEF; color:#222;&amp;quot;&lt;br /&gt;
| pc&lt;br /&gt;
| Placement ID&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | X&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | X&lt;br /&gt;
|- style=&amp;quot;vertical-align:middle; color:#222;&amp;quot;&lt;br /&gt;
| ci&lt;br /&gt;
| Client ID&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | X&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | X&lt;br /&gt;
|- style=&amp;quot;vertical-align:middle; background-color:#EFEFEF; color:#222;&amp;quot;&lt;br /&gt;
| am&lt;br /&gt;
| Ad server ID&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | X&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | X&lt;br /&gt;
|- style=&amp;quot;color:#222;&amp;quot;&lt;br /&gt;
| ce&lt;br /&gt;
| Site ID&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | X&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | X&lt;br /&gt;
|- style=&amp;quot;background-color:#F4F5F7; color:#222;&amp;quot;&lt;br /&gt;
| cr&lt;br /&gt;
| Creative ID&lt;br /&gt;
| style=&amp;quot;text-align:center; background-color:#EFEFEF;&amp;quot; | X&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | X&lt;br /&gt;
|- style=&amp;quot;font-weight:bold; text-align:center; vertical-align:middle; background-color:#FFEBD3; color:#222;&amp;quot;&lt;br /&gt;
| colspan=&amp;quot;4&amp;quot; | Group 2 - Use Case Specific Parameters&lt;br /&gt;
|- style=&amp;quot;vertical-align:middle; background-color:#EFEFEF; color:#222;&amp;quot;&lt;br /&gt;
| at&lt;br /&gt;
| Fixed Value &amp;quot;view&amp;quot; (Nielsen value, JS tags add this to DAR and NMP pings)&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | Pixel only&lt;br /&gt;
| &lt;br /&gt;
|- style=&amp;quot;vertical-align:middle; color:#222;&amp;quot;&lt;br /&gt;
| st&lt;br /&gt;
| Fixed Value &amp;quot;image&amp;quot; (Nielsen value, JS tags add this to DAR and NMP pings)&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | Pixel only&lt;br /&gt;
| &lt;br /&gt;
|- style=&amp;quot;vertical-align:middle; background-color:#EFEFEF; color:#222;&amp;quot;&lt;br /&gt;
| rt&lt;br /&gt;
| Fixed Value &amp;quot;banner&amp;quot; (Nielsen value, JS tags add this to DAR and NMP pings)&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | Pixel only&lt;br /&gt;
| &lt;br /&gt;
|- style=&amp;quot;vertical-align:middle; color:#222;&amp;quot;&lt;br /&gt;
| r&lt;br /&gt;
| Cachebuster/Timestamp. It's required in the pixel tags with a hardcoded&amp;lt;br /&amp;gt;value as a default or a macro (r=timestamp/macro) .&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | Pixel only&lt;br /&gt;
| &lt;br /&gt;
|- style=&amp;quot;vertical-align:middle; background-color:#EFEFEF; color:#222;&amp;quot;&lt;br /&gt;
| cy&lt;br /&gt;
| Creative type (1: display/2: video) JS tags add this to DAR and NMP pings for In-House Viewability.&amp;lt;br /&amp;gt;When parameter is not present or value is missing on pixel tags, there will be no creative type breakout.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | Pixel only&lt;br /&gt;
| &lt;br /&gt;
|- style=&amp;quot;vertical-align:middle; color:#222;&amp;quot;&lt;br /&gt;
| '''[[DAR_Tag_Implementation_Guide#vWrap_apiframework_Values|apiframework]]'''&lt;br /&gt;
| IAB-defined value designating the measurement method See vWrap apiframework values&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | vWrap only&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | X&lt;br /&gt;
|- style=&amp;quot;vertical-align:middle; background-color:#EFEFEF; color:#222;&amp;quot;&lt;br /&gt;
| autof&lt;br /&gt;
| Video only: Auto refresh (1 for auto refresh, leave empty otherwise)&lt;br /&gt;
| &lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | X&lt;br /&gt;
|- style=&amp;quot;vertical-align:middle; color:#222;&amp;quot;&lt;br /&gt;
| autop&lt;br /&gt;
| Video only: Autoplay (1 for auto-play, 2 for click-to-play, leave empty otherwise)&lt;br /&gt;
| &lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | X&lt;br /&gt;
|- style=&amp;quot;vertical-align:middle; background-color:#EFEFEF; color:#222;&amp;quot;&lt;br /&gt;
| c7&lt;br /&gt;
| OS Grouping&amp;lt;br /&amp;gt;c7=osgrp,IOS&amp;lt;br /&amp;gt;c7=osgrp,DROID&amp;lt;br /&amp;gt;c7=osgrp,ANDROID&lt;br /&gt;
| &lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | X&lt;br /&gt;
|- style=&amp;quot;vertical-align:middle; color:#222;&amp;quot;&lt;br /&gt;
| c8&lt;br /&gt;
| Device Grouping&amp;lt;br /&amp;gt;c8=devgrp,DSK (computers)&amp;lt;br /&amp;gt;c8=devgrp,PHN (mobile phone devices)&amp;lt;br /&amp;gt;c8=devgrp,TAB (mobile tablet devices)&amp;lt;br /&amp;gt;c8=devgrp,PMP (portable media player)&amp;lt;br /&amp;gt;c8=devgrp,UNWN (unknown mobile devices)&lt;br /&gt;
| &lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | X&lt;br /&gt;
|- style=&amp;quot;vertical-align:middle; background-color:#EFEFEF; color:#222;&amp;quot;&lt;br /&gt;
| c9&lt;br /&gt;
| Mobile Advertising ID&amp;lt;br /&amp;gt;c9=devid,xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | Mobile&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | X&lt;br /&gt;
|- style=&amp;quot;vertical-align:middle; color:#222;&amp;quot;&lt;br /&gt;
| c10&lt;br /&gt;
| Platform&amp;lt;br /&amp;gt;c10=plt,DSK (Computer)&amp;lt;br /&amp;gt;c10=plt,MBL (Mobile)&amp;lt;br /&amp;gt;c10=plt,OTT (Connected Device)&lt;br /&gt;
| &lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | X&lt;br /&gt;
|- style=&amp;quot;vertical-align:middle; background-color:#EFEFEF; color:#222;&amp;quot;&lt;br /&gt;
| c12&lt;br /&gt;
| App Version&amp;lt;br /&amp;gt;c12=apv,xxx&lt;br /&gt;
| &lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | X&lt;br /&gt;
|- style=&amp;quot;vertical-align:middle; color:#222;&amp;quot;&lt;br /&gt;
| c13&lt;br /&gt;
| Nielsen Assigned App ID&amp;lt;br /&amp;gt;Example:&amp;lt;br /&amp;gt;c13=asid,xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | Mobile&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | X&lt;br /&gt;
|- style=&amp;quot;vertical-align:middle; background-color:#EFEFEF; color:#222;&amp;quot;&lt;br /&gt;
| c14&lt;br /&gt;
| OS Version&amp;lt;br /&amp;gt;c14=osver,xxx&lt;br /&gt;
| &lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | X&lt;br /&gt;
|- style=&amp;quot;vertical-align:middle; color:#222;&amp;quot;&lt;br /&gt;
| c68&lt;br /&gt;
| Mobile App Bundle ID&amp;lt;br /&amp;gt;c68=bndlid,xxxxxxxxxxxxxx&amp;lt;br /&amp;gt;References:&amp;lt;br /&amp;gt;https://developer.apple.com/documentation/appstoreconnectapi/bundle_ids&amp;lt;br /&amp;gt;https://developer.android.com/studio/build/configure-app-module#set_the_application_id&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | Mobile&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | X&lt;br /&gt;
|- style=&amp;quot;vertical-align:middle; background-color:#EFEFEF; color:#222;&amp;quot;&lt;br /&gt;
| C78&lt;br /&gt;
| Custom Integration Flag (please note: this is the only uppercase parameter name)&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | some vendors&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | X&lt;br /&gt;
|- style=&amp;quot;vertical-align:middle; color:#222;&amp;quot;&lt;br /&gt;
| darsup&lt;br /&gt;
| If present suppress DAR main ping originating from JS tag (value can be 0 or 1, same effect)&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
|- style=&amp;quot;vertical-align:middle; background-color:#EFEFEF; color:#222;&amp;quot;&lt;br /&gt;
| forceid&lt;br /&gt;
| If present provides impid, can be overwritten by impid parameter&lt;br /&gt;
| &lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | X (as impid)&lt;br /&gt;
|- style=&amp;quot;vertical-align:middle; color:#222;&amp;quot;&lt;br /&gt;
| impid&lt;br /&gt;
| Same as forceid, but higher priority in case both are present&lt;br /&gt;
| &lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | X&lt;br /&gt;
|- style=&amp;quot;vertical-align:middle; background-color:#EFEFEF; color:#222;&amp;quot;&lt;br /&gt;
| frcd&lt;br /&gt;
| Video only: Forced duration (seconds/null)&lt;br /&gt;
| &lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | X&lt;br /&gt;
|- style=&amp;quot;vertical-align:middle; color:#222;&amp;quot;&lt;br /&gt;
| frcf&lt;br /&gt;
| Video only: Forced ad flag (yes/no/null)&lt;br /&gt;
| &lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | X&lt;br /&gt;
|- style=&amp;quot;vertical-align:middle; background-color:#EFEFEF; color:#222;&amp;quot;&lt;br /&gt;
| ptraf&lt;br /&gt;
| Video only: Purchased traffic&lt;br /&gt;
| &lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | X&lt;br /&gt;
|- style=&amp;quot;vertical-align:middle; color:#222;&amp;quot;&lt;br /&gt;
| contplay&lt;br /&gt;
| Video only: Continuous play&lt;br /&gt;
| &lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | X&lt;br /&gt;
|- style=&amp;quot;vertical-align:middle; background-color:#EFEFEF; color:#222;&amp;quot;&lt;br /&gt;
| gdpr&lt;br /&gt;
| GDPR flag to indicate whether GDPR is applicable:&amp;lt;br /&amp;gt;0 - GDPR does not apply&amp;lt;br /&amp;gt;1 - GDPR applies&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | in some jurisdictions&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | X&lt;br /&gt;
|- style=&amp;quot;vertical-align:middle; color:#222;&amp;quot;&lt;br /&gt;
| gdpr_consent&lt;br /&gt;
| URL-safe base64-encoded Transparency &amp;amp; Consent (TC) string for&amp;lt;br /&amp;gt;identifying user's privacy preferences&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | in some jurisdictions&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | X&lt;br /&gt;
|- style=&amp;quot;vertical-align:middle; background-color:#EFEFEF; color:#222;&amp;quot;&lt;br /&gt;
| hem_md5&lt;br /&gt;
| Hashed email&lt;br /&gt;
| &lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | X&lt;br /&gt;
|- style=&amp;quot;vertical-align:middle; color:#222;&amp;quot;&lt;br /&gt;
| hem_sha1&lt;br /&gt;
| Hashed email&lt;br /&gt;
| &lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | X&lt;br /&gt;
|- style=&amp;quot;vertical-align:middle; background-color:#EFEFEF; color:#222;&amp;quot;&lt;br /&gt;
| hem_sha256&lt;br /&gt;
| Hashed email&lt;br /&gt;
| &lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | X&lt;br /&gt;
|- style=&amp;quot;vertical-align:middle; color:#222;&amp;quot;&lt;br /&gt;
| hem_unknown&lt;br /&gt;
| Hashed email&lt;br /&gt;
| &lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | X&lt;br /&gt;
|- style=&amp;quot;vertical-align:middle; background-color:#EFEFEF; color:#222;&amp;quot;&lt;br /&gt;
| mode&lt;br /&gt;
| VPAID video only, optional: Custom Direct Access mode&amp;lt;br /&amp;gt;(&amp;quot;w&amp;quot; wrapper / &amp;quot;c&amp;quot; custom; defaults to wrapper)&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
|- style=&amp;quot;vertical-align:middle; color:#222;&amp;quot;&lt;br /&gt;
| onload&lt;br /&gt;
| VPAID video only, optional: JS callback for Custom Direct Access VPAID integration&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
|- style=&amp;quot;vertical-align:middle; background-color:#EFEFEF; color:#222;&amp;quot;&lt;br /&gt;
| pub&lt;br /&gt;
| Publisher Name&lt;br /&gt;
| &lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | X&lt;br /&gt;
|- style=&amp;quot;vertical-align:middle; color:#222;&amp;quot;&lt;br /&gt;
| pubid&lt;br /&gt;
| Publisher ID&lt;br /&gt;
| &lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | X&lt;br /&gt;
|- style=&amp;quot;vertical-align:middle; background-color:#EFEFEF; color:#222;&amp;quot;&lt;br /&gt;
| si&lt;br /&gt;
| Site identifier. Canonical URL of the content where the Ad creative is served.&amp;lt;br /&amp;gt;The parameter value has to be encoded with encodeURIComponent() method or equivalent.&lt;br /&gt;
| &lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | X&lt;br /&gt;
|- style=&amp;quot;vertical-align:middle; color:#222;&amp;quot;&lt;br /&gt;
| uid2&lt;br /&gt;
| Unified ID 2.0&lt;br /&gt;
| &lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | X&lt;br /&gt;
|- style=&amp;quot;vertical-align:middle; background-color:#EFEFEF; color:#222;&amp;quot;&lt;br /&gt;
| uid2_token&lt;br /&gt;
| Unified ID 2.0 token&lt;br /&gt;
| &lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | X&lt;br /&gt;
|- style=&amp;quot;vertical-align:middle; color:#222;&amp;quot;&lt;br /&gt;
| uoo&lt;br /&gt;
| User opt out&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | Mobile&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | X&lt;br /&gt;
|- style=&amp;quot;font-weight:bold; text-align:center; vertical-align:middle; background-color:#FFEBD3; color:#222;&amp;quot;&lt;br /&gt;
| colspan=&amp;quot;4&amp;quot; | Group 3 - Parameters With Required Position in URL&lt;br /&gt;
|- style=&amp;quot;vertical-align:middle; background-color:#ffffff; color:#222;&amp;quot;&lt;br /&gt;
| vpaidURL&lt;br /&gt;
| VPAID Video only: Always the last parameter for video tags.&amp;lt;br /&amp;gt;Either VPAID ad unit URL to be wrapped or empty. If empty, DAR tag will use its own vpaidplayer.js&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | VPAID video tag only&lt;br /&gt;
| &lt;br /&gt;
|- style=&amp;quot;background-color:#f4f5f7;&amp;quot;&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; color:#222;&amp;quot; | vastURL&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; color:#222;&amp;quot; | vWrap Tag only: Always the last parameter for the vWrap tag.&amp;lt;br /&amp;gt;It must contain the URL of the original VAST for the placement.&lt;br /&gt;
| style=&amp;quot;text-align:center; vertical-align:middle; color:#222;&amp;quot; | vWrap tag only&lt;br /&gt;
| &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Additional Parameters == &lt;br /&gt;
This section describes several important additional parameters that the DAR tag can support, specifically Hashed Email, UID2 values, along with Page URL and Bundle Identifier if available. Please note that all parameters are case-sensitive.&lt;br /&gt;
&lt;br /&gt;
Please work with your Nielsen Technical Account Manager to decide which of the following parameters to append to the standard DAR tag.&lt;br /&gt;
=== HEM Support (Hashed Email) ===&lt;br /&gt;
Please use the parameter that matches your hashing algorithm. For example, if you are using sha256 to encode the email address, then use hem_sha256={encrypted_value_here}&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-weight:bold; background-color:#EAECF0;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Name&lt;br /&gt;
! Description&lt;br /&gt;
! Available Tag Parameters&lt;br /&gt;
|- style=&amp;quot;font-weight:normal; background-color:#F8F9FA;&amp;quot;&lt;br /&gt;
| Hashed Email&lt;br /&gt;
| User’s email address that has been run through a hashing algorithm&amp;lt;br /&amp;gt;(e.g. SHA256, MD5, SHA1) to create a unique 32-character hexadecimal string.&amp;lt;br /&amp;gt; If a client is unable to determine hashing type, they should pass&amp;lt;br /&amp;gt;using &amp;amp;hem_unknown parameter.&lt;br /&gt;
| &amp;amp;hem_unknown&amp;lt;br /&amp;gt;&amp;amp;hem_sha256&amp;lt;br /&amp;gt;&amp;amp;hem_md5&amp;lt;br /&amp;gt;&amp;amp;hem_sha1&lt;br /&gt;
|}&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-weight:bold;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background-color:#dae8fc; color:#002041;&amp;quot;&lt;br /&gt;
! Example&lt;br /&gt;
|- style=&amp;quot;font-weight:normal;&amp;quot;&lt;br /&gt;
| hem_sha256=tMmiiTI7IaAcPpQPFQ65uMVCWH8av9jw4cwf/F5HVRQ=&lt;br /&gt;
|}&lt;br /&gt;
=== Unified ID ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;background-color:#F8F9FA;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;font-weight:bold; background-color:#EAECF0;&amp;quot;&lt;br /&gt;
! Name&lt;br /&gt;
! Description&lt;br /&gt;
! Available Tag Parameters&lt;br /&gt;
|-&lt;br /&gt;
| Unified ID 2.0&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)&amp;lt;br /&amp;gt;and is now managed by Prebid.&lt;br /&gt;
| &amp;amp;uid2&lt;br /&gt;
|-&lt;br /&gt;
| Unified ID 2.0 Token&lt;br /&gt;
| Encrypted Unified ID 2.0&lt;br /&gt;
| &amp;amp;uid_token&lt;br /&gt;
|}&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-weight:bold;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background-color:#32BBB9; color:#002041;&amp;quot;&lt;br /&gt;
! Example&lt;br /&gt;
|- style=&amp;quot;font-weight:normal;&amp;quot;&lt;br /&gt;
| uid2=MTKVpUAzwYAPnHrtfE0wlINOMzhU7UUEjjVdCdRu63k=&amp;lt;br /&amp;gt;uid_token=AgAAAAPFR0zA5ogv/yaAPiUsAdZPsfqS8QlDSGxAB+rr8yekFs3AjLYVk5qqqiyV2XHbSuwzHmxSlLeQeKQI1mp015jsNnpX5&amp;lt;br /&amp;gt;/xGgXldcgVz+gFnyh3T8/3agMwRmyrhCxG4oH2C7fc48AQk2eotE7FW0ZDEYM8fD9ZxDaxFUC/OV3OuZA&amp;amp;&lt;br /&gt;
|}&lt;br /&gt;
=== Page and Bundle ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;background-color:#F8F9FA;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;font-weight:bold; background-color:#EAECF0;&amp;quot;&lt;br /&gt;
! Name&lt;br /&gt;
! Description&lt;br /&gt;
! Available Tag Parameters&lt;br /&gt;
|-&lt;br /&gt;
| Page URL&lt;br /&gt;
| Canonical URL of the content where the Ad creative is served. (e.g. https://example.com/news/tech/article.html) &amp;lt;br /&amp;gt;The parameter value has to be encoded with JavaScript’s encodeURIComponent() method or equivalent. &amp;lt;br /&amp;gt;Example: si=https%3A%2F%2Fexample.com%2Fnews%2Ftech%2Farticle.html&lt;br /&gt;
| &amp;amp;si&lt;br /&gt;
|-&lt;br /&gt;
| App Bundle ID&lt;br /&gt;
| The app’s unique bundle ID (e.g. com.example.myapp). The ID can be used to look up the App in Apple’s App Store&amp;lt;br /&amp;gt;or the Google Play Store.&amp;lt;br /&amp;gt;References: https://developer.android.com/studio/build/application-idhttps://developer.apple.com/documentation/appstoreconnectapi/bundle_ids&lt;br /&gt;
| &amp;amp;c68=bndlid&lt;br /&gt;
|}&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-weight:bold;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background-color:#32BBB9; color:#002041;&amp;quot;&lt;br /&gt;
! Example&lt;br /&gt;
|- style=&amp;quot;font-weight:normal;&amp;quot;&lt;br /&gt;
| si=https%3A%2F%2Fexample.com%2Fnews%2Ftech%2Farticle.html&amp;lt;br /&amp;gt;c68=bndlid,com.tam.nielsen.com&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== vWrap apiframework Values== &lt;br /&gt;
&lt;br /&gt;
Nielsen’s vWrap tag uses the existing definition of '''apiframework''' values defined in the IAB’s [https://github.com/InteractiveAdvertisingBureau/AdCOM/blob/master/AdCOM%20v1.0%20FINAL.md#list--api-frameworks- '''AdCOM Specification''' '''1.0''']. This means that existing macros for this parameter in your system should work out of the box with vWrap.&lt;br /&gt;
&lt;br /&gt;
The vWrap tag supports the numerical values in bold below. In case of '''8''' (SIMID), the DAR Video tag will be inserted as a standard OMID verification client for viewability measurement and it will not interfere with any SIMID components in the ad.&lt;br /&gt;
&lt;br /&gt;
If a '''0''' or an empty value is given, the resulting VAST will include both OMID and VPAID measurement solutions. This leaves the decision of the measurement method to the video player, which might be advantageous for mixed campaigns that span mobile and web environments.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-weight:bold;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background-color:#F4F5F7;&amp;quot;&lt;br /&gt;
! Value&lt;br /&gt;
! Definition&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| style=&amp;quot;font-weight:normal;&amp;quot; | VPAID 1.0&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| style=&amp;quot;font-weight:normal;&amp;quot; | VPAID 2.0&lt;br /&gt;
|- style=&amp;quot;font-weight:normal; color:#666;&amp;quot;&lt;br /&gt;
| 3&lt;br /&gt;
| MRAID 1.0&lt;br /&gt;
|- style=&amp;quot;font-weight:normal; color:#666;&amp;quot;&lt;br /&gt;
| 4&lt;br /&gt;
| ORMMA&lt;br /&gt;
|- style=&amp;quot;font-weight:normal; color:#666;&amp;quot;&lt;br /&gt;
| 5&lt;br /&gt;
| MRAID 2.0&lt;br /&gt;
|- style=&amp;quot;font-weight:normal; color:#666;&amp;quot;&lt;br /&gt;
| 6&lt;br /&gt;
| MRAID 3.0&lt;br /&gt;
|-&lt;br /&gt;
| 7&lt;br /&gt;
| style=&amp;quot;font-weight:normal;&amp;quot; | OMID 1.0&lt;br /&gt;
|-&lt;br /&gt;
| 8&lt;br /&gt;
| style=&amp;quot;font-weight:normal;&amp;quot; | SIMID 1.0&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== SERVER-SIDE TAG DISPATCH ==&lt;br /&gt;
The standard way of triggering a Digital Ad Ratings (DAR) tag on mobile in-app or connected devices is for the publisher to trigger the tag upon ad exposure to the user (either directly or via the ad server). This can be described as a client-side initiated tag.&lt;br /&gt;
&lt;br /&gt;
It is important to note that MRC/IAB measurement standards stipulate that the ad exposure event still be initiated and recorded from the client-side, even if the ad measurement tag (in this case a DAR tag) is physically initiated from the server-side. Evidence may be required (eg. publisher log file or similar) from the MRC/IAB to substantiate that the user was exposed to the ad on their device.&lt;br /&gt;
&lt;br /&gt;
In addition to the tag parameters covered in the prior sections, the following HTTP headers need to be modified in the DAR calls to support dispatch from a '''server-side''' publisher ad server:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|- style=&amp;quot;text-align:center; background-color:#c0c0c0; color:#000000;&amp;quot;&lt;br /&gt;
! HTTP Headers&lt;br /&gt;
! Description of Modifications&lt;br /&gt;
|-&lt;br /&gt;
| User-Agent (UA)&lt;br /&gt;
| This is expected to be the originating client user-agent for the&amp;lt;br /&amp;gt; device where the user was exposed to the ad. The HTTP UA from &amp;lt;br /&amp;gt;the client device should be used to populate the HTTP UA in the&amp;lt;br /&amp;gt; server-side connection/ping. DAR leverages the type of&amp;lt;br /&amp;gt;device for platform derivation.&lt;br /&gt;
|-&lt;br /&gt;
| X-Forwarded-For (XFF) IP&lt;br /&gt;
| This is expected to be the originating client IP address for the &amp;lt;br /&amp;gt;device where the user was exposed to the ad. Note: When the tag&amp;lt;br /&amp;gt; is fired directly from the ad server, the X-Real-IP will be the ad server IP.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Server Side Tag Notes ===&lt;br /&gt;
&lt;br /&gt;
* The server-side tag collection only supports mobile in-app and connected device measurement and will not support cookie-based browser measurement.&lt;br /&gt;
&lt;br /&gt;
* The client’s server-side setup to trigger/send the DAR tag should suppress any Nielsen cookie returned by the Nielsen collection server as a result of the first DAR tag received. If the Nielsen cookie (returned upon receiving the first DAR tag into secure.imrworldwide.com) is not suppressed, then invalid traffic (IVT) filtration will be triggered upon receiving the 2nd and nth tag.&lt;br /&gt;
&lt;br /&gt;
* The tag received by Nielsen must be TLS v1.2 compliant or greater.&lt;br /&gt;
&lt;br /&gt;
== About Nielsen ==&lt;br /&gt;
&lt;br /&gt;
Nielsen shapes the world’s media and content as a global leader in audience measurement, data and analytics. Through our understanding of people and their behaviors across all channels and platforms, we empower our clients with independent and actionable intelligence so they can connect and engage with their audiences—now and into the future.&lt;br /&gt;
&lt;br /&gt;
An S&amp;amp;amp;P 500 company, Nielsen (NYSE: NLSN) operates around the world in more than 55 countries. Learn more at [http://www.nielsen.com '''www.nielsen.com'''] or [http://www.nielsen.com/investors '''www.nielsen.com/investors'''] and connect with us on social media.&lt;br /&gt;
&lt;br /&gt;
'''Audience Is Everything®'''&lt;/div&gt;</summary>
		<author><name>ColinBrown</name></author>
	</entry>
	<entry>
		<id>https://nielsentest.mywikis.net/w/index.php?title=DAR_Tag_Implementation_Guide&amp;diff=5833</id>
		<title>DAR Tag Implementation Guide</title>
		<link rel="alternate" type="text/html" href="https://nielsentest.mywikis.net/w/index.php?title=DAR_Tag_Implementation_Guide&amp;diff=5833"/>
		<updated>2022-06-29T01:51:39Z</updated>

		<summary type="html">&lt;p&gt;ColinBrown: /* About Nielsen */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Breadcrumb|}} {{Breadcrumb|Digital}} {{Breadcrumb|Digital Ad Ratings}}  {{CurrentBreadcrumb}}&lt;br /&gt;
[[Category:Digital]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Introduction =&lt;br /&gt;
&lt;br /&gt;
This document provides an overview of the Nielsen Digital Ad Ratings (DAR) Tags and the steps necessary to implement them as part of your digital advertising campaigns.&lt;br /&gt;
=== What is DAR ===&lt;br /&gt;
DAR is a measurement platform for digital advertising campaigns. The platform provides a clear view of the true audience of a campaign, including Reach, Frequency, and GRP statistics by audience demographic group. &lt;br /&gt;
=== What we measure=== &lt;br /&gt;
All DAR tags allow you to measure campaign impressions and the DAR JavaScript tags measure ad viewability, GIVT (General Invalid Traffic), and SIVT (Sophisticated Invalid Traffic) across platforms including web, mobile, and in-app.&lt;br /&gt;
=== How we measure it=== &lt;br /&gt;
Nielsen’s DAR suite of JavaScript tags together with a pixel tag fallback will be present in your ad placements. We utilize industry-standard APIs to perform measurement cross-browser and cross-platform. In most cases, you will only need to add a simple URL through your ad management interface to fully utilize DAR measurement in your campaigns.&lt;br /&gt;
=== Prerequisites ===&lt;br /&gt;
For steps outlined in this document, you should have access to Nielsen’s Campaign Management Interface (CMI) and a Nielsen Technical Account Manager (TAM) will be working with you during the implementation phase.&lt;br /&gt;
__TOC__&lt;br /&gt;
= DAR Measurement Types =&lt;br /&gt;
&lt;br /&gt;
== DAR Display== &lt;br /&gt;
&lt;br /&gt;
The DAR Display JavaScript tag reports ad impressions as well as measures ad viewability and SIVT. In standard web placements, it will find the ad unit in the surrounding DOM container and will then report viewability as a time series with a 1-second resolution.&lt;br /&gt;
&lt;br /&gt;
The DAR tag will report the MRC-required minimum of 1 second on screen and a continuous viewability time series for the lifetime of the ad session to enable additional viewability qualifiers.&lt;br /&gt;
&lt;br /&gt;
The tag can utilize the IAB’s [https://iabtechlab.com/standards/open-measurement-sdk/ '''Open Measurement SDK'''] (OM SDK) including [https://iabtechlab.com/blog/open-measurement-for-web-video-arrives/ '''OM Web'''] integration if the OM Interface Definition (OMID) is available, or it will use industry-standard web APIs to measure viewability.&lt;br /&gt;
&lt;br /&gt;
=== Requirements ===&lt;br /&gt;
&lt;br /&gt;
The DAR Display tag requires a JavaScript-enabled browser for web environments or the OM SDK for in-app to operate and should be placed close to the corresponding measured ad unit. It should be on the same DOM level (e.g. directly under the same parent) or in a child node under the same parent node. The ad unit should be a content-bearing DOM element (e.g. img, canvas, SVG, iframe, div) with a minimum size of 30x30 pixels.&lt;br /&gt;
&lt;br /&gt;
=== Parameters ===&lt;br /&gt;
&lt;br /&gt;
The minimum required DAR parameters are '''ca, ci, cr, pc, ce''' and '''am'''. See the [[DAR_Tag_Implementation_Guide#Appendix|'''Appendix''']] for a full list of parameters.&lt;br /&gt;
&lt;br /&gt;
=== Example Tag ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;script type=&amp;quot;text/javascript&amp;quot; &lt;br /&gt;
src=&amp;quot;https://dar.imrworldwide.com/js/dar.js?ca=nlsnXXXXXX&amp;amp;cr={AD.ID}&amp;amp;ce={PUBLISHER.ID}&amp;amp;ci=nlsnciXXXX&amp;amp;pc={PLACEMENT.ID}&amp;amp;am=3&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Example OMID Display Placement ===&lt;br /&gt;
&lt;br /&gt;
DAR can be enabled through the OM SDK by passing the required Nielsen OM inputs listed in the table below during setup:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;width: 20%&amp;quot; | OM Parameter&lt;br /&gt;
! style=&amp;quot;width: 40%&amp;quot; | Description&lt;br /&gt;
! style=&amp;quot;width: 40%&amp;quot; | Nielsen Value&lt;br /&gt;
! style=&amp;quot;width: 5%&amp;quot; |Required&lt;br /&gt;
|-&lt;br /&gt;
| Vendor Key&lt;br /&gt;
| ID for measurement provider&lt;br /&gt;
| nielsen.com-omid&lt;br /&gt;
| ✔&lt;br /&gt;
|-&lt;br /&gt;
| JavaScript Resource URL&lt;br /&gt;
| URL for measurement provider’s verification script&lt;br /&gt;
|&amp;lt;syntaxhighlight lang=&amp;quot;html&amp;quot;&amp;gt; https://dar.imrworldwide.com/js/dar.js&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
| ✔&lt;br /&gt;
|-&lt;br /&gt;
| Verification Parameters&lt;br /&gt;
| Measurement provider’s verification tag parameters&lt;br /&gt;
| style=&amp;quot;font-family:'Courier New', Courier, monospace !important; color:#222222;&amp;quot; |&amp;lt;syntaxhighlight lang=&amp;quot;html&amp;quot;&amp;gt;ca=nlsnXXXXXX&amp;amp;cr={AD.ID}&amp;amp;ce=publisherXXXX&amp;amp;ci=nlsnciXXXX&amp;amp;pc=placementID_XXXX1&amp;amp;am=3&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
| ✔&lt;br /&gt;
|-&lt;br /&gt;
| Verification Not Executed URL&lt;br /&gt;
| Error URL when the ad player denies measurement script execution&lt;br /&gt;
| style=&amp;quot;font-family:'Courier New', Courier, monospace !important; color:#222222;&amp;quot; | &amp;lt;syntaxhighlight lang=&amp;quot;html&amp;quot;&amp;gt;https://events.imrworldwide.com/er?ercd=8800&amp;amp;erms=verificationNotExecuted-&lt;br /&gt;
{reason}&amp;amp;ca=nlsnXXXXXX&amp;amp;cr=ad_ID_XXXX&amp;amp;ce=publisherXXXX&amp;amp;&lt;br /&gt;
ci=nlsnciXXXX&amp;amp;pc=placementID_XXXX5&amp;amp;am=3&lt;br /&gt;
&amp;amp;c13={asid,app_id}&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
Note: The verificationNotExecuted Error URL is recommended for better troubleshooting during campaign setup. If your system can provide a macro for the reason of the interrupted measurement session, it can be added in place of the {reason} placeholder in the error URL. This can be an error code or a clear text error message.&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Expected Display Ad Session Pings ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
&lt;br /&gt;
! '''Description'''&lt;br /&gt;
! '''Timing'''&lt;br /&gt;
! '''Path'''&lt;br /&gt;
|-&lt;br /&gt;
| DAR Main Ping&lt;br /&gt;
| At initial load&lt;br /&gt;
| secure-gl.imrworldwide.com/cgi-bin/m&lt;br /&gt;
|-&lt;br /&gt;
| Nielsen Measure Ping&lt;br /&gt;
| Measurement start&lt;br /&gt;
| events.imrworldwide.com/nmp&lt;br /&gt;
|-&lt;br /&gt;
| Primary Standard Ping&lt;br /&gt;
| After 1 second of viewable duration (may not occur based on MRC rules)&lt;br /&gt;
| events.imrworldwide.com/psp&lt;br /&gt;
|-&lt;br /&gt;
| Timed Pings&lt;br /&gt;
| At 1, 5, 15 and 120 seconds of ad session time (may not occur based on ad session length)&lt;br /&gt;
| events.imrworldwide.com/1sp, 5sp, 15sp, 120sp&lt;br /&gt;
|-&lt;br /&gt;
| Final Ping&lt;br /&gt;
| At window/tab unloading event&lt;br /&gt;
| events.imrworldwide.com/fp&lt;br /&gt;
|-&lt;br /&gt;
| Error Ping&lt;br /&gt;
| Potential integration error - please contact your Nielsen representative&lt;br /&gt;
| events.imrworldwide.com/er&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Ping Flow ===&lt;br /&gt;
&lt;br /&gt;
This flow illustrates the behavior of the DAR Display tag.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:Screenshot 2022-06-22 152646.png]]&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|- &lt;br /&gt;
! colspan=&amp;quot;2&amp;quot; | Ping Flow Legend&lt;br /&gt;
|- &lt;br /&gt;
| 1SP, 5SP, 15SP, 120SP&lt;br /&gt;
| Timed Measure Ping at 1, 5, 15 and 120 seconds&lt;br /&gt;
|- &lt;br /&gt;
| D0, D1, D2&lt;br /&gt;
| Dynamic SIVT Pings at 1, 15 &amp;amp;amp; 30 seconds&lt;br /&gt;
|- &lt;br /&gt;
| FP&lt;br /&gt;
| Final Ping&lt;br /&gt;
|- &lt;br /&gt;
| IMPID&lt;br /&gt;
| Unique Impression ID&lt;br /&gt;
|- &lt;br /&gt;
| NMP&lt;br /&gt;
| Nielsen Main Measure Ping&lt;br /&gt;
|-&lt;br /&gt;
| PSP&lt;br /&gt;
| Primary Standard Ping&lt;br /&gt;
|-&lt;br /&gt;
| SIVT&lt;br /&gt;
| Sophisticated Invalid Traffic&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== DAR Video == &lt;br /&gt;
&lt;br /&gt;
The DAR Video tag will typically be trafficked as part of a Video Ad Serving Template (VAST) file. Nielsen provides its wrapped video tag (vWrap) to make this type of deployment easy and consistent across the various ad servers and trafficking options. Nielsen’s vWrap tag supports both automatic OMID and VPAID integration with existing VAST files. The two sections below, [[#Wrapped_Video_Tag_.28vWrap.29_Deployment|'''Wrapped Video Tag''']] and [[#Video_JS_Tag|'''Video JS Tag''']], describe these options and their expected outcomes.&lt;br /&gt;
&lt;br /&gt;
In addition, Nielsen supports '''direct DAR Video tag deployments''' with manual integration in existing workflows. In this case, the section [[#video-js-tag|'''Video JS Tag''']] below describes the basic setup and expected results. In addition, it is recommended that you work closely with your Nielsen Technical Account Manager if you consider a manual tag integration with your campaigns.&lt;br /&gt;
&lt;br /&gt;
=== Wrapped Video Tag (vWrap) Deployment ===&lt;br /&gt;
&lt;br /&gt;
Nielsen’s wrapped DAR video tag, vWrap, is the preferred delivery method for VAST-controlled video ad placements.The vWrap tag is served by a Nielsen service that takes an original VAST with an inline ad (not a wrapper redirect) and dynamically adds the DAR Video tag with measurement solutions for VPAID and OMID. The '''apiframework''' parameter can be used to control which measurement solution will be inserted (see below).&lt;br /&gt;
&lt;br /&gt;
=== Parameters ===&lt;br /&gt;
&lt;br /&gt;
The minimum required DAR parameters are '''ca, ci, ce, cr, pc''', '''am, apiframework''' and '''vastURL'''. See the [[DAR_Tag_Implementation_Guide#Appendix|'''Appendix''']] for a full list of parameters.&lt;br /&gt;
&lt;br /&gt;
The Open Real Time Bidding ([https://iabtechlab.com/wp-content/uploads/2022/04/OpenRTB-2-6_FINAL.pdf '''OpenRTB''']) API framework values for identifying the ad inventory type should be passed in the Nielsen '''apiframework''' parameter. The values should be either 1 or 2 (VPAID) or 7 or 8 (OMID). The available API framework values are listed in the IAB’s [https://github.com/InteractiveAdvertisingBureau/AdCOM/blob/master/AdCOM%20v1.0%20FINAL.md#list--api-frameworks- '''AdCOM specification 1.0''']. If the parameter is left blank or set to 0, Wrap will add the DAR Video tag as '''both''' an OMID verification client and VPAID wrapper. See more details in the [[DAR_Tag_Implementation_Guide#Appendix|'''Appendix''']].&lt;br /&gt;
&lt;br /&gt;
The '''vastURL''' parameter must be the last parameter on the DAR tag with its value set as the full URL (including all original parameters) of the original VAST tag for the ad placement.&lt;br /&gt;
&lt;br /&gt;
=== Example Wrapped Video Tag (vWrap) ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-family:'Courier New', Courier, monospace !important;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! &amp;lt;syntaxhighlight lang=&amp;quot;html&amp;quot;&amp;gt; https://vwrap.imrworldwide.com/v1/wrap?ca=nlsnXXXXXX&amp;amp;cr={AD.ID}&amp;amp;ce={PUBLISHER.ID}&amp;amp;pc={PLACEMENT.ID}&amp;amp;ci=nlsnciXXXX&amp;amp;am=4&amp;amp;&lt;br /&gt;
c9={devid,Advertising_ID}&amp;amp;c13=asid,app_id}&amp;amp;apiframework={APIFRAMEWORK}&amp;amp;vastURL={ORIGINAL_VAST_URL}&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
To observe how vWrap operates, we have provided some example VAST URLs which you can load directly in your browser.&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
==== VAST ad Unit, no Impression/Viewability ====&lt;br /&gt;
First, here is a VAST ad unit with a single video file and no impression tracking or viewability measurement:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
! https://madimator.com/vast-examples/example_video_only_nielsen_15s.xml &lt;br /&gt;
|}&lt;br /&gt;
==== VAST ad Unit, Nielsen vWrap for OMID measurement ====&lt;br /&gt;
This is the same VAST file loaded via Nielsen’s vWrap tag for '''OMID measurement''' (apiframework is set to 7):&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
! https://vwrap.imrworldwide.com/v1/wrap?ca=nlsn305255&amp;amp;cr=nielsenomidtest&amp;amp;ce=nielsen&amp;amp;pc=vastomid&amp;amp;ci=nlsntest&amp;amp;am=4&amp;amp;apiframework=7&amp;amp;vastURL=http://madimator.com/vast-examples/example_video_only_nielsen_15s.xml&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== VAST ad Unit, Nielsen vWrap for VPAID measurement ====&lt;br /&gt;
And here is the same VAST with the vWrap tag configured for '''VPAID measurement''' (apiframework is set to 2):&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
!https://vwrap.imrworldwide.com/v1/wrap?ca=nlsn305255&amp;amp;cr=nielsenomidtest&amp;amp;ce=nielsen&amp;amp;pc=vastvpaid&amp;amp;ci=nlsntest&amp;amp;am=4&amp;amp;apiframework=2&amp;amp;vastURL=http://madimator.com/vast-examples/example_video_only_nielsen_15s.xml &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Video JS Tag ===&lt;br /&gt;
&lt;br /&gt;
The DAR Video tag supports both OM SDK and VPAID video ad measurement and provides viewability time series, audio volume time series, GIVT, and SIVT data. The time series contains playhead events with corresponding measurements at a 1-second resolution. In addition to the time series, a dedicated ping will report on the MRC-required minimum of 2 seconds on screen.&lt;br /&gt;
&lt;br /&gt;
With OM SDK, the DAR Video tag supports the following ad types:&lt;br /&gt;
&lt;br /&gt;
* Native mobile in-app ad placements &lt;br /&gt;
* Mobile web ads&lt;br /&gt;
* OM Web placements&lt;br /&gt;
* OMID-enabled streaming video players with ad SDKs (for instance DAI IMA SDK)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
With VPAID, it supports the following operating modes:&lt;br /&gt;
* As VPAID wrapper for an existing VPAID ad unit in the VAST&lt;br /&gt;
* As VPAID ad unit in a VAST with video files and AdParameters node&lt;br /&gt;
* In Custom Integrations with VPAID host players&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
In most cases, the DAR Video tag should not be manually implemented as a wrapper, instead consider utilizing Nielsen’s vWrap tag.&lt;br /&gt;
&lt;br /&gt;
==== Requirements ====&lt;br /&gt;
&lt;br /&gt;
The DAR Video tag needs a JavaScript environment to operate. The video unit to be measured needs to have a size of at least 30x30 pixels. The DAR Video tag requires access to the VPAID ad unit or to an OM SDK API present in the JavaScript context.&lt;br /&gt;
&lt;br /&gt;
==== Parameters ====&lt;br /&gt;
&lt;br /&gt;
The minimum required DAR parameters are '''ca, ci, ce, cr, pc''' and '''am'''. For VPAID wrapper placements, '''vpaidURL''' is also required.&lt;br /&gt;
&lt;br /&gt;
To comply with MRC guidelines, you will be required to append '''autop''' to indicate click-to-play vs auto-play.&lt;br /&gt;
&lt;br /&gt;
If the DAR Video tag will act as the VPAID wrapper, '''vpaidURL''' has to be the tag’s last parameter and its value set to the full URL (including parameters) of the original VPAID ad unit.&lt;br /&gt;
&lt;br /&gt;
See the [[DAR_Tag_Implementation_Guide#Appendix|'''Appendix''']] for a full list of parameters.&lt;br /&gt;
&lt;br /&gt;
==== Expected Video Ad Session Pings ====&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
! '''Description'''&lt;br /&gt;
! '''Timing'''&lt;br /&gt;
! '''Path'''&lt;br /&gt;
|-&lt;br /&gt;
| DAR Main Ping&lt;br /&gt;
| At initial load&lt;br /&gt;
| secure-gl.imrworldwide.com/cgi-bin/m&lt;br /&gt;
|-&lt;br /&gt;
| Nielsen Measure Ping&lt;br /&gt;
| Measurement start&lt;br /&gt;
| events.imrworldwide.com/nmp&lt;br /&gt;
|-&lt;br /&gt;
| Primary Standard Ping&lt;br /&gt;
| After 2 seconds of viewable duration (may not occur based on MRC rules)&lt;br /&gt;
| events.imrworldwide.com/psp&lt;br /&gt;
|-&lt;br /&gt;
| Quarterly Ping&lt;br /&gt;
| At 25%, 50%, 75% and 100% of video progress&lt;br /&gt;
| events.imrworldwide.com/qp&lt;br /&gt;
|-&lt;br /&gt;
| Final Ping&lt;br /&gt;
| At video stop or window/tab unloading event&lt;br /&gt;
| events.imrworldwide.com/fp&lt;br /&gt;
|-&lt;br /&gt;
| Error Ping&lt;br /&gt;
| Potential integration error - please contact your Nielsen representative&lt;br /&gt;
| events.imrworldwide.com/er&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Ping Flow ====&lt;br /&gt;
&lt;br /&gt;
This flow illustrates the behavior of the DAR Video tag if the impression pixel is part of the VAST to be sent by the ad player and the JS tag has '''&amp;amp;amp;darsup=1'''. The parameter, &amp;lt;code&amp;gt;darsup=1&amp;lt;/code&amp;gt;, is used to suppress the DAR Main Ping from being sent from the JS tag since the DAR main ping will be sent from the DAR impression pixel. This is the default setup if Nielsen’s vWrap tag is being used to set up the video campaign.&lt;br /&gt;
&lt;br /&gt;
[[File:Screenshot 2022-06-22 2.png]]&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|- &lt;br /&gt;
! colspan=&amp;quot;2&amp;quot; | Ping Flow Legend&lt;br /&gt;
|- &lt;br /&gt;
| D0, D1, D2&lt;br /&gt;
| Dynamic SIVT Pings at 1, 15 &amp;amp;amp; 30 seconds&lt;br /&gt;
|- &lt;br /&gt;
| FP&lt;br /&gt;
| Final Ping&lt;br /&gt;
|- &lt;br /&gt;
| IMPID&lt;br /&gt;
| Unique Impression ID&lt;br /&gt;
|- &lt;br /&gt;
| NMP&lt;br /&gt;
| Nielsen Main Measure Ping&lt;br /&gt;
|-&lt;br /&gt;
| PSP&lt;br /&gt;
| Primary Standard Ping&lt;br /&gt;
|-&lt;br /&gt;
| QP&lt;br /&gt;
|Quarterly Media Pings at 25%, 50%, 75% and 100%&lt;br /&gt;
|-&lt;br /&gt;
| SIVT&lt;br /&gt;
| Sophisticated Invalid Traffic&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Example OMID Video Placement ====&lt;br /&gt;
&lt;br /&gt;
DAR can be enabled through the OM SDK by passing the required Nielsen OM inputs listed in the table in the VAST &amp;amp;lt;adVerifications&amp;amp;gt; node:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
! '''OM Parameter'''&lt;br /&gt;
! '''Description'''&lt;br /&gt;
! '''Nielsen Value'''&lt;br /&gt;
! '''Required'''&lt;br /&gt;
|-&lt;br /&gt;
| Vendor Key&lt;br /&gt;
| ID for measurement provider&lt;br /&gt;
| nielsen.com-omid&lt;br /&gt;
| ✔&lt;br /&gt;
|-&lt;br /&gt;
| JavaScript Resource URL&lt;br /&gt;
| URL for measurement provider’s verification script&lt;br /&gt;
| &amp;lt;syntaxhighlight lang=&amp;quot;html&amp;quot;&amp;gt;https://dar.imrworldwide.com/js/darvideo.js&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
| ✔&lt;br /&gt;
|-&lt;br /&gt;
| Verification Parameters&lt;br /&gt;
| Measurement provider’s verification tag parameters&lt;br /&gt;
| style=&amp;quot;font-family:'Courier New', Courier, monospace !important; color:#222222;&amp;quot; |&amp;lt;syntaxhighlight lang=&amp;quot;html&amp;quot;&amp;gt;ca=nlsnXXXXXX&amp;amp;cr={AD.ID}&amp;amp;ce=publisherXXXX&amp;amp;ci=nlsnciXXXX&amp;amp;&lt;br /&gt;
pc=placementID_XXXX1&amp;amp;am=3&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
| ✔&lt;br /&gt;
|-&lt;br /&gt;
| Verification Not Executed URL&lt;br /&gt;
| Error URL when the ad player denies measurement script execution&lt;br /&gt;
| style=&amp;quot;font-family:'Courier New', Courier, monospace !important; color:#222222;&amp;quot; | &amp;lt;syntaxhighlight lang=&amp;quot;html&amp;quot;&amp;gt;https://events.imrworldwide.com/er?ercd=8800&amp;amp;erms=verificationNotExecuted-&lt;br /&gt;
{reason}&amp;amp;ca=nlsnXXXXXX&amp;amp;cr=ad_ID_XXXX&amp;amp;ce=publisherXXXX&amp;amp;&lt;br /&gt;
ci=nlsnciXXXX&amp;amp;pc=placementID_XXXX5&amp;amp;am=3&amp;amp;c9={devid,Advertising_ID}&lt;br /&gt;
&amp;amp;c13={asid,app_id}&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
Note: The verificationNotExecuted Error URL is recommended for better troubleshooting during campaign setup. If your system can provide a macro for the reason of the interrupted measurement session, it can be added in place of the {reason} placeholder in the error URL. This can be an error code or a clear text error message.&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Example VPAID Placement in VAST ====&lt;br /&gt;
&lt;br /&gt;
A typical VAST placement with VPAID will contain an impression pixel, the DAR Video JS tag as MediaFile of type “VPAID”, and the video MediaFiles will be duplicated as AdParameters object. In the example below, there was no original VPAID ad unit (the original VAST only contained MP4 video files), so the &amp;amp;amp;vpaidURL parameter on the DAR JS tag stays empty.&lt;br /&gt;
&lt;br /&gt;
In this example, the DAR JavaScript tag will operate as the VPAID ad unit and will play an appropriate media file from the list contained in the AdParameters node.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;json&amp;quot;&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;Impression id=&amp;quot;Nielsen Digital Ad Ratings&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;![CDATA[https://secure-enc.imrworldwide.com/cgi-bin/m?at=view&amp;amp;cy=2&amp;amp;rt=banner&amp;amp;src=njs&amp;amp;&lt;br /&gt;
st=image&amp;amp;tpv=vwrap&amp;amp;ca=nlsnXXXXXX&amp;amp;cr={AD.ID}&amp;amp;ce=publisherXXXX&amp;amp;ci=nlsnciXXXX&amp;amp;pc=placementID_XXXX1&amp;amp;am=3]]&amp;gt;&lt;br /&gt;
&amp;lt;/Impression&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;MediaFiles&amp;gt;&lt;br /&gt;
    &amp;lt;MediaFile apiFramework=&amp;quot;VPAID&amp;quot; type=&amp;quot;application/javascript&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;![CDATA[https://dar.imrworldwide.com/js/darvideo.js?darsup=1&amp;amp;ca=nlsnXXXXXX&amp;amp;cr={{AD.ID}}&amp;amp;&lt;br /&gt;
ce=publisherXXXX&amp;amp;ci=nlsnciXXXX&amp;amp;pc=placementID_XXXX1&amp;amp;am=3]]&amp;gt;&lt;br /&gt;
    &amp;lt;/MediaFile&amp;gt;&lt;br /&gt;
    &amp;lt;MediaFile bitrate=&amp;quot;720&amp;quot; delivery=&amp;quot;progressive&amp;quot; height=&amp;quot;480&amp;quot; id=&amp;quot;XXXXXX&amp;quot;&lt;br /&gt;
               maintainAspectRatio=&amp;quot;true&amp;quot; scalable=&amp;quot;true&amp;quot; type=&amp;quot;video/mp4&amp;quot;  &lt;br /&gt;
               width=&amp;quot;854&amp;quot;&amp;gt;&amp;lt;![CDATA[https://XXXXX.net/XXXXXX.mp4]]&amp;gt;&lt;br /&gt;
    &amp;lt;/MediaFile&amp;gt;&lt;br /&gt;
&amp;lt;/MediaFiles&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;AdParameters&amp;gt;&lt;br /&gt;
&amp;lt;![CDATA[{&amp;quot;mediaFiles&amp;quot;:[{&amp;quot;bitrate&amp;quot;:&amp;quot;720&amp;quot;,&amp;quot;uri&amp;quot;:&amp;quot;https://XXXXX.net/XXXXXX.mp4&amp;quot;,&amp;quot;height&amp;quot;:&amp;quot;480&amp;quot;,&amp;quot;scalable&amp;quot;:&amp;quot;true&amp;quot;,&lt;br /&gt;
&amp;quot;id&amp;quot;:&amp;quot;XXXXXX&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;video/mp4&amp;quot;,&amp;quot;maintainAspectRatio&amp;quot;:&amp;quot;true&amp;quot;,&amp;quot;delivery&amp;quot;:&amp;quot;progressive&amp;quot;,&amp;quot;width&amp;quot;:&amp;quot;854&amp;quot;}]]&amp;gt;&lt;br /&gt;
&amp;lt;/AdParameters&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Server-Side Integration ====&lt;br /&gt;
&lt;br /&gt;
If you are interested in implementing the DAR tags server-side, e.g. through SSAI, please contact your Nielsen TAM to provide you with the required guidelines.&lt;br /&gt;
&lt;br /&gt;
==== Notes ====&lt;br /&gt;
&lt;br /&gt;
Manual placement of the DAR Video tag is only recommended in situations where the DAR vWrap tag can not be utilized, like in certain mobile in-app ad placements or in scenarios where DAR Video needs to be configured as OMID viewability measurement solution.&lt;br /&gt;
&lt;br /&gt;
== Pixel Tag== &lt;br /&gt;
&lt;br /&gt;
The DAR Impression pixel provides basic campaign impression counts and allows to cover placements served in environments where the DAR JavaScript tag is not supported.&lt;br /&gt;
&lt;br /&gt;
=== Environment ===&lt;br /&gt;
&lt;br /&gt;
The DAR pixel tag should only be used in environments where the DAR JavaScript tag cannot be utilized such as restricted CTV environments, for SSAI Server-Side Beaconing, and other situations where an adequate JavaScript environment is not available.&lt;br /&gt;
&lt;br /&gt;
=== Parameters ===&lt;br /&gt;
&lt;br /&gt;
The minimum required DAR parameters are '''ca, ci, ce, cr, pc''', and '''am''' along with fixed valued params, '''at=view''', '''rt=banner''' and '''st=image''' . See the [[DAR_Tag_Implementation_Guide#Appendix|'''Appendix''']] for a full list of parameters.&lt;br /&gt;
&lt;br /&gt;
=== Example Tag ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;html&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;img src=&amp;quot;https://secure-gl.imrworldwide.com/cgi-bin/m?ca=nlsnXXXXXX&amp;amp;cr=crtve&lt;br /&gt;
&amp;amp;ce={PUBLISHER.ID}&amp;amp;pc=PLACEMENT.ID}&amp;amp;nlsnciXXXX&amp;amp;am=3&amp;amp;at=view&amp;amp;rt=banner&amp;amp;st=image&lt;br /&gt;
&amp;amp;cy=0&amp;amp;r=[timestamp]&amp;quot; style=&amp;quot;display:none&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Tag Integration =&lt;br /&gt;
A successful tag integration will require you to go through the following 6 steps.&lt;br /&gt;
== Step 1: Determine Your Campaign Needs== &lt;br /&gt;
To receive optimal results from DAR measurement, it is good practice to consider the technical requirements of different sites and placements. Please share your media plan with your Technical Account Manager before launch.&lt;br /&gt;
&lt;br /&gt;
Specifically, be on the lookout for placements that might span across web and mobile ad inventory and make sure if all of the in-app placements support OMID. Also, some placement types may need manual setup and cannot be automated or may need extra time for setup and testing.&lt;br /&gt;
&lt;br /&gt;
Please reach out to your Nielsen Technical Account Manager (TAM) for advice if the technical requirements for your campaign are not clear.&lt;br /&gt;
== Step 2: Generate Tags== &lt;br /&gt;
Your Nielsen representative will walk you through the Campaign Management Interface (CMI) so that you can generate DAR tags for your campaigns at any time.&lt;br /&gt;
&lt;br /&gt;
Nielsen supports macro-based tag generation for several major ad servers. Nielsen’s Technical Account Managers can assist you with any technical questions on tagging campaigns for DAR measurement.&lt;br /&gt;
== Step 3: Campaign Integration== &lt;br /&gt;
Your Nielsen tags created in CMI will need to be included when you traffic your ad campaigns. Please reach out to your Nielsen TAM for additional guidance and assistance.&lt;br /&gt;
== Step 4: Test the Tag Implementation== &lt;br /&gt;
Depending on the complexity of the integration, you may be working closely with a TAM at this point or are performing a self-guided tag implementation based on the CMI output.&lt;br /&gt;
&lt;br /&gt;
If working with a TAM, they will coordinate a plan to test the tag implementation ahead of the campaign go-live date. Depending on your campaign needs, testing will involve either running a diagnostic campaign to validate tagging setup or reviewing test pages or apps.&lt;br /&gt;
&lt;br /&gt;
In case of a self-guided tag implementation, we recommend to verify and compare the impression counts in the CMI with your planned campaign volume or ad server reports during the first hours of the campaign. If there are any unexpected impression counts, please reach out to your Nielsen TAM.&lt;br /&gt;
== Step 5: Share your Ad Server Report== &lt;br /&gt;
&lt;br /&gt;
=== Why the Ad Server Report is Needed ===&lt;br /&gt;
&lt;br /&gt;
Knowing the delivered impressions helps Nielsen run Discrepancy Checks ensuring overall quality and reduces errors in the tagging process.&lt;br /&gt;
&lt;br /&gt;
Nielsen can provide the client with a template with the inputs required to complete the quality checks.&lt;br /&gt;
&lt;br /&gt;
=== How to Share Your Delivered impressions ===&lt;br /&gt;
&lt;br /&gt;
Set up an automated daily report from your ad server containing Site Name, Site ID, Placement Name, Placement ID, and data date.&lt;br /&gt;
&lt;br /&gt;
A secondary method to share your media plan information is to grant Nielsen “Reporting access” to your campaign in the designated ad server (such as DCM). To do this, simply grant the login '''clientreporting@nielsen.com''' access. In doing so Nielsen can directly access your media plan information, which enables us to check for updates, and reconcile any discrepancies.&lt;br /&gt;
&lt;br /&gt;
== Step 6: Monitoring Your Campaign== &lt;br /&gt;
Nielsen recommends all clients participate in Discrepancy Checks. Nielsen’s team will verify that the tags delivered have begun to receive data once the campaign goes live and will regularly (typically every 7-14 days) compare the Nielsen reporting to your 3rd party or publisher reporting to ensure we are capturing all data across all placements, as expected, and that the discrepancy gap between your reporting and the Nielsen reporting is kept to a minimum.&lt;br /&gt;
&lt;br /&gt;
= Appendix =&lt;br /&gt;
== Tag Parameters== &lt;br /&gt;
All passthrough parameters will appear on the JavaScript-generated DAR impression ping.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;background-color:#FFF;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;font-weight:bold; background-color:#EAECF0; color:#222;&amp;quot;&lt;br /&gt;
! Query Parameter&lt;br /&gt;
! Description&lt;br /&gt;
! style=&amp;quot;text-align:center;&amp;quot; | Required&lt;br /&gt;
! style=&amp;quot;text-align:center;&amp;quot; | Pass-through&lt;br /&gt;
|- style=&amp;quot;font-weight:bold; text-align:center; vertical-align:middle; background-color:#FFEBD3; color:#222;&amp;quot;&lt;br /&gt;
| colspan=&amp;quot;4&amp;quot; | Group 1 - Required Parameters&lt;br /&gt;
|- style=&amp;quot;vertical-align:middle; color:#222;&amp;quot;&lt;br /&gt;
| ca&lt;br /&gt;
| Campaign ID&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | X&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | X&lt;br /&gt;
|- style=&amp;quot;vertical-align:middle; background-color:#EFEFEF; color:#222;&amp;quot;&lt;br /&gt;
| pc&lt;br /&gt;
| Placement ID&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | X&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | X&lt;br /&gt;
|- style=&amp;quot;vertical-align:middle; color:#222;&amp;quot;&lt;br /&gt;
| ci&lt;br /&gt;
| Client ID&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | X&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | X&lt;br /&gt;
|- style=&amp;quot;vertical-align:middle; background-color:#EFEFEF; color:#222;&amp;quot;&lt;br /&gt;
| am&lt;br /&gt;
| Ad server ID&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | X&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | X&lt;br /&gt;
|- style=&amp;quot;color:#222;&amp;quot;&lt;br /&gt;
| ce&lt;br /&gt;
| Site ID&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | X&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | X&lt;br /&gt;
|- style=&amp;quot;background-color:#F4F5F7; color:#222;&amp;quot;&lt;br /&gt;
| cr&lt;br /&gt;
| Creative ID&lt;br /&gt;
| style=&amp;quot;text-align:center; background-color:#EFEFEF;&amp;quot; | X&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | X&lt;br /&gt;
|- style=&amp;quot;font-weight:bold; text-align:center; vertical-align:middle; background-color:#FFEBD3; color:#222;&amp;quot;&lt;br /&gt;
| colspan=&amp;quot;4&amp;quot; | Group 2 - Use Case Specific Parameters&lt;br /&gt;
|- style=&amp;quot;vertical-align:middle; background-color:#EFEFEF; color:#222;&amp;quot;&lt;br /&gt;
| at&lt;br /&gt;
| Fixed Value &amp;quot;view&amp;quot; (Nielsen value, JS tags add this to DAR and NMP pings)&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | Pixel only&lt;br /&gt;
| &lt;br /&gt;
|- style=&amp;quot;vertical-align:middle; color:#222;&amp;quot;&lt;br /&gt;
| st&lt;br /&gt;
| Fixed Value &amp;quot;image&amp;quot; (Nielsen value, JS tags add this to DAR and NMP pings)&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | Pixel only&lt;br /&gt;
| &lt;br /&gt;
|- style=&amp;quot;vertical-align:middle; background-color:#EFEFEF; color:#222;&amp;quot;&lt;br /&gt;
| rt&lt;br /&gt;
| Fixed Value &amp;quot;banner&amp;quot; (Nielsen value, JS tags add this to DAR and NMP pings)&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | Pixel only&lt;br /&gt;
| &lt;br /&gt;
|- style=&amp;quot;vertical-align:middle; color:#222;&amp;quot;&lt;br /&gt;
| r&lt;br /&gt;
| Cachebuster/Timestamp. It's required in the pixel tags with a hardcoded&amp;lt;br /&amp;gt;value as a default or a macro (r=timestamp/macro) .&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | Pixel only&lt;br /&gt;
| &lt;br /&gt;
|- style=&amp;quot;vertical-align:middle; background-color:#EFEFEF; color:#222;&amp;quot;&lt;br /&gt;
| cy&lt;br /&gt;
| Creative type (1: display/2: video) JS tags add this to DAR and NMP pings for In-House Viewability.&amp;lt;br /&amp;gt;When parameter is not present or value is missing on pixel tags, there will be no creative type breakout.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | Pixel only&lt;br /&gt;
| &lt;br /&gt;
|- style=&amp;quot;vertical-align:middle; color:#222;&amp;quot;&lt;br /&gt;
| '''[[DAR_Tag_Implementation_Guide#vWrap_apiframework_Values|apiframework]]'''&lt;br /&gt;
| IAB-defined value designating the measurement method See vWrap apiframework values&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | vWrap only&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | X&lt;br /&gt;
|- style=&amp;quot;vertical-align:middle; background-color:#EFEFEF; color:#222;&amp;quot;&lt;br /&gt;
| autof&lt;br /&gt;
| Video only: Auto refresh (1 for auto refresh, leave empty otherwise)&lt;br /&gt;
| &lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | X&lt;br /&gt;
|- style=&amp;quot;vertical-align:middle; color:#222;&amp;quot;&lt;br /&gt;
| autop&lt;br /&gt;
| Video only: Autoplay (1 for auto-play, 2 for click-to-play, leave empty otherwise)&lt;br /&gt;
| &lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | X&lt;br /&gt;
|- style=&amp;quot;vertical-align:middle; background-color:#EFEFEF; color:#222;&amp;quot;&lt;br /&gt;
| c7&lt;br /&gt;
| OS Grouping&amp;lt;br /&amp;gt;c7=osgrp,IOS&amp;lt;br /&amp;gt;c7=osgrp,DROID&amp;lt;br /&amp;gt;c7=osgrp,ANDROID&lt;br /&gt;
| &lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | X&lt;br /&gt;
|- style=&amp;quot;vertical-align:middle; color:#222;&amp;quot;&lt;br /&gt;
| c8&lt;br /&gt;
| Device Grouping&amp;lt;br /&amp;gt;c8=devgrp,DSK (computers)&amp;lt;br /&amp;gt;c8=devgrp,PHN (mobile phone devices)&amp;lt;br /&amp;gt;c8=devgrp,TAB (mobile tablet devices)&amp;lt;br /&amp;gt;c8=devgrp,PMP (portable media player)&amp;lt;br /&amp;gt;c8=devgrp,UNWN (unknown mobile devices)&lt;br /&gt;
| &lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | X&lt;br /&gt;
|- style=&amp;quot;vertical-align:middle; background-color:#EFEFEF; color:#222;&amp;quot;&lt;br /&gt;
| c9&lt;br /&gt;
| Mobile Advertising ID&amp;lt;br /&amp;gt;c9=devid,xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | Mobile&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | X&lt;br /&gt;
|- style=&amp;quot;vertical-align:middle; color:#222;&amp;quot;&lt;br /&gt;
| c10&lt;br /&gt;
| Platform&amp;lt;br /&amp;gt;c10=plt,DSK (Computer)&amp;lt;br /&amp;gt;c10=plt,MBL (Mobile)&amp;lt;br /&amp;gt;c10=plt,OTT (Connected Device)&lt;br /&gt;
| &lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | X&lt;br /&gt;
|- style=&amp;quot;vertical-align:middle; background-color:#EFEFEF; color:#222;&amp;quot;&lt;br /&gt;
| c12&lt;br /&gt;
| App Version&amp;lt;br /&amp;gt;c12=apv,xxx&lt;br /&gt;
| &lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | X&lt;br /&gt;
|- style=&amp;quot;vertical-align:middle; color:#222;&amp;quot;&lt;br /&gt;
| c13&lt;br /&gt;
| Nielsen Assigned App ID&amp;lt;br /&amp;gt;Example:&amp;lt;br /&amp;gt;c13=asid,xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | Mobile&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | X&lt;br /&gt;
|- style=&amp;quot;vertical-align:middle; background-color:#EFEFEF; color:#222;&amp;quot;&lt;br /&gt;
| c14&lt;br /&gt;
| OS Version&amp;lt;br /&amp;gt;c14=osver,xxx&lt;br /&gt;
| &lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | X&lt;br /&gt;
|- style=&amp;quot;vertical-align:middle; color:#222;&amp;quot;&lt;br /&gt;
| c68&lt;br /&gt;
| Mobile App Bundle ID&amp;lt;br /&amp;gt;c68=bndlid,xxxxxxxxxxxxxx&amp;lt;br /&amp;gt;References:&amp;lt;br /&amp;gt;https://developer.apple.com/documentation/appstoreconnectapi/bundle_ids&amp;lt;br /&amp;gt;https://developer.android.com/studio/build/configure-app-module#set_the_application_id&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | Mobile&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | X&lt;br /&gt;
|- style=&amp;quot;vertical-align:middle; background-color:#EFEFEF; color:#222;&amp;quot;&lt;br /&gt;
| C78&lt;br /&gt;
| Custom Integration Flag (please note: this is the only uppercase parameter name)&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | some vendors&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | X&lt;br /&gt;
|- style=&amp;quot;vertical-align:middle; color:#222;&amp;quot;&lt;br /&gt;
| darsup&lt;br /&gt;
| If present suppress DAR main ping originating from JS tag (value can be 0 or 1, same effect)&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
|- style=&amp;quot;vertical-align:middle; background-color:#EFEFEF; color:#222;&amp;quot;&lt;br /&gt;
| forceid&lt;br /&gt;
| If present provides impid, can be overwritten by impid parameter&lt;br /&gt;
| &lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | X (as impid)&lt;br /&gt;
|- style=&amp;quot;vertical-align:middle; color:#222;&amp;quot;&lt;br /&gt;
| impid&lt;br /&gt;
| Same as forceid, but higher priority in case both are present&lt;br /&gt;
| &lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | X&lt;br /&gt;
|- style=&amp;quot;vertical-align:middle; background-color:#EFEFEF; color:#222;&amp;quot;&lt;br /&gt;
| frcd&lt;br /&gt;
| Video only: Forced duration (seconds/null)&lt;br /&gt;
| &lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | X&lt;br /&gt;
|- style=&amp;quot;vertical-align:middle; color:#222;&amp;quot;&lt;br /&gt;
| frcf&lt;br /&gt;
| Video only: Forced ad flag (yes/no/null)&lt;br /&gt;
| &lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | X&lt;br /&gt;
|- style=&amp;quot;vertical-align:middle; background-color:#EFEFEF; color:#222;&amp;quot;&lt;br /&gt;
| ptraf&lt;br /&gt;
| Video only: Purchased traffic&lt;br /&gt;
| &lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | X&lt;br /&gt;
|- style=&amp;quot;vertical-align:middle; color:#222;&amp;quot;&lt;br /&gt;
| contplay&lt;br /&gt;
| Video only: Continuous play&lt;br /&gt;
| &lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | X&lt;br /&gt;
|- style=&amp;quot;vertical-align:middle; background-color:#EFEFEF; color:#222;&amp;quot;&lt;br /&gt;
| gdpr&lt;br /&gt;
| GDPR flag to indicate whether GDPR is applicable:&amp;lt;br /&amp;gt;0 - GDPR does not apply&amp;lt;br /&amp;gt;1 - GDPR applies&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | in some jurisdictions&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | X&lt;br /&gt;
|- style=&amp;quot;vertical-align:middle; color:#222;&amp;quot;&lt;br /&gt;
| gdpr_consent&lt;br /&gt;
| URL-safe base64-encoded Transparency &amp;amp; Consent (TC) string for&amp;lt;br /&amp;gt;identifying user's privacy preferences&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | in some jurisdictions&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | X&lt;br /&gt;
|- style=&amp;quot;vertical-align:middle; background-color:#EFEFEF; color:#222;&amp;quot;&lt;br /&gt;
| hem_md5&lt;br /&gt;
| Hashed email&lt;br /&gt;
| &lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | X&lt;br /&gt;
|- style=&amp;quot;vertical-align:middle; color:#222;&amp;quot;&lt;br /&gt;
| hem_sha1&lt;br /&gt;
| Hashed email&lt;br /&gt;
| &lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | X&lt;br /&gt;
|- style=&amp;quot;vertical-align:middle; background-color:#EFEFEF; color:#222;&amp;quot;&lt;br /&gt;
| hem_sha256&lt;br /&gt;
| Hashed email&lt;br /&gt;
| &lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | X&lt;br /&gt;
|- style=&amp;quot;vertical-align:middle; color:#222;&amp;quot;&lt;br /&gt;
| hem_unknown&lt;br /&gt;
| Hashed email&lt;br /&gt;
| &lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | X&lt;br /&gt;
|- style=&amp;quot;vertical-align:middle; background-color:#EFEFEF; color:#222;&amp;quot;&lt;br /&gt;
| mode&lt;br /&gt;
| VPAID video only, optional: Custom Direct Access mode&amp;lt;br /&amp;gt;(&amp;quot;w&amp;quot; wrapper / &amp;quot;c&amp;quot; custom; defaults to wrapper)&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
|- style=&amp;quot;vertical-align:middle; color:#222;&amp;quot;&lt;br /&gt;
| onload&lt;br /&gt;
| VPAID video only, optional: JS callback for Custom Direct Access VPAID integration&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
|- style=&amp;quot;vertical-align:middle; background-color:#EFEFEF; color:#222;&amp;quot;&lt;br /&gt;
| pub&lt;br /&gt;
| Publisher Name&lt;br /&gt;
| &lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | X&lt;br /&gt;
|- style=&amp;quot;vertical-align:middle; color:#222;&amp;quot;&lt;br /&gt;
| pubid&lt;br /&gt;
| Publisher ID&lt;br /&gt;
| &lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | X&lt;br /&gt;
|- style=&amp;quot;vertical-align:middle; background-color:#EFEFEF; color:#222;&amp;quot;&lt;br /&gt;
| si&lt;br /&gt;
| Site identifier. Canonical URL of the content where the Ad creative is served.&amp;lt;br /&amp;gt;The parameter value has to be encoded with encodeURIComponent() method or equivalent.&lt;br /&gt;
| &lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | X&lt;br /&gt;
|- style=&amp;quot;vertical-align:middle; color:#222;&amp;quot;&lt;br /&gt;
| uid2&lt;br /&gt;
| Unified ID 2.0&lt;br /&gt;
| &lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | X&lt;br /&gt;
|- style=&amp;quot;vertical-align:middle; background-color:#EFEFEF; color:#222;&amp;quot;&lt;br /&gt;
| uid2_token&lt;br /&gt;
| Unified ID 2.0 token&lt;br /&gt;
| &lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | X&lt;br /&gt;
|- style=&amp;quot;vertical-align:middle; color:#222;&amp;quot;&lt;br /&gt;
| uoo&lt;br /&gt;
| User opt out&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | Mobile&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | X&lt;br /&gt;
|- style=&amp;quot;font-weight:bold; text-align:center; vertical-align:middle; background-color:#FFEBD3; color:#222;&amp;quot;&lt;br /&gt;
| colspan=&amp;quot;4&amp;quot; | Group 3 - Parameters With Required Position in URL&lt;br /&gt;
|- style=&amp;quot;vertical-align:middle; background-color:#ffffff; color:#222;&amp;quot;&lt;br /&gt;
| vpaidURL&lt;br /&gt;
| VPAID Video only: Always the last parameter for video tags.&amp;lt;br /&amp;gt;Either VPAID ad unit URL to be wrapped or empty. If empty, DAR tag will use its own vpaidplayer.js&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | VPAID video tag only&lt;br /&gt;
| &lt;br /&gt;
|- style=&amp;quot;background-color:#f4f5f7;&amp;quot;&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; color:#222;&amp;quot; | vastURL&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; color:#222;&amp;quot; | vWrap Tag only: Always the last parameter for the vWrap tag.&amp;lt;br /&amp;gt;It must contain the URL of the original VAST for the placement.&lt;br /&gt;
| style=&amp;quot;text-align:center; vertical-align:middle; color:#222;&amp;quot; | vWrap tag only&lt;br /&gt;
| &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Additional Parameters == &lt;br /&gt;
This section describes several important additional parameters that the DAR tag can support, specifically Hashed Email, UID2 values, along with Page URL and Bundle Identifier if available. Please note that all parameters are case-sensitive.&lt;br /&gt;
&lt;br /&gt;
Please work with your Nielsen Technical Account Manager to decide which of the following parameters to append to the standard DAR tag.&lt;br /&gt;
=== HEM Support (Hashed Email) ===&lt;br /&gt;
Please use the parameter that matches your hashing algorithm. For example, if you are using sha256 to encode the email address, then use hem_sha256={encrypted_value_here}&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-weight:bold; background-color:#EAECF0;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Name&lt;br /&gt;
! Description&lt;br /&gt;
! Available Tag Parameters&lt;br /&gt;
|- style=&amp;quot;font-weight:normal; background-color:#F8F9FA;&amp;quot;&lt;br /&gt;
| Hashed Email&lt;br /&gt;
| User’s email address that has been run through a hashing algorithm&amp;lt;br /&amp;gt;(e.g. SHA256, MD5, SHA1) to create a unique 32-character hexadecimal string.&amp;lt;br /&amp;gt; If a client is unable to determine hashing type, they should pass&amp;lt;br /&amp;gt;using &amp;amp;hem_unknown parameter.&lt;br /&gt;
| &amp;amp;hem_unknown&amp;lt;br /&amp;gt;&amp;amp;hem_sha256&amp;lt;br /&amp;gt;&amp;amp;hem_md5&amp;lt;br /&amp;gt;&amp;amp;hem_sha1&lt;br /&gt;
|}&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-weight:bold;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background-color:#dae8fc; color:#002041;&amp;quot;&lt;br /&gt;
! Example&lt;br /&gt;
|- style=&amp;quot;font-weight:normal;&amp;quot;&lt;br /&gt;
| hem_sha256=tMmiiTI7IaAcPpQPFQ65uMVCWH8av9jw4cwf/F5HVRQ=&lt;br /&gt;
|}&lt;br /&gt;
=== Unified ID ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;background-color:#F8F9FA;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;font-weight:bold; background-color:#EAECF0;&amp;quot;&lt;br /&gt;
! Name&lt;br /&gt;
! Description&lt;br /&gt;
! Available Tag Parameters&lt;br /&gt;
|-&lt;br /&gt;
| Unified ID 2.0&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)&amp;lt;br /&amp;gt;and is now managed by Prebid.&lt;br /&gt;
| &amp;amp;uid2&lt;br /&gt;
|-&lt;br /&gt;
| Unified ID 2.0 Token&lt;br /&gt;
| Encrypted Unified ID 2.0&lt;br /&gt;
| &amp;amp;uid_token&lt;br /&gt;
|}&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-weight:bold;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background-color:#32BBB9; color:#002041;&amp;quot;&lt;br /&gt;
! Example&lt;br /&gt;
|- style=&amp;quot;font-weight:normal;&amp;quot;&lt;br /&gt;
| uid2=MTKVpUAzwYAPnHrtfE0wlINOMzhU7UUEjjVdCdRu63k=&amp;lt;br /&amp;gt;uid_token=AgAAAAPFR0zA5ogv/yaAPiUsAdZPsfqS8QlDSGxAB+rr8yekFs3AjLYVk5qqqiyV2XHbSuwzHmxSlLeQeKQI1mp015jsNnpX5&amp;lt;br /&amp;gt;/xGgXldcgVz+gFnyh3T8/3agMwRmyrhCxG4oH2C7fc48AQk2eotE7FW0ZDEYM8fD9ZxDaxFUC/OV3OuZA&amp;amp;&lt;br /&gt;
|}&lt;br /&gt;
=== Page and Bundle ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;background-color:#F8F9FA;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;font-weight:bold; background-color:#EAECF0;&amp;quot;&lt;br /&gt;
! Name&lt;br /&gt;
! Description&lt;br /&gt;
! Available Tag Parameters&lt;br /&gt;
|-&lt;br /&gt;
| Page URL&lt;br /&gt;
| Canonical URL of the content where the Ad creative is served. (e.g. https://example.com/news/tech/article.html) &amp;lt;br /&amp;gt;The parameter value has to be encoded with JavaScript’s encodeURIComponent() method or equivalent. &amp;lt;br /&amp;gt;Example: si=https%3A%2F%2Fexample.com%2Fnews%2Ftech%2Farticle.html&lt;br /&gt;
| &amp;amp;si&lt;br /&gt;
|-&lt;br /&gt;
| App Bundle ID&lt;br /&gt;
| The app’s unique bundle ID (e.g. com.example.myapp). The ID can be used to look up the App in Apple’s App Store&amp;lt;br /&amp;gt;or the Google Play Store.&amp;lt;br /&amp;gt;References: https://developer.android.com/studio/build/application-idhttps://developer.apple.com/documentation/appstoreconnectapi/bundle_ids&lt;br /&gt;
| &amp;amp;c68=bndlid&lt;br /&gt;
|}&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-weight:bold;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background-color:#32BBB9; color:#002041;&amp;quot;&lt;br /&gt;
! Example&lt;br /&gt;
|- style=&amp;quot;font-weight:normal;&amp;quot;&lt;br /&gt;
| si=https%3A%2F%2Fexample.com%2Fnews%2Ftech%2Farticle.html&amp;lt;br /&amp;gt;c68=bndlid,com.tam.nielsen.com&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== vWrap apiframework Values== &lt;br /&gt;
&lt;br /&gt;
Nielsen’s vWrap tag uses the existing definition of '''apiframework''' values defined in the IAB’s [https://github.com/InteractiveAdvertisingBureau/AdCOM/blob/master/AdCOM%20v1.0%20FINAL.md#list--api-frameworks- '''AdCOM Specification''' '''1.0''']. This means that existing macros for this parameter in your system should work out of the box with vWrap.&lt;br /&gt;
&lt;br /&gt;
The vWrap tag supports the numerical values in bold below. In case of '''8''' (SIMID), the DAR Video tag will be inserted as a standard OMID verification client for viewability measurement and it will not interfere with any SIMID components in the ad.&lt;br /&gt;
&lt;br /&gt;
If a '''0''' or an empty value is given, the resulting VAST will include both OMID and VPAID measurement solutions. This leaves the decision of the measurement method to the video player, which might be advantageous for mixed campaigns that span mobile and web environments.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-weight:bold;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background-color:#F4F5F7;&amp;quot;&lt;br /&gt;
! Value&lt;br /&gt;
! Definition&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| style=&amp;quot;font-weight:normal;&amp;quot; | VPAID 1.0&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| style=&amp;quot;font-weight:normal;&amp;quot; | VPAID 2.0&lt;br /&gt;
|- style=&amp;quot;font-weight:normal; color:#666;&amp;quot;&lt;br /&gt;
| 3&lt;br /&gt;
| MRAID 1.0&lt;br /&gt;
|- style=&amp;quot;font-weight:normal; color:#666;&amp;quot;&lt;br /&gt;
| 4&lt;br /&gt;
| ORMMA&lt;br /&gt;
|- style=&amp;quot;font-weight:normal; color:#666;&amp;quot;&lt;br /&gt;
| 5&lt;br /&gt;
| MRAID 2.0&lt;br /&gt;
|- style=&amp;quot;font-weight:normal; color:#666;&amp;quot;&lt;br /&gt;
| 6&lt;br /&gt;
| MRAID 3.0&lt;br /&gt;
|-&lt;br /&gt;
| 7&lt;br /&gt;
| style=&amp;quot;font-weight:normal;&amp;quot; | OMID 1.0&lt;br /&gt;
|-&lt;br /&gt;
| 8&lt;br /&gt;
| style=&amp;quot;font-weight:normal;&amp;quot; | SIMID 1.0&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== SERVER-SIDE TAG DISPATCH ==&lt;br /&gt;
The standard way of triggering a Digital Ad Ratings (DAR) tag on mobile in-app or connected devices is for the publisher to trigger the tag upon ad exposure to the user (either directly or via the ad server). This can be described as a client-side initiated tag.&lt;br /&gt;
&lt;br /&gt;
It is important to note that MRC/IAB measurement standards stipulate that the ad exposure event still be initiated and recorded from the client-side, even if the ad measurement tag (in this case a DAR tag) is physically initiated from the server-side. Evidence may be required (eg. publisher log file or similar) from the MRC/IAB to substantiate that the user was exposed to the ad on their device.&lt;br /&gt;
&lt;br /&gt;
In addition to the tag parameters covered in the prior sections, the following HTTP headers need to be modified in the DAR calls to support dispatch from a server-side publisher ad server:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|- style=&amp;quot;text-align:center; background-color:#c0c0c0; color:#000000;&amp;quot;&lt;br /&gt;
! HTTP Headers&lt;br /&gt;
! Description of Modifications&lt;br /&gt;
|-&lt;br /&gt;
| User-Agent (UA)&lt;br /&gt;
| This is expected to be the originating client user-agent for the&amp;lt;br /&amp;gt; device where the user was exposed to the ad. The HTTP UA from &amp;lt;br /&amp;gt;the client device should be used to populate the HTTP UA in the&amp;lt;br /&amp;gt; server-side connection/ping. DAR leverages the type of&amp;lt;br /&amp;gt;device for platform derivation.&lt;br /&gt;
|-&lt;br /&gt;
| X-Forwarded-For (XFF) IP&lt;br /&gt;
| This is expected to be the originating client IP address for the &amp;lt;br /&amp;gt;device where the user was exposed to the ad. Note: When the tag&amp;lt;br /&amp;gt; is fired directly from the ad server, the X-Real-IP will be the ad server IP.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Server Side Tag Notes ===&lt;br /&gt;
&lt;br /&gt;
* The server-side tag collection only supports mobile in-app and connected device measurement and will not support cookie-based browser measurement.&lt;br /&gt;
&lt;br /&gt;
* The client’s server-side setup to trigger/send the DAR tag should suppress any Nielsen cookie returned by the Nielsen collection server as a result of the first DAR tag received. If the Nielsen cookie (returned upon receiving the first DAR tag into secure.imrworldwide.com) is not suppressed, then invalid traffic (IVT) filtration will be triggered upon receiving the 2nd and nth tag.&lt;br /&gt;
&lt;br /&gt;
* The tag received by Nielsen must be TLS v1.2 compliant or greater.&lt;br /&gt;
&lt;br /&gt;
== About Nielsen ==&lt;br /&gt;
&lt;br /&gt;
Nielsen shapes the world’s media and content as a global leader in audience measurement, data and analytics. Through our understanding of people and their behaviors across all channels and platforms, we empower our clients with independent and actionable intelligence so they can connect and engage with their audiences—now and into the future.&lt;br /&gt;
&lt;br /&gt;
An S&amp;amp;amp;P 500 company, Nielsen (NYSE: NLSN) operates around the world in more than 55 countries. Learn more at [http://www.nielsen.com '''www.nielsen.com'''] or [http://www.nielsen.com/investors '''www.nielsen.com/investors'''] and connect with us on social media.&lt;br /&gt;
&lt;br /&gt;
'''Audience Is Everything®'''&lt;/div&gt;</summary>
		<author><name>ColinBrown</name></author>
	</entry>
	<entry>
		<id>https://nielsentest.mywikis.net/w/index.php?title=DCR_OTT_Genre_List&amp;diff=5832</id>
		<title>DCR OTT Genre List</title>
		<link rel="alternate" type="text/html" href="https://nielsentest.mywikis.net/w/index.php?title=DCR_OTT_Genre_List&amp;diff=5832"/>
		<updated>2022-06-27T21:50:48Z</updated>

		<summary type="html">&lt;p&gt;ColinBrown: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Breadcrumb|}} {{Breadcrumb|Digital}} {{Breadcrumb|DCR &amp;amp; DTVR}}  {{CurrentBreadcrumb}}&lt;br /&gt;
[[Category:Digital]]&lt;br /&gt;
&lt;br /&gt;
The OTT Genre list is used to populate the &amp;lt;code&amp;gt;provgen&amp;lt;/code&amp;gt; parameter only for OTT measurement. The Genre parameter should only be populated for video content that is not TV-originated.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Category !! Genre Code&lt;br /&gt;
|-&lt;br /&gt;
| Adventure || A&lt;br /&gt;
|-&lt;br /&gt;
| Audience Participation || AP&lt;br /&gt;
|-&lt;br /&gt;
| Award Ceremonies &amp;amp; Pageants  || AC&lt;br /&gt;
|-&lt;br /&gt;
| Children’s Programming || CP&lt;br /&gt;
|-&lt;br /&gt;
| Comedy Variety || CV&lt;br /&gt;
|-&lt;br /&gt;
| Concert Music || CM&lt;br /&gt;
|-&lt;br /&gt;
| Conversation, Colloquies || CC&lt;br /&gt;
|-&lt;br /&gt;
| Daytime Drama || DD&lt;br /&gt;
|-&lt;br /&gt;
| Devotional || D&lt;br /&gt;
|-&lt;br /&gt;
| Documentary, General  || DO&lt;br /&gt;
|-&lt;br /&gt;
| Documentary, News || DN&lt;br /&gt;
|-&lt;br /&gt;
| Evening Animation || EA&lt;br /&gt;
|-&lt;br /&gt;
| Feature Film || FF&lt;br /&gt;
|-&lt;br /&gt;
| General Drama  || GD&lt;br /&gt;
|-&lt;br /&gt;
| General Variety || GV&lt;br /&gt;
|-&lt;br /&gt;
| Instructions, Advice  || IA&lt;br /&gt;
|-&lt;br /&gt;
| Musical Drama || MD&lt;br /&gt;
|-&lt;br /&gt;
| News || N&lt;br /&gt;
|-&lt;br /&gt;
| Official Police || OP&lt;br /&gt;
|-&lt;br /&gt;
| Paid Political || P  &lt;br /&gt;
|-&lt;br /&gt;
| Participation Variety || PV&lt;br /&gt;
|-&lt;br /&gt;
| Popular Music || PC&lt;br /&gt;
|-&lt;br /&gt;
| Private Detective  || PD&lt;br /&gt;
|-&lt;br /&gt;
| Quiz -Give Away || QG&lt;br /&gt;
|-&lt;br /&gt;
| Quiz -Panel || QP  &lt;br /&gt;
|-&lt;br /&gt;
| Science Fiction  || SF &lt;br /&gt;
|-&lt;br /&gt;
| Situation Comedy || CS&lt;br /&gt;
|-&lt;br /&gt;
| Sports Anthology  || SA&lt;br /&gt;
|-&lt;br /&gt;
| Sports Commentary  || SC &lt;br /&gt;
|-&lt;br /&gt;
| Sports Event  || SE &lt;br /&gt;
|-&lt;br /&gt;
| Sports News  || SN &lt;br /&gt;
|-&lt;br /&gt;
| Suspense/Mystery  || SM&lt;br /&gt;
|-&lt;br /&gt;
| Western Drama || EW&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>ColinBrown</name></author>
	</entry>
	<entry>
		<id>https://nielsentest.mywikis.net/w/index.php?title=DCR_OTT_Genre_List&amp;diff=5831</id>
		<title>DCR OTT Genre List</title>
		<link rel="alternate" type="text/html" href="https://nielsentest.mywikis.net/w/index.php?title=DCR_OTT_Genre_List&amp;diff=5831"/>
		<updated>2022-06-27T21:46:39Z</updated>

		<summary type="html">&lt;p&gt;ColinBrown: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Breadcrumb|}} {{Breadcrumb|Digital}} {{Breadcrumb|DCR &amp;amp; DTVR}}  {{CurrentBreadcrumb}}&lt;br /&gt;
[[Category:Digital]]&lt;br /&gt;
&lt;br /&gt;
The OTT Genre list is used to populate the &amp;lt;code&amp;gt;progen&amp;lt;/code&amp;gt; parameter only for OTT measurement. The Genre parameter should only be populated for video content that is not TV-originated.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Category !! Genre Code&lt;br /&gt;
|-&lt;br /&gt;
| Adventure || A&lt;br /&gt;
|-&lt;br /&gt;
| Audience Participation || AP&lt;br /&gt;
|-&lt;br /&gt;
| Award Ceremonies &amp;amp; Pageants  || AC&lt;br /&gt;
|-&lt;br /&gt;
| Children’s Programming || CP&lt;br /&gt;
|-&lt;br /&gt;
| Comedy Variety || CV&lt;br /&gt;
|-&lt;br /&gt;
| Concert Music || CM&lt;br /&gt;
|-&lt;br /&gt;
| Conversation, Colloquies || CC&lt;br /&gt;
|-&lt;br /&gt;
| Daytime Drama || DD&lt;br /&gt;
|-&lt;br /&gt;
| Devotional || D&lt;br /&gt;
|-&lt;br /&gt;
| Documentary, General  || DO&lt;br /&gt;
|-&lt;br /&gt;
| Documentary, News || DN&lt;br /&gt;
|-&lt;br /&gt;
| Evening Animation || EA&lt;br /&gt;
|-&lt;br /&gt;
| Feature Film || FF&lt;br /&gt;
|-&lt;br /&gt;
| General Drama  || GD&lt;br /&gt;
|-&lt;br /&gt;
| General Variety || GV&lt;br /&gt;
|-&lt;br /&gt;
| Instructions, Advice  || IA&lt;br /&gt;
|-&lt;br /&gt;
| Musical Drama || MD&lt;br /&gt;
|-&lt;br /&gt;
| News || N&lt;br /&gt;
|-&lt;br /&gt;
| Official Police || OP&lt;br /&gt;
|-&lt;br /&gt;
| Paid Political || P  &lt;br /&gt;
|-&lt;br /&gt;
| Participation Variety || PV&lt;br /&gt;
|-&lt;br /&gt;
| Popular Music || PC&lt;br /&gt;
|-&lt;br /&gt;
| Private Detective  || PD&lt;br /&gt;
|-&lt;br /&gt;
| Quiz -Give Away || QG&lt;br /&gt;
|-&lt;br /&gt;
| Quiz -Panel || QP  &lt;br /&gt;
|-&lt;br /&gt;
| Science Fiction  || SF &lt;br /&gt;
|-&lt;br /&gt;
| Situation Comedy || CS&lt;br /&gt;
|-&lt;br /&gt;
| Sports Anthology  || SA&lt;br /&gt;
|-&lt;br /&gt;
| Sports Commentary  || SC &lt;br /&gt;
|-&lt;br /&gt;
| Sports Event  || SE &lt;br /&gt;
|-&lt;br /&gt;
| Sports News  || SN &lt;br /&gt;
|-&lt;br /&gt;
| Suspense/Mystery  || SM&lt;br /&gt;
|-&lt;br /&gt;
| Western Drama || EW&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>ColinBrown</name></author>
	</entry>
	<entry>
		<id>https://nielsentest.mywikis.net/w/index.php?title=File:Screenshot_2022-06-22_2.png&amp;diff=5830</id>
		<title>File:Screenshot 2022-06-22 2.png</title>
		<link rel="alternate" type="text/html" href="https://nielsentest.mywikis.net/w/index.php?title=File:Screenshot_2022-06-22_2.png&amp;diff=5830"/>
		<updated>2022-06-27T18:49:48Z</updated>

		<summary type="html">&lt;p&gt;ColinBrown: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Screenshot 2022-06-22 2&lt;/div&gt;</summary>
		<author><name>ColinBrown</name></author>
	</entry>
	<entry>
		<id>https://nielsentest.mywikis.net/w/index.php?title=File:Screenshot_2022-06-22_152646.png&amp;diff=5829</id>
		<title>File:Screenshot 2022-06-22 152646.png</title>
		<link rel="alternate" type="text/html" href="https://nielsentest.mywikis.net/w/index.php?title=File:Screenshot_2022-06-22_152646.png&amp;diff=5829"/>
		<updated>2022-06-27T18:49:08Z</updated>

		<summary type="html">&lt;p&gt;ColinBrown: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Screenshot 2022-06-22 152646&lt;/div&gt;</summary>
		<author><name>ColinBrown</name></author>
	</entry>
	<entry>
		<id>https://nielsentest.mywikis.net/w/index.php?title=DAR_Tag_Implementation_Guide&amp;diff=5828</id>
		<title>DAR Tag Implementation Guide</title>
		<link rel="alternate" type="text/html" href="https://nielsentest.mywikis.net/w/index.php?title=DAR_Tag_Implementation_Guide&amp;diff=5828"/>
		<updated>2022-06-27T18:48:17Z</updated>

		<summary type="html">&lt;p&gt;ColinBrown: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Breadcrumb|}} {{Breadcrumb|Digital}} {{Breadcrumb|Digital Ad Ratings}}  {{CurrentBreadcrumb}}&lt;br /&gt;
[[Category:Digital]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Introduction =&lt;br /&gt;
&lt;br /&gt;
This document provides an overview of the Nielsen Digital Ad Ratings (DAR) Tags and the steps necessary to implement them as part of your digital advertising campaigns.&lt;br /&gt;
=== What is DAR ===&lt;br /&gt;
DAR is a measurement platform for digital advertising campaigns. The platform provides a clear view of the true audience of a campaign, including Reach, Frequency, and GRP statistics by audience demographic group. &lt;br /&gt;
=== What we measure=== &lt;br /&gt;
All DAR tags allow you to measure campaign impressions and the DAR JavaScript tags measure ad viewability, GIVT (General Invalid Traffic), and SIVT (Sophisticated Invalid Traffic) across platforms including web, mobile, and in-app.&lt;br /&gt;
=== How we measure it=== &lt;br /&gt;
Nielsen’s DAR suite of JavaScript tags together with a pixel tag fallback will be present in your ad placements. We utilize industry-standard APIs to perform measurement cross-browser and cross-platform. In most cases, you will only need to add a simple URL through your ad management interface to fully utilize DAR measurement in your campaigns.&lt;br /&gt;
=== Prerequisites ===&lt;br /&gt;
For steps outlined in this document, you should have access to Nielsen’s Campaign Management Interface (CMI) and a Nielsen Technical Account Manager (TAM) will be working with you during the implementation phase.&lt;br /&gt;
__TOC__&lt;br /&gt;
= DAR Measurement Types =&lt;br /&gt;
&lt;br /&gt;
== DAR Display== &lt;br /&gt;
&lt;br /&gt;
The DAR Display JavaScript tag reports ad impressions as well as measures ad viewability and SIVT. In standard web placements, it will find the ad unit in the surrounding DOM container and will then report viewability as a time series with a 1-second resolution.&lt;br /&gt;
&lt;br /&gt;
The DAR tag will report the MRC-required minimum of 1 second on screen and a continuous viewability time series for the lifetime of the ad session to enable additional viewability qualifiers.&lt;br /&gt;
&lt;br /&gt;
The tag can utilize the IAB’s [https://iabtechlab.com/standards/open-measurement-sdk/ '''Open Measurement SDK'''] (OM SDK) including [https://iabtechlab.com/blog/open-measurement-for-web-video-arrives/ '''OM Web'''] integration if the OM Interface Definition (OMID) is available, or it will use industry-standard web APIs to measure viewability.&lt;br /&gt;
&lt;br /&gt;
=== Requirements ===&lt;br /&gt;
&lt;br /&gt;
The DAR Display tag requires a JavaScript-enabled browser for web environments or the OM SDK for in-app to operate and should be placed close to the corresponding measured ad unit. It should be on the same DOM level (e.g. directly under the same parent) or in a child node under the same parent node. The ad unit should be a content-bearing DOM element (e.g. img, canvas, SVG, iframe, div) with a minimum size of 30x30 pixels.&lt;br /&gt;
&lt;br /&gt;
=== Parameters ===&lt;br /&gt;
&lt;br /&gt;
The minimum required DAR parameters are '''ca, ci, cr, pc, ce''' and '''am'''. See the [[DAR_Tag_Implementation_Guide#Appendix|'''Appendix''']] for a full list of parameters.&lt;br /&gt;
&lt;br /&gt;
=== Example Tag ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;script type=&amp;quot;text/javascript&amp;quot; &lt;br /&gt;
src=&amp;quot;https://dar.imrworldwide.com/js/dar.js?ca=nlsnXXXXXX&amp;amp;cr={AD.ID}&amp;amp;ce={PUBLISHER.ID}&amp;amp;ci=nlsnciXXXX&amp;amp;pc={PLACEMENT.ID}&amp;amp;am=3&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Example OMID Display Placement ===&lt;br /&gt;
&lt;br /&gt;
DAR can be enabled through the OM SDK by passing the required Nielsen OM inputs listed in the table below during setup:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;width: 20%&amp;quot; | OM Parameter&lt;br /&gt;
! style=&amp;quot;width: 40%&amp;quot; | Description&lt;br /&gt;
! style=&amp;quot;width: 40%&amp;quot; | Nielsen Value&lt;br /&gt;
! style=&amp;quot;width: 5%&amp;quot; |Required&lt;br /&gt;
|-&lt;br /&gt;
| Vendor Key&lt;br /&gt;
| ID for measurement provider&lt;br /&gt;
| nielsen.com-omid&lt;br /&gt;
| ✔&lt;br /&gt;
|-&lt;br /&gt;
| JavaScript Resource URL&lt;br /&gt;
| URL for measurement provider’s verification script&lt;br /&gt;
|&amp;lt;syntaxhighlight lang=&amp;quot;html&amp;quot;&amp;gt; https://dar.imrworldwide.com/js/dar.js&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
| ✔&lt;br /&gt;
|-&lt;br /&gt;
| Verification Parameters&lt;br /&gt;
| Measurement provider’s verification tag parameters&lt;br /&gt;
| style=&amp;quot;font-family:'Courier New', Courier, monospace !important; color:#222222;&amp;quot; |&amp;lt;syntaxhighlight lang=&amp;quot;html&amp;quot;&amp;gt;ca=nlsnXXXXXX&amp;amp;cr={AD.ID}&amp;amp;ce=publisherXXXX&amp;amp;ci=nlsnciXXXX&amp;amp;pc=placementID_XXXX1&amp;amp;am=3&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
| ✔&lt;br /&gt;
|-&lt;br /&gt;
| Verification Not Executed URL&lt;br /&gt;
| Error URL when the ad player denies measurement script execution&lt;br /&gt;
| style=&amp;quot;font-family:'Courier New', Courier, monospace !important; color:#222222;&amp;quot; | &amp;lt;syntaxhighlight lang=&amp;quot;html&amp;quot;&amp;gt;https://events.imrworldwide.com/er?ercd=8800&amp;amp;erms=verificationNotExecuted-&lt;br /&gt;
{reason}&amp;amp;ca=nlsnXXXXXX&amp;amp;cr=ad_ID_XXXX&amp;amp;ce=publisherXXXX&amp;amp;&lt;br /&gt;
ci=nlsnciXXXX&amp;amp;pc=placementID_XXXX5&amp;amp;am=3&lt;br /&gt;
&amp;amp;c13={asid,app_id}&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
Note: The verificationNotExecuted Error URL is recommended for better troubleshooting during campaign setup. If your system can provide a macro for the reason of the interrupted measurement session, it can be added in place of the {reason} placeholder in the error URL. This can be an error code or a clear text error message.&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Expected Display Ad Session Pings ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
&lt;br /&gt;
! '''Description'''&lt;br /&gt;
! '''Timing'''&lt;br /&gt;
! '''Path'''&lt;br /&gt;
|-&lt;br /&gt;
| DAR Main Ping&lt;br /&gt;
| At initial load&lt;br /&gt;
| secure-gl.imrworldwide.com/cgi-bin/m&lt;br /&gt;
|-&lt;br /&gt;
| Nielsen Measure Ping&lt;br /&gt;
| Measurement start&lt;br /&gt;
| events.imrworldwide.com/nmp&lt;br /&gt;
|-&lt;br /&gt;
| Primary Standard Ping&lt;br /&gt;
| After 1 second of viewable duration (may not occur based on MRC rules)&lt;br /&gt;
| events.imrworldwide.com/psp&lt;br /&gt;
|-&lt;br /&gt;
| Timed Pings&lt;br /&gt;
| At 1, 5, 15 and 120 seconds of ad session time (may not occur based on ad session length)&lt;br /&gt;
| events.imrworldwide.com/1sp, 5sp, 15sp, 120sp&lt;br /&gt;
|-&lt;br /&gt;
| Final Ping&lt;br /&gt;
| At window/tab unloading event&lt;br /&gt;
| events.imrworldwide.com/fp&lt;br /&gt;
|-&lt;br /&gt;
| Error Ping&lt;br /&gt;
| Potential integration error - please contact your Nielsen representative&lt;br /&gt;
| events.imrworldwide.com/er&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Ping Flow ===&lt;br /&gt;
&lt;br /&gt;
This flow illustrates the behavior of the DAR Display tag.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:Screenshot 2022-06-22 152646.png]]&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|- &lt;br /&gt;
! colspan=&amp;quot;2&amp;quot; | Ping Flow Legend&lt;br /&gt;
|- &lt;br /&gt;
| 1SP, 5SP, 15SP, 120SP&lt;br /&gt;
| Timed Measure Ping at 1, 5, 15 and 120 seconds&lt;br /&gt;
|- &lt;br /&gt;
| D0, D1, D2&lt;br /&gt;
| Dynamic SIVT Pings at 1, 15 &amp;amp;amp; 30 seconds&lt;br /&gt;
|- &lt;br /&gt;
| FP&lt;br /&gt;
| Final Ping&lt;br /&gt;
|- &lt;br /&gt;
| IMPID&lt;br /&gt;
| Unique Impression ID&lt;br /&gt;
|- &lt;br /&gt;
| NMP&lt;br /&gt;
| Nielsen Main Measure Ping&lt;br /&gt;
|-&lt;br /&gt;
| PSP&lt;br /&gt;
| Primary Standard Ping&lt;br /&gt;
|-&lt;br /&gt;
| SIVT&lt;br /&gt;
| Sophisticated Invalid Traffic&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== DAR Video == &lt;br /&gt;
&lt;br /&gt;
The DAR Video tag will typically be trafficked as part of a Video Ad Serving Template (VAST) file. Nielsen provides its wrapped video tag (vWrap) to make this type of deployment easy and consistent across the various ad servers and trafficking options. Nielsen’s vWrap tag supports both automatic OMID and VPAID integration with existing VAST files. The two sections below, [[#Wrapped_Video_Tag_.28vWrap.29_Deployment|'''Wrapped Video Tag''']] and [[#Video_JS_Tag|'''Video JS Tag''']], describe these options and their expected outcomes.&lt;br /&gt;
&lt;br /&gt;
In addition, Nielsen supports '''direct DAR Video tag deployments''' with manual integration in existing workflows. In this case, the section [[#video-js-tag|'''Video JS Tag''']] below describes the basic setup and expected results. In addition, it is recommended that you work closely with your Nielsen Technical Account Manager if you consider a manual tag integration with your campaigns.&lt;br /&gt;
&lt;br /&gt;
=== Wrapped Video Tag (vWrap) Deployment ===&lt;br /&gt;
&lt;br /&gt;
Nielsen’s wrapped DAR video tag, vWrap, is the preferred delivery method for VAST-controlled video ad placements.The vWrap tag is served by a Nielsen service that takes an original VAST with an inline ad (not a wrapper redirect) and dynamically adds the DAR Video tag with measurement solutions for VPAID and OMID. The '''apiframework''' parameter can be used to control which measurement solution will be inserted (see below).&lt;br /&gt;
&lt;br /&gt;
=== Parameters ===&lt;br /&gt;
&lt;br /&gt;
The minimum required DAR parameters are '''ca, ci, ce, cr, pc''', '''am, apiframework''' and '''vastURL'''. See the [[DAR_Tag_Implementation_Guide#Appendix|'''Appendix''']] for a full list of parameters.&lt;br /&gt;
&lt;br /&gt;
The Open Real Time Bidding ([https://iabtechlab.com/wp-content/uploads/2022/04/OpenRTB-2-6_FINAL.pdf '''OpenRTB''']) API framework values for identifying the ad inventory type should be passed in the Nielsen '''apiframework''' parameter. The values should be either 1 or 2 (VPAID) or 7 or 8 (OMID). The available API framework values are listed in the IAB’s [https://github.com/InteractiveAdvertisingBureau/AdCOM/blob/master/AdCOM%20v1.0%20FINAL.md#list--api-frameworks- '''AdCOM specification 1.0''']. If the parameter is left blank or set to 0, Wrap will add the DAR Video tag as '''both''' an OMID verification client and VPAID wrapper. See more details in the [[DAR_Tag_Implementation_Guide#Appendix|'''Appendix''']].&lt;br /&gt;
&lt;br /&gt;
The '''vastURL''' parameter must be the last parameter on the DAR tag with its value set as the full URL (including all original parameters) of the original VAST tag for the ad placement.&lt;br /&gt;
&lt;br /&gt;
=== Example Wrapped Video Tag (vWrap) ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-family:'Courier New', Courier, monospace !important;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! &amp;lt;syntaxhighlight lang=&amp;quot;html&amp;quot;&amp;gt; https://vwrap.imrworldwide.com/v1/wrap?ca=nlsnXXXXXX&amp;amp;cr={AD.ID}&amp;amp;ce={PUBLISHER.ID}&amp;amp;pc={PLACEMENT.ID}&amp;amp;ci=nlsnciXXXX&amp;amp;am=4&amp;amp;&lt;br /&gt;
c9={devid,Advertising_ID}&amp;amp;c13=asid,app_id}&amp;amp;apiframework={APIFRAMEWORK}&amp;amp;vastURL={ORIGINAL_VAST_URL}&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
To observe how vWrap operates, we have provided some example VAST URLs which you can load directly in your browser.&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
==== VAST ad Unit, no Impression/Viewability ====&lt;br /&gt;
First, here is a VAST ad unit with a single video file and no impression tracking or viewability measurement:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
! https://madimator.com/vast-examples/example_video_only_nielsen_15s.xml &lt;br /&gt;
|}&lt;br /&gt;
==== VAST ad Unit, Nielsen vWrap for OMID measurement ====&lt;br /&gt;
This is the same VAST file loaded via Nielsen’s vWrap tag for '''OMID measurement''' (apiframework is set to 7):&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
! https://vwrap.imrworldwide.com/v1/wrap?ca=nlsn305255&amp;amp;cr=nielsenomidtest&amp;amp;ce=nielsen&amp;amp;pc=vastomid&amp;amp;ci=nlsntest&amp;amp;am=4&amp;amp;apiframework=7&amp;amp;vastURL=http://madimator.com/vast-examples/example_video_only_nielsen_15s.xml&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== VAST ad Unit, Nielsen vWrap for VPAID measurement ====&lt;br /&gt;
And here is the same VAST with the vWrap tag configured for '''VPAID measurement''' (apiframework is set to 2):&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
!https://vwrap.imrworldwide.com/v1/wrap?ca=nlsn305255&amp;amp;cr=nielsenomidtest&amp;amp;ce=nielsen&amp;amp;pc=vastvpaid&amp;amp;ci=nlsntest&amp;amp;am=4&amp;amp;apiframework=2&amp;amp;vastURL=http://madimator.com/vast-examples/example_video_only_nielsen_15s.xml &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Video JS Tag ===&lt;br /&gt;
&lt;br /&gt;
The DAR Video tag supports both OM SDK and VPAID video ad measurement and provides viewability time series, audio volume time series, GIVT, and SIVT data. The time series contains playhead events with corresponding measurements at a 1-second resolution. In addition to the time series, a dedicated ping will report on the MRC-required minimum of 2 seconds on screen.&lt;br /&gt;
&lt;br /&gt;
With OM SDK, the DAR Video tag supports the following ad types:&lt;br /&gt;
&lt;br /&gt;
* Native mobile in-app ad placements &lt;br /&gt;
* Mobile web ads&lt;br /&gt;
* OM Web placements&lt;br /&gt;
* OMID-enabled streaming video players with ad SDKs (for instance DAI IMA SDK)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
With VPAID, it supports the following operating modes:&lt;br /&gt;
* As VPAID wrapper for an existing VPAID ad unit in the VAST&lt;br /&gt;
* As VPAID ad unit in a VAST with video files and AdParameters node&lt;br /&gt;
* In Custom Integrations with VPAID host players&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
In most cases, the DAR Video tag should not be manually implemented as a wrapper, instead consider utilizing Nielsen’s vWrap tag.&lt;br /&gt;
&lt;br /&gt;
==== Requirements ====&lt;br /&gt;
&lt;br /&gt;
The DAR Video tag needs a JavaScript environment to operate. The video unit to be measured needs to have a size of at least 30x30 pixels. The DAR Video tag requires access to the VPAID ad unit or to an OM SDK API present in the JavaScript context.&lt;br /&gt;
&lt;br /&gt;
==== Parameters ====&lt;br /&gt;
&lt;br /&gt;
The minimum required DAR parameters are '''ca, ci, ce, cr, pc''' and '''am'''. For VPAID wrapper placements, '''vpaidURL''' is also required.&lt;br /&gt;
&lt;br /&gt;
To comply with MRC guidelines, you will be required to append '''autop''' to indicate click-to-play vs auto-play.&lt;br /&gt;
&lt;br /&gt;
If the DAR Video tag will act as the VPAID wrapper, '''vpaidURL''' has to be the tag’s last parameter and its value set to the full URL (including parameters) of the original VPAID ad unit.&lt;br /&gt;
&lt;br /&gt;
See the [[DAR_Tag_Implementation_Guide#Appendix|'''Appendix''']] for a full list of parameters.&lt;br /&gt;
&lt;br /&gt;
==== Expected Video Ad Session Pings ====&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
! '''Description'''&lt;br /&gt;
! '''Timing'''&lt;br /&gt;
! '''Path'''&lt;br /&gt;
|-&lt;br /&gt;
| DAR Main Ping&lt;br /&gt;
| At initial load&lt;br /&gt;
| secure-gl.imrworldwide.com/cgi-bin/m&lt;br /&gt;
|-&lt;br /&gt;
| Nielsen Measure Ping&lt;br /&gt;
| Measurement start&lt;br /&gt;
| events.imrworldwide.com/nmp&lt;br /&gt;
|-&lt;br /&gt;
| Primary Standard Ping&lt;br /&gt;
| After 2 seconds of viewable duration (may not occur based on MRC rules)&lt;br /&gt;
| events.imrworldwide.com/psp&lt;br /&gt;
|-&lt;br /&gt;
| Quarterly Ping&lt;br /&gt;
| At 25%, 50%, 75% and 100% of video progress&lt;br /&gt;
| events.imrworldwide.com/qp&lt;br /&gt;
|-&lt;br /&gt;
| Final Ping&lt;br /&gt;
| At video stop or window/tab unloading event&lt;br /&gt;
| events.imrworldwide.com/fp&lt;br /&gt;
|-&lt;br /&gt;
| Error Ping&lt;br /&gt;
| Potential integration error - please contact your Nielsen representative&lt;br /&gt;
| events.imrworldwide.com/er&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Ping Flow ====&lt;br /&gt;
&lt;br /&gt;
This flow illustrates the behavior of the DAR Video tag if the impression pixel is part of the VAST to be sent by the ad player and the JS tag has '''&amp;amp;amp;darsup=1'''. The parameter, &amp;lt;code&amp;gt;darsup=1&amp;lt;/code&amp;gt;, is used to suppress the DAR Main Ping from being sent from the JS tag since the DAR main ping will be sent from the DAR impression pixel. This is the default setup if Nielsen’s vWrap tag is being used to set up the video campaign.&lt;br /&gt;
&lt;br /&gt;
[[File:Screenshot 2022-06-22 2.png]]&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|- &lt;br /&gt;
! colspan=&amp;quot;2&amp;quot; | Ping Flow Legend&lt;br /&gt;
|- &lt;br /&gt;
| D0, D1, D2&lt;br /&gt;
| Dynamic SIVT Pings at 1, 15 &amp;amp;amp; 30 seconds&lt;br /&gt;
|- &lt;br /&gt;
| FP&lt;br /&gt;
| Final Ping&lt;br /&gt;
|- &lt;br /&gt;
| IMPID&lt;br /&gt;
| Unique Impression ID&lt;br /&gt;
|- &lt;br /&gt;
| NMP&lt;br /&gt;
| Nielsen Main Measure Ping&lt;br /&gt;
|-&lt;br /&gt;
| PSP&lt;br /&gt;
| Primary Standard Ping&lt;br /&gt;
|-&lt;br /&gt;
| QP&lt;br /&gt;
|Quarterly Media Pings at 25%, 50%, 75% and 100%&lt;br /&gt;
|-&lt;br /&gt;
| SIVT&lt;br /&gt;
| Sophisticated Invalid Traffic&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Example OMID Video Placement ====&lt;br /&gt;
&lt;br /&gt;
DAR can be enabled through the OM SDK by passing the required Nielsen OM inputs listed in the table in the VAST &amp;amp;lt;adVerifications&amp;amp;gt; node:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
! '''OM Parameter'''&lt;br /&gt;
! '''Description'''&lt;br /&gt;
! '''Nielsen Value'''&lt;br /&gt;
! '''Required'''&lt;br /&gt;
|-&lt;br /&gt;
| Vendor Key&lt;br /&gt;
| ID for measurement provider&lt;br /&gt;
| nielsen.com-omid&lt;br /&gt;
| ✔&lt;br /&gt;
|-&lt;br /&gt;
| JavaScript Resource URL&lt;br /&gt;
| URL for measurement provider’s verification script&lt;br /&gt;
| &amp;lt;syntaxhighlight lang=&amp;quot;html&amp;quot;&amp;gt;https://dar.imrworldwide.com/js/darvideo.js&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
| ✔&lt;br /&gt;
|-&lt;br /&gt;
| Verification Parameters&lt;br /&gt;
| Measurement provider’s verification tag parameters&lt;br /&gt;
| style=&amp;quot;font-family:'Courier New', Courier, monospace !important; color:#222222;&amp;quot; |&amp;lt;syntaxhighlight lang=&amp;quot;html&amp;quot;&amp;gt;ca=nlsnXXXXXX&amp;amp;cr={AD.ID}&amp;amp;ce=publisherXXXX&amp;amp;ci=nlsnciXXXX&amp;amp;&lt;br /&gt;
pc=placementID_XXXX1&amp;amp;am=3&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
| ✔&lt;br /&gt;
|-&lt;br /&gt;
| Verification Not Executed URL&lt;br /&gt;
| Error URL when the ad player denies measurement script execution&lt;br /&gt;
| style=&amp;quot;font-family:'Courier New', Courier, monospace !important; color:#222222;&amp;quot; | &amp;lt;syntaxhighlight lang=&amp;quot;html&amp;quot;&amp;gt;https://events.imrworldwide.com/er?ercd=8800&amp;amp;erms=verificationNotExecuted-&lt;br /&gt;
{reason}&amp;amp;ca=nlsnXXXXXX&amp;amp;cr=ad_ID_XXXX&amp;amp;ce=publisherXXXX&amp;amp;&lt;br /&gt;
ci=nlsnciXXXX&amp;amp;pc=placementID_XXXX5&amp;amp;am=3&amp;amp;c9={devid,Advertising_ID}&lt;br /&gt;
&amp;amp;c13={asid,app_id}&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
Note: The verificationNotExecuted Error URL is recommended for better troubleshooting during campaign setup. If your system can provide a macro for the reason of the interrupted measurement session, it can be added in place of the {reason} placeholder in the error URL. This can be an error code or a clear text error message.&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Example VPAID Placement in VAST ====&lt;br /&gt;
&lt;br /&gt;
A typical VAST placement with VPAID will contain an impression pixel, the DAR Video JS tag as MediaFile of type “VPAID”, and the video MediaFiles will be duplicated as AdParameters object. In the example below, there was no original VPAID ad unit (the original VAST only contained MP4 video files), so the &amp;amp;amp;vpaidURL parameter on the DAR JS tag stays empty.&lt;br /&gt;
&lt;br /&gt;
In this example, the DAR JavaScript tag will operate as the VPAID ad unit and will play an appropriate media file from the list contained in the AdParameters node.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;json&amp;quot;&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;Impression id=&amp;quot;Nielsen Digital Ad Ratings&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;![CDATA[https://secure-enc.imrworldwide.com/cgi-bin/m?at=view&amp;amp;cy=2&amp;amp;rt=banner&amp;amp;src=njs&amp;amp;&lt;br /&gt;
st=image&amp;amp;tpv=vwrap&amp;amp;ca=nlsnXXXXXX&amp;amp;cr={AD.ID}&amp;amp;ce=publisherXXXX&amp;amp;ci=nlsnciXXXX&amp;amp;pc=placementID_XXXX1&amp;amp;am=3]]&amp;gt;&lt;br /&gt;
&amp;lt;/Impression&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;MediaFiles&amp;gt;&lt;br /&gt;
    &amp;lt;MediaFile apiFramework=&amp;quot;VPAID&amp;quot; type=&amp;quot;application/javascript&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;![CDATA[https://dar.imrworldwide.com/js/darvideo.js?darsup=1&amp;amp;ca=nlsnXXXXXX&amp;amp;cr={{AD.ID}}&amp;amp;&lt;br /&gt;
ce=publisherXXXX&amp;amp;ci=nlsnciXXXX&amp;amp;pc=placementID_XXXX1&amp;amp;am=3]]&amp;gt;&lt;br /&gt;
    &amp;lt;/MediaFile&amp;gt;&lt;br /&gt;
    &amp;lt;MediaFile bitrate=&amp;quot;720&amp;quot; delivery=&amp;quot;progressive&amp;quot; height=&amp;quot;480&amp;quot; id=&amp;quot;XXXXXX&amp;quot;&lt;br /&gt;
               maintainAspectRatio=&amp;quot;true&amp;quot; scalable=&amp;quot;true&amp;quot; type=&amp;quot;video/mp4&amp;quot;  &lt;br /&gt;
               width=&amp;quot;854&amp;quot;&amp;gt;&amp;lt;![CDATA[https://XXXXX.net/XXXXXX.mp4]]&amp;gt;&lt;br /&gt;
    &amp;lt;/MediaFile&amp;gt;&lt;br /&gt;
&amp;lt;/MediaFiles&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;AdParameters&amp;gt;&lt;br /&gt;
&amp;lt;![CDATA[{&amp;quot;mediaFiles&amp;quot;:[{&amp;quot;bitrate&amp;quot;:&amp;quot;720&amp;quot;,&amp;quot;uri&amp;quot;:&amp;quot;https://XXXXX.net/XXXXXX.mp4&amp;quot;,&amp;quot;height&amp;quot;:&amp;quot;480&amp;quot;,&amp;quot;scalable&amp;quot;:&amp;quot;true&amp;quot;,&lt;br /&gt;
&amp;quot;id&amp;quot;:&amp;quot;XXXXXX&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;video/mp4&amp;quot;,&amp;quot;maintainAspectRatio&amp;quot;:&amp;quot;true&amp;quot;,&amp;quot;delivery&amp;quot;:&amp;quot;progressive&amp;quot;,&amp;quot;width&amp;quot;:&amp;quot;854&amp;quot;}]]&amp;gt;&lt;br /&gt;
&amp;lt;/AdParameters&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Server-Side Integration ====&lt;br /&gt;
&lt;br /&gt;
If you are interested in implementing the DAR tags server-side, e.g. through SSAI, please contact your Nielsen TAM to provide you with the required guidelines.&lt;br /&gt;
&lt;br /&gt;
==== Notes ====&lt;br /&gt;
&lt;br /&gt;
Manual placement of the DAR Video tag is only recommended in situations where the DAR vWrap tag can not be utilized, like in certain mobile in-app ad placements or in scenarios where DAR Video needs to be configured as OMID viewability measurement solution.&lt;br /&gt;
&lt;br /&gt;
== Pixel Tag== &lt;br /&gt;
&lt;br /&gt;
The DAR Impression pixel provides basic campaign impression counts and allows to cover placements served in environments where the DAR JavaScript tag is not supported.&lt;br /&gt;
&lt;br /&gt;
=== Environment ===&lt;br /&gt;
&lt;br /&gt;
The DAR pixel tag should only be used in environments where the DAR JavaScript tag cannot be utilized such as restricted CTV environments, for SSAI Server-Side Beaconing, and other situations where an adequate JavaScript environment is not available.&lt;br /&gt;
&lt;br /&gt;
=== Parameters ===&lt;br /&gt;
&lt;br /&gt;
The minimum required DAR parameters are '''ca, ci, ce, cr, pc''', and '''am''' along with fixed valued params, '''at=view''', '''rt=banner''' and '''st=image''' . See the [[DAR_Tag_Implementation_Guide#Appendix|'''Appendix''']] for a full list of parameters.&lt;br /&gt;
&lt;br /&gt;
=== Example Tag ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;html&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;img src=&amp;quot;https://secure-gl.imrworldwide.com/cgi-bin/m?ca=nlsnXXXXXX&amp;amp;cr=crtve&lt;br /&gt;
&amp;amp;ce={PUBLISHER.ID}&amp;amp;pc=PLACEMENT.ID}&amp;amp;nlsnciXXXX&amp;amp;am=3&amp;amp;at=view&amp;amp;rt=banner&amp;amp;st=image&lt;br /&gt;
&amp;amp;cy=0&amp;amp;r=[timestamp]&amp;quot; style=&amp;quot;display:none&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Tag Integration =&lt;br /&gt;
A successful tag integration will require you to go through the following 6 steps.&lt;br /&gt;
== Step 1: Determine Your Campaign Needs== &lt;br /&gt;
To receive optimal results from DAR measurement, it is good practice to consider the technical requirements of different sites and placements. Please share your media plan with your Technical Account Manager before launch.&lt;br /&gt;
&lt;br /&gt;
Specifically, be on the lookout for placements that might span across web and mobile ad inventory and make sure if all of the in-app placements support OMID. Also, some placement types may need manual setup and cannot be automated or may need extra time for setup and testing.&lt;br /&gt;
&lt;br /&gt;
Please reach out to your Nielsen Technical Account Manager (TAM) for advice if the technical requirements for your campaign are not clear.&lt;br /&gt;
== Step 2: Generate Tags== &lt;br /&gt;
Your Nielsen representative will walk you through the Campaign Management Interface (CMI) so that you can generate DAR tags for your campaigns at any time.&lt;br /&gt;
&lt;br /&gt;
Nielsen supports macro-based tag generation for several major ad servers. Nielsen’s Technical Account Managers can assist you with any technical questions on tagging campaigns for DAR measurement.&lt;br /&gt;
== Step 3: Campaign Integration== &lt;br /&gt;
Your Nielsen tags created in CMI will need to be included when you traffic your ad campaigns. Please reach out to your Nielsen TAM for additional guidance and assistance.&lt;br /&gt;
== Step 4: Test the Tag Implementation== &lt;br /&gt;
Depending on the complexity of the integration, you may be working closely with a TAM at this point or are performing a self-guided tag implementation based on the CMI output.&lt;br /&gt;
&lt;br /&gt;
If working with a TAM, they will coordinate a plan to test the tag implementation ahead of the campaign go-live date. Depending on your campaign needs, testing will involve either running a diagnostic campaign to validate tagging setup or reviewing test pages or apps.&lt;br /&gt;
&lt;br /&gt;
In case of a self-guided tag implementation, we recommend to verify and compare the impression counts in the CMI with your planned campaign volume or ad server reports during the first hours of the campaign. If there are any unexpected impression counts, please reach out to your Nielsen TAM.&lt;br /&gt;
== Step 5: Share your Ad Server Report== &lt;br /&gt;
&lt;br /&gt;
=== Why the Ad Server Report is Needed ===&lt;br /&gt;
&lt;br /&gt;
Knowing the delivered impressions helps Nielsen run Discrepancy Checks ensuring overall quality and reduces errors in the tagging process.&lt;br /&gt;
&lt;br /&gt;
Nielsen can provide the client with a template with the inputs required to complete the quality checks.&lt;br /&gt;
&lt;br /&gt;
=== How to Share Your Delivered impressions ===&lt;br /&gt;
&lt;br /&gt;
Set up an automated daily report from your ad server containing Site Name, Site ID, Placement Name, Placement ID, and data date.&lt;br /&gt;
&lt;br /&gt;
A secondary method to share your media plan information is to grant Nielsen “Reporting access” to your campaign in the designated ad server (such as DCM). To do this, simply grant the login '''clientreporting@nielsen.com''' access. In doing so Nielsen can directly access your media plan information, which enables us to check for updates, and reconcile any discrepancies.&lt;br /&gt;
&lt;br /&gt;
== Step 6: Monitoring Your Campaign== &lt;br /&gt;
Nielsen recommends all clients participate in Discrepancy Checks. Nielsen’s team will verify that the tags delivered have begun to receive data once the campaign goes live and will regularly (typically every 7-14 days) compare the Nielsen reporting to your 3rd party or publisher reporting to ensure we are capturing all data across all placements, as expected, and that the discrepancy gap between your reporting and the Nielsen reporting is kept to a minimum.&lt;br /&gt;
&lt;br /&gt;
= Appendix =&lt;br /&gt;
== Tag Parameters== &lt;br /&gt;
All passthrough parameters will appear on the JavaScript-generated DAR impression ping.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;background-color:#FFF;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;font-weight:bold; background-color:#EAECF0; color:#222;&amp;quot;&lt;br /&gt;
! Query Parameter&lt;br /&gt;
! Description&lt;br /&gt;
! style=&amp;quot;text-align:center;&amp;quot; | Required&lt;br /&gt;
! style=&amp;quot;text-align:center;&amp;quot; | Pass-through&lt;br /&gt;
|- style=&amp;quot;font-weight:bold; text-align:center; vertical-align:middle; background-color:#FFEBD3; color:#222;&amp;quot;&lt;br /&gt;
| colspan=&amp;quot;4&amp;quot; | Group 1 - Required Parameters&lt;br /&gt;
|- style=&amp;quot;vertical-align:middle; color:#222;&amp;quot;&lt;br /&gt;
| ca&lt;br /&gt;
| Campaign ID&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | X&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | X&lt;br /&gt;
|- style=&amp;quot;vertical-align:middle; background-color:#EFEFEF; color:#222;&amp;quot;&lt;br /&gt;
| pc&lt;br /&gt;
| Placement ID&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | X&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | X&lt;br /&gt;
|- style=&amp;quot;vertical-align:middle; color:#222;&amp;quot;&lt;br /&gt;
| ci&lt;br /&gt;
| Client ID&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | X&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | X&lt;br /&gt;
|- style=&amp;quot;vertical-align:middle; background-color:#EFEFEF; color:#222;&amp;quot;&lt;br /&gt;
| am&lt;br /&gt;
| Ad server ID&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | X&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | X&lt;br /&gt;
|- style=&amp;quot;color:#222;&amp;quot;&lt;br /&gt;
| ce&lt;br /&gt;
| Site ID&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | X&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | X&lt;br /&gt;
|- style=&amp;quot;background-color:#F4F5F7; color:#222;&amp;quot;&lt;br /&gt;
| cr&lt;br /&gt;
| Creative ID&lt;br /&gt;
| style=&amp;quot;text-align:center; background-color:#EFEFEF;&amp;quot; | X&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | X&lt;br /&gt;
|- style=&amp;quot;font-weight:bold; text-align:center; vertical-align:middle; background-color:#FFEBD3; color:#222;&amp;quot;&lt;br /&gt;
| colspan=&amp;quot;4&amp;quot; | Group 2 - Use Case Specific Parameters&lt;br /&gt;
|- style=&amp;quot;vertical-align:middle; background-color:#EFEFEF; color:#222;&amp;quot;&lt;br /&gt;
| at&lt;br /&gt;
| Fixed Value &amp;quot;view&amp;quot; (Nielsen value, JS tags add this to DAR and NMP pings)&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | Pixel only&lt;br /&gt;
| &lt;br /&gt;
|- style=&amp;quot;vertical-align:middle; color:#222;&amp;quot;&lt;br /&gt;
| st&lt;br /&gt;
| Fixed Value &amp;quot;image&amp;quot; (Nielsen value, JS tags add this to DAR and NMP pings)&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | Pixel only&lt;br /&gt;
| &lt;br /&gt;
|- style=&amp;quot;vertical-align:middle; background-color:#EFEFEF; color:#222;&amp;quot;&lt;br /&gt;
| rt&lt;br /&gt;
| Fixed Value &amp;quot;banner&amp;quot; (Nielsen value, JS tags add this to DAR and NMP pings)&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | Pixel only&lt;br /&gt;
| &lt;br /&gt;
|- style=&amp;quot;vertical-align:middle; color:#222;&amp;quot;&lt;br /&gt;
| r&lt;br /&gt;
| Cachebuster/Timestamp. It's required in the pixel tags with a hardcoded&amp;lt;br /&amp;gt;value as a default or a macro (r=timestamp/macro) .&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | Pixel only&lt;br /&gt;
| &lt;br /&gt;
|- style=&amp;quot;vertical-align:middle; background-color:#EFEFEF; color:#222;&amp;quot;&lt;br /&gt;
| cy&lt;br /&gt;
| Creative type (1: display/2: video) JS tags add this to DAR and NMP pings for In-House Viewability.&amp;lt;br /&amp;gt;When parameter is not present or value is missing on pixel tags, there will be no creative type breakout.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | Pixel only&lt;br /&gt;
| &lt;br /&gt;
|- style=&amp;quot;vertical-align:middle; color:#222;&amp;quot;&lt;br /&gt;
| '''[[DAR_Tag_Implementation_Guide#vWrap_apiframework_Values|apiframework]]'''&lt;br /&gt;
| IAB-defined value designating the measurement method See vWrap apiframework values&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | vWrap only&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | X&lt;br /&gt;
|- style=&amp;quot;vertical-align:middle; background-color:#EFEFEF; color:#222;&amp;quot;&lt;br /&gt;
| autof&lt;br /&gt;
| Video only: Auto refresh (1 for auto refresh, leave empty otherwise)&lt;br /&gt;
| &lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | X&lt;br /&gt;
|- style=&amp;quot;vertical-align:middle; color:#222;&amp;quot;&lt;br /&gt;
| autop&lt;br /&gt;
| Video only: Autoplay (1 for auto-play, 2 for click-to-play, leave empty otherwise)&lt;br /&gt;
| &lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | X&lt;br /&gt;
|- style=&amp;quot;vertical-align:middle; background-color:#EFEFEF; color:#222;&amp;quot;&lt;br /&gt;
| c7&lt;br /&gt;
| OS Grouping&amp;lt;br /&amp;gt;c7=osgrp,IOS&amp;lt;br /&amp;gt;c7=osgrp,DROID&amp;lt;br /&amp;gt;c7=osgrp,ANDROID&lt;br /&gt;
| &lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | X&lt;br /&gt;
|- style=&amp;quot;vertical-align:middle; color:#222;&amp;quot;&lt;br /&gt;
| c8&lt;br /&gt;
| Device Grouping&amp;lt;br /&amp;gt;c8=devgrp,DSK (computers)&amp;lt;br /&amp;gt;c8=devgrp,PHN (mobile phone devices)&amp;lt;br /&amp;gt;c8=devgrp,TAB (mobile tablet devices)&amp;lt;br /&amp;gt;c8=devgrp,PMP (portable media player)&amp;lt;br /&amp;gt;c8=devgrp,UNWN (unknown mobile devices)&lt;br /&gt;
| &lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | X&lt;br /&gt;
|- style=&amp;quot;vertical-align:middle; background-color:#EFEFEF; color:#222;&amp;quot;&lt;br /&gt;
| c9&lt;br /&gt;
| Mobile Advertising ID&amp;lt;br /&amp;gt;c9=devid,xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | Mobile&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | X&lt;br /&gt;
|- style=&amp;quot;vertical-align:middle; color:#222;&amp;quot;&lt;br /&gt;
| c10&lt;br /&gt;
| Platform&amp;lt;br /&amp;gt;c10=plt,DSK (Computer)&amp;lt;br /&amp;gt;c10=plt,MBL (Mobile)&amp;lt;br /&amp;gt;c10=plt,OTT (Connected Device)&lt;br /&gt;
| &lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | X&lt;br /&gt;
|- style=&amp;quot;vertical-align:middle; background-color:#EFEFEF; color:#222;&amp;quot;&lt;br /&gt;
| c12&lt;br /&gt;
| App Version&amp;lt;br /&amp;gt;c12=apv,xxx&lt;br /&gt;
| &lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | X&lt;br /&gt;
|- style=&amp;quot;vertical-align:middle; color:#222;&amp;quot;&lt;br /&gt;
| c13&lt;br /&gt;
| Nielsen Assigned App ID&amp;lt;br /&amp;gt;Example:&amp;lt;br /&amp;gt;c13=asid,xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | Mobile&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | X&lt;br /&gt;
|- style=&amp;quot;vertical-align:middle; background-color:#EFEFEF; color:#222;&amp;quot;&lt;br /&gt;
| c14&lt;br /&gt;
| OS Version&amp;lt;br /&amp;gt;c14=osver,xxx&lt;br /&gt;
| &lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | X&lt;br /&gt;
|- style=&amp;quot;vertical-align:middle; color:#222;&amp;quot;&lt;br /&gt;
| c68&lt;br /&gt;
| Mobile App Bundle ID&amp;lt;br /&amp;gt;c68=bndlid,xxxxxxxxxxxxxx&amp;lt;br /&amp;gt;References:&amp;lt;br /&amp;gt;https://developer.apple.com/documentation/appstoreconnectapi/bundle_ids&amp;lt;br /&amp;gt;https://developer.android.com/studio/build/configure-app-module#set_the_application_id&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | Mobile&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | X&lt;br /&gt;
|- style=&amp;quot;vertical-align:middle; background-color:#EFEFEF; color:#222;&amp;quot;&lt;br /&gt;
| C78&lt;br /&gt;
| Custom Integration Flag (please note: this is the only uppercase parameter name)&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | some vendors&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | X&lt;br /&gt;
|- style=&amp;quot;vertical-align:middle; color:#222;&amp;quot;&lt;br /&gt;
| darsup&lt;br /&gt;
| If present suppress DAR main ping originating from JS tag (value can be 0 or 1, same effect)&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
|- style=&amp;quot;vertical-align:middle; background-color:#EFEFEF; color:#222;&amp;quot;&lt;br /&gt;
| forceid&lt;br /&gt;
| If present provides impid, can be overwritten by impid parameter&lt;br /&gt;
| &lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | X (as impid)&lt;br /&gt;
|- style=&amp;quot;vertical-align:middle; color:#222;&amp;quot;&lt;br /&gt;
| impid&lt;br /&gt;
| Same as forceid, but higher priority in case both are present&lt;br /&gt;
| &lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | X&lt;br /&gt;
|- style=&amp;quot;vertical-align:middle; background-color:#EFEFEF; color:#222;&amp;quot;&lt;br /&gt;
| frcd&lt;br /&gt;
| Video only: Forced duration (seconds/null)&lt;br /&gt;
| &lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | X&lt;br /&gt;
|- style=&amp;quot;vertical-align:middle; color:#222;&amp;quot;&lt;br /&gt;
| frcf&lt;br /&gt;
| Video only: Forced ad flag (yes/no/null)&lt;br /&gt;
| &lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | X&lt;br /&gt;
|- style=&amp;quot;vertical-align:middle; background-color:#EFEFEF; color:#222;&amp;quot;&lt;br /&gt;
| ptraf&lt;br /&gt;
| Video only: Purchased traffic&lt;br /&gt;
| &lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | X&lt;br /&gt;
|- style=&amp;quot;vertical-align:middle; color:#222;&amp;quot;&lt;br /&gt;
| contplay&lt;br /&gt;
| Video only: Continuous play&lt;br /&gt;
| &lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | X&lt;br /&gt;
|- style=&amp;quot;vertical-align:middle; background-color:#EFEFEF; color:#222;&amp;quot;&lt;br /&gt;
| gdpr&lt;br /&gt;
| GDPR flag to indicate whether GDPR is applicable:&amp;lt;br /&amp;gt;0 - GDPR does not apply&amp;lt;br /&amp;gt;1 - GDPR applies&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | in some jurisdictions&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | X&lt;br /&gt;
|- style=&amp;quot;vertical-align:middle; color:#222;&amp;quot;&lt;br /&gt;
| gdpr_consent&lt;br /&gt;
| URL-safe base64-encoded Transparency &amp;amp; Consent (TC) string for&amp;lt;br /&amp;gt;identifying user's privacy preferences&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | in some jurisdictions&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | X&lt;br /&gt;
|- style=&amp;quot;vertical-align:middle; background-color:#EFEFEF; color:#222;&amp;quot;&lt;br /&gt;
| hem_md5&lt;br /&gt;
| Hashed email&lt;br /&gt;
| &lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | X&lt;br /&gt;
|- style=&amp;quot;vertical-align:middle; color:#222;&amp;quot;&lt;br /&gt;
| hem_sha1&lt;br /&gt;
| Hashed email&lt;br /&gt;
| &lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | X&lt;br /&gt;
|- style=&amp;quot;vertical-align:middle; background-color:#EFEFEF; color:#222;&amp;quot;&lt;br /&gt;
| hem_sha256&lt;br /&gt;
| Hashed email&lt;br /&gt;
| &lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | X&lt;br /&gt;
|- style=&amp;quot;vertical-align:middle; color:#222;&amp;quot;&lt;br /&gt;
| hem_unknown&lt;br /&gt;
| Hashed email&lt;br /&gt;
| &lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | X&lt;br /&gt;
|- style=&amp;quot;vertical-align:middle; background-color:#EFEFEF; color:#222;&amp;quot;&lt;br /&gt;
| mode&lt;br /&gt;
| VPAID video only, optional: Custom Direct Access mode&amp;lt;br /&amp;gt;(&amp;quot;w&amp;quot; wrapper / &amp;quot;c&amp;quot; custom; defaults to wrapper)&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
|- style=&amp;quot;vertical-align:middle; color:#222;&amp;quot;&lt;br /&gt;
| onload&lt;br /&gt;
| VPAID video only, optional: JS callback for Custom Direct Access VPAID integration&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
|- style=&amp;quot;vertical-align:middle; background-color:#EFEFEF; color:#222;&amp;quot;&lt;br /&gt;
| pub&lt;br /&gt;
| Publisher Name&lt;br /&gt;
| &lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | X&lt;br /&gt;
|- style=&amp;quot;vertical-align:middle; color:#222;&amp;quot;&lt;br /&gt;
| pubid&lt;br /&gt;
| Publisher ID&lt;br /&gt;
| &lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | X&lt;br /&gt;
|- style=&amp;quot;vertical-align:middle; background-color:#EFEFEF; color:#222;&amp;quot;&lt;br /&gt;
| si&lt;br /&gt;
| Site identifier. Canonical URL of the content where the Ad creative is served.&amp;lt;br /&amp;gt;The parameter value has to be encoded with encodeURIComponent() method or equivalent.&lt;br /&gt;
| &lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | X&lt;br /&gt;
|- style=&amp;quot;vertical-align:middle; color:#222;&amp;quot;&lt;br /&gt;
| uid2&lt;br /&gt;
| Unified ID 2.0&lt;br /&gt;
| &lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | X&lt;br /&gt;
|- style=&amp;quot;vertical-align:middle; background-color:#EFEFEF; color:#222;&amp;quot;&lt;br /&gt;
| uid2_token&lt;br /&gt;
| Unified ID 2.0 token&lt;br /&gt;
| &lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | X&lt;br /&gt;
|- style=&amp;quot;vertical-align:middle; color:#222;&amp;quot;&lt;br /&gt;
| uoo&lt;br /&gt;
| User opt out&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | Mobile&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | X&lt;br /&gt;
|- style=&amp;quot;font-weight:bold; text-align:center; vertical-align:middle; background-color:#FFEBD3; color:#222;&amp;quot;&lt;br /&gt;
| colspan=&amp;quot;4&amp;quot; | Group 3 - Parameters With Required Position in URL&lt;br /&gt;
|- style=&amp;quot;vertical-align:middle; background-color:#ffffff; color:#222;&amp;quot;&lt;br /&gt;
| vpaidURL&lt;br /&gt;
| VPAID Video only: Always the last parameter for video tags.&amp;lt;br /&amp;gt;Either VPAID ad unit URL to be wrapped or empty. If empty, DAR tag will use its own vpaidplayer.js&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | VPAID video tag only&lt;br /&gt;
| &lt;br /&gt;
|- style=&amp;quot;background-color:#f4f5f7;&amp;quot;&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; color:#222;&amp;quot; | vastURL&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; color:#222;&amp;quot; | vWrap Tag only: Always the last parameter for the vWrap tag.&amp;lt;br /&amp;gt;It must contain the URL of the original VAST for the placement.&lt;br /&gt;
| style=&amp;quot;text-align:center; vertical-align:middle; color:#222;&amp;quot; | vWrap tag only&lt;br /&gt;
| &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Additional Parameters == &lt;br /&gt;
This section describes several important additional parameters that the DAR tag can support, specifically Hashed Email, UID2 values, along with Page URL and Bundle Identifier if available. Please note that all parameters are case-sensitive.&lt;br /&gt;
&lt;br /&gt;
Please work with your Nielsen Technical Account Manager to decide which of the following parameters to append to the standard DAR tag.&lt;br /&gt;
=== HEM Support (Hashed Email) ===&lt;br /&gt;
Please use the parameter that matches your hashing algorithm. For example, if you are using sha256 to encode the email address, then use hem_sha256={encrypted_value_here}&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-weight:bold; background-color:#EAECF0;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Name&lt;br /&gt;
! Description&lt;br /&gt;
! Available Tag Parameters&lt;br /&gt;
|- style=&amp;quot;font-weight:normal; background-color:#F8F9FA;&amp;quot;&lt;br /&gt;
| Hashed Email&lt;br /&gt;
| User’s email address that has been run through a hashing algorithm&amp;lt;br /&amp;gt;(e.g. SHA256, MD5, SHA1) to create a unique 32-character hexadecimal string.&amp;lt;br /&amp;gt; If a client is unable to determine hashing type, they should pass&amp;lt;br /&amp;gt;using &amp;amp;hem_unknown parameter.&lt;br /&gt;
| &amp;amp;hem_unknown&amp;lt;br /&amp;gt;&amp;amp;hem_sha256&amp;lt;br /&amp;gt;&amp;amp;hem_md5&amp;lt;br /&amp;gt;&amp;amp;hem_sha1&lt;br /&gt;
|}&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-weight:bold;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background-color:#dae8fc; color:#002041;&amp;quot;&lt;br /&gt;
! Example&lt;br /&gt;
|- style=&amp;quot;font-weight:normal;&amp;quot;&lt;br /&gt;
| hem_sha256=tMmiiTI7IaAcPpQPFQ65uMVCWH8av9jw4cwf/F5HVRQ=&lt;br /&gt;
|}&lt;br /&gt;
=== Unified ID ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;background-color:#F8F9FA;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;font-weight:bold; background-color:#EAECF0;&amp;quot;&lt;br /&gt;
! Name&lt;br /&gt;
! Description&lt;br /&gt;
! Available Tag Parameters&lt;br /&gt;
|-&lt;br /&gt;
| Unified ID 2.0&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)&amp;lt;br /&amp;gt;and is now managed by Prebid.&lt;br /&gt;
| &amp;amp;uid2&lt;br /&gt;
|-&lt;br /&gt;
| Unified ID 2.0 Token&lt;br /&gt;
| Encrypted Unified ID 2.0&lt;br /&gt;
| &amp;amp;uid_token&lt;br /&gt;
|}&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-weight:bold;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background-color:#32BBB9; color:#002041;&amp;quot;&lt;br /&gt;
! Example&lt;br /&gt;
|- style=&amp;quot;font-weight:normal;&amp;quot;&lt;br /&gt;
| uid2=MTKVpUAzwYAPnHrtfE0wlINOMzhU7UUEjjVdCdRu63k=&amp;lt;br /&amp;gt;uid_token=AgAAAAPFR0zA5ogv/yaAPiUsAdZPsfqS8QlDSGxAB+rr8yekFs3AjLYVk5qqqiyV2XHbSuwzHmxSlLeQeKQI1mp015jsNnpX5&amp;lt;br /&amp;gt;/xGgXldcgVz+gFnyh3T8/3agMwRmyrhCxG4oH2C7fc48AQk2eotE7FW0ZDEYM8fD9ZxDaxFUC/OV3OuZA&amp;amp;&lt;br /&gt;
|}&lt;br /&gt;
=== Page and Bundle ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;background-color:#F8F9FA;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;font-weight:bold; background-color:#EAECF0;&amp;quot;&lt;br /&gt;
! Name&lt;br /&gt;
! Description&lt;br /&gt;
! Available Tag Parameters&lt;br /&gt;
|-&lt;br /&gt;
| Page URL&lt;br /&gt;
| Canonical URL of the content where the Ad creative is served. (e.g. https://example.com/news/tech/article.html) &amp;lt;br /&amp;gt;The parameter value has to be encoded with JavaScript’s encodeURIComponent() method or equivalent. &amp;lt;br /&amp;gt;Example: si=https%3A%2F%2Fexample.com%2Fnews%2Ftech%2Farticle.html&lt;br /&gt;
| &amp;amp;si&lt;br /&gt;
|-&lt;br /&gt;
| App Bundle ID&lt;br /&gt;
| The app’s unique bundle ID (e.g. com.example.myapp). The ID can be used to look up the App in Apple’s App Store&amp;lt;br /&amp;gt;or the Google Play Store.&amp;lt;br /&amp;gt;References: https://developer.android.com/studio/build/application-idhttps://developer.apple.com/documentation/appstoreconnectapi/bundle_ids&lt;br /&gt;
| &amp;amp;c68=bndlid&lt;br /&gt;
|}&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-weight:bold;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background-color:#32BBB9; color:#002041;&amp;quot;&lt;br /&gt;
! Example&lt;br /&gt;
|- style=&amp;quot;font-weight:normal;&amp;quot;&lt;br /&gt;
| si=https%3A%2F%2Fexample.com%2Fnews%2Ftech%2Farticle.html&amp;lt;br /&amp;gt;c68=bndlid,com.tam.nielsen.com&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== vWrap apiframework Values== &lt;br /&gt;
&lt;br /&gt;
Nielsen’s vWrap tag uses the existing definition of '''apiframework''' values defined in the IAB’s [https://github.com/InteractiveAdvertisingBureau/AdCOM/blob/master/AdCOM%20v1.0%20FINAL.md#list--api-frameworks- '''AdCOM Specification''' '''1.0''']. This means that existing macros for this parameter in your system should work out of the box with vWrap.&lt;br /&gt;
&lt;br /&gt;
The vWrap tag supports the numerical values in bold below. In case of '''8''' (SIMID), the DAR Video tag will be inserted as a standard OMID verification client for viewability measurement and it will not interfere with any SIMID components in the ad.&lt;br /&gt;
&lt;br /&gt;
If a '''0''' or an empty value is given, the resulting VAST will include both OMID and VPAID measurement solutions. This leaves the decision of the measurement method to the video player, which might be advantageous for mixed campaigns that span mobile and web environments.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-weight:bold;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background-color:#F4F5F7;&amp;quot;&lt;br /&gt;
! Value&lt;br /&gt;
! Definition&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| style=&amp;quot;font-weight:normal;&amp;quot; | VPAID 1.0&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| style=&amp;quot;font-weight:normal;&amp;quot; | VPAID 2.0&lt;br /&gt;
|- style=&amp;quot;font-weight:normal; color:#666;&amp;quot;&lt;br /&gt;
| 3&lt;br /&gt;
| MRAID 1.0&lt;br /&gt;
|- style=&amp;quot;font-weight:normal; color:#666;&amp;quot;&lt;br /&gt;
| 4&lt;br /&gt;
| ORMMA&lt;br /&gt;
|- style=&amp;quot;font-weight:normal; color:#666;&amp;quot;&lt;br /&gt;
| 5&lt;br /&gt;
| MRAID 2.0&lt;br /&gt;
|- style=&amp;quot;font-weight:normal; color:#666;&amp;quot;&lt;br /&gt;
| 6&lt;br /&gt;
| MRAID 3.0&lt;br /&gt;
|-&lt;br /&gt;
| 7&lt;br /&gt;
| style=&amp;quot;font-weight:normal;&amp;quot; | OMID 1.0&lt;br /&gt;
|-&lt;br /&gt;
| 8&lt;br /&gt;
| style=&amp;quot;font-weight:normal;&amp;quot; | SIMID 1.0&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== About Nielsen ==&lt;br /&gt;
&lt;br /&gt;
Nielsen shapes the world’s media and content as a global leader in audience measurement, data and analytics. Through our understanding of people and their behaviors across all channels and platforms, we empower our clients with independent and actionable intelligence so they can connect and engage with their audiences—now and into the future.&lt;br /&gt;
&lt;br /&gt;
An S&amp;amp;amp;P 500 company, Nielsen (NYSE: NLSN) operates around the world in more than 55 countries. Learn more at [http://www.nielsen.com '''www.nielsen.com'''] or [http://www.nielsen.com/investors '''www.nielsen.com/investors'''] and connect with us on social media.&lt;br /&gt;
&lt;br /&gt;
'''Audience Is Everything®'''&lt;/div&gt;</summary>
		<author><name>ColinBrown</name></author>
	</entry>
	<entry>
		<id>https://nielsentest.mywikis.net/w/index.php?title=Digital_Ad_Ratings&amp;diff=5827</id>
		<title>Digital Ad Ratings</title>
		<link rel="alternate" type="text/html" href="https://nielsentest.mywikis.net/w/index.php?title=Digital_Ad_Ratings&amp;diff=5827"/>
		<updated>2022-06-27T18:47:47Z</updated>

		<summary type="html">&lt;p&gt;ColinBrown: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Breadcrumb|}} {{Breadcrumb|Digital}} {{CurrentBreadcrumb}}&lt;br /&gt;
{{CategoryIcon|DAR.png|Digital Ad Ratings (DAR)}}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;width: 90px;&amp;quot; |&lt;br /&gt;
! General Reference&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | {{SmallIcon|DigitalIcon.png}}&lt;br /&gt;
| '''[[Mobile DAR Attributes Requirements]]'''&lt;br /&gt;
|-&lt;br /&gt;
|'''[[iOS SDK App Privacy|App Privacy Details for App Store]]'''&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;width: 90px;&amp;quot; | SDK / API&lt;br /&gt;
! style=&amp;quot;width: 45px;&amp;quot; | OS&lt;br /&gt;
! Guide&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | {{SmallIcon|SDKIcon.png}}&lt;br /&gt;
| {{SmallIcon|BrowserIcon.png}}&lt;br /&gt;
| '''[[DAR Tag Implementation Guide]]'''&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>ColinBrown</name></author>
	</entry>
	<entry>
		<id>https://nielsentest.mywikis.net/w/index.php?title=DAR_Tag_Implementation_Guide&amp;diff=5826</id>
		<title>DAR Tag Implementation Guide</title>
		<link rel="alternate" type="text/html" href="https://nielsentest.mywikis.net/w/index.php?title=DAR_Tag_Implementation_Guide&amp;diff=5826"/>
		<updated>2022-06-27T18:47:11Z</updated>

		<summary type="html">&lt;p&gt;ColinBrown: ColinBrown moved page DAR Browser Implementation to DAR Tag Implementation Guide without leaving a redirect: Changed paged name to better represent content&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Breadcrumb|}} {{Breadcrumb|Digital}} {{Breadcrumb|Digital Ad Ratings}}  {{CurrentBreadcrumb}}&lt;br /&gt;
[[Category:Digital]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Overview ==&lt;br /&gt;
&lt;br /&gt;
=== Background: Nielsen Digital Ad Ratings ===&lt;br /&gt;
Nielsen Digital Ad Ratings is a measurement platform for online advertising campaigns. The platform provides a clear view of the true audience of a campaign, including Reach, Frequency, and GRP statistics by audience demographic group. &lt;br /&gt;
&lt;br /&gt;
The diagram below summarizes how the Nielsen tag measures the ad campaign: &lt;br /&gt;
&lt;br /&gt;
* Advertiser places ads on one or more websites &lt;br /&gt;
* Website displays ad to a user &lt;br /&gt;
* Nielsen tag counts impressions&lt;br /&gt;
&lt;br /&gt;
[[File:DAR-Main-Image2.jpg|center|900px]]&lt;br /&gt;
&lt;br /&gt;
=== Support for Other Nielsen Ad Effectiveness Products ===&lt;br /&gt;
&lt;br /&gt;
The tag used for Nielsen Digital Ad Ratings is compatible for all Nielsen Ad Effectiveness products, including (but not limited to) Brand Effect Extended View, Response Effect, and Sales Effect.&lt;br /&gt;
&lt;br /&gt;
=== User Experience ===&lt;br /&gt;
&lt;br /&gt;
The tags described in this document are used only to measure audience exposure to advertisements; they do not launch a survey, and have no impact on the user experience. Typical response time for the tag is on par with industry standards and because the code executed is simple and fires after the ad loads, they are transparent to the user.&lt;br /&gt;
&lt;br /&gt;
For further information on survey-based products, or any other products, please contact your Client Services Manager.&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
== Available Tag Versions ==&lt;br /&gt;
&lt;br /&gt;
The Nielsen Digital Ad Ratings system offers three basic types of ad tags&lt;br /&gt;
&lt;br /&gt;
* '''Pixel Tag'''&lt;br /&gt;
This is the simplest version of the tag, generally for use by clients who cannot accept JavaScript format tags or have limited options for implementation. It includes encryption, but does not utilize referrer masking.&lt;br /&gt;
&lt;br /&gt;
* '''JavaScript Display Tag'''&lt;br /&gt;
This tag provides impression measurement similar to the pixel tag, but in addition also performs Viewability measurement. It uses Nielsen's proprietary methods to detect the ad unit and to measure ad viewability and can also utilize an existing OM SDK integration for measurement and reporting. It works in web contexts and in-app ad containers.&lt;br /&gt;
&lt;br /&gt;
* '''JavaScript Video Tags''' &lt;br /&gt;
Nielsen's video tag can be utilized via our vWrap service and can be used in both VPAID and OMID environments. It supports OMID in-app and OM Web integrations and provides impression and viewability measurement. For VPAID, it can either wrap an existing VPAID player or can act as its own VPAID ad unit with the MP4s in the VAST file.&lt;br /&gt;
&lt;br /&gt;
=== Tag Examples ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
'''IMAGE Pixel Tag''' (Static example)&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;img src=&amp;quot;http://secure-gl.imrworldwide.com/cgi-bim/m?ci=entXXXX&amp;amp;at=view&amp;amp;rt=banner&amp;amp;am=3&lt;br /&gt;
&amp;amp;ca=cmpXXXX&amp;amp;cr=&amp;amp;pc=plcXXXX&amp;amp;r=[timestamp]&amp;quot;&lt;br /&gt;
width=&amp;quot;1&amp;quot; height=&amp;quot;1&amp;quot; alt=&amp;quot;&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;blockquote&amp;gt;* Currently available in CMI &amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''IMAGE Pixel Tag''' (Macro example)&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;script type=&amp;quot;text/javascript&amp;quot;&lt;br /&gt;
src=&amp;quot;http://secure-gl.imrworldwide.com/cgi-bin/m?ci=entXXXX&amp;amp;am=1&amp;amp;mr=1&amp;amp;ty=js&lt;br /&gt;
&amp;amp;at=view&amp;amp;rt=banner&amp;amp;ep=1&amp;amp;ca=%ebuy!&amp;amp;cr=%ecid!&amp;amp;pc=%epid!&amp;amp;r=[timestamp]&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;blockquote&amp;gt;* Currently available in CMI &amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''JavaScript Display Tag'''&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;script type=&amp;quot;text/javascript&amp;quot; src=&amp;quot;https://dar.imrworldwide.com/js/dar.js?ca=nlsnXXXXXX&lt;br /&gt;
&amp;amp;cr={{AD.ID}}&amp;amp;ce={{PUBLISHER.ID}}&amp;amp;ci=nlsnciXXXX&amp;amp;pc={{PLACEMENT.ID}}&amp;amp;am=3&amp;amp;gdpr=${GDPR}&lt;br /&gt;
&amp;amp;gdpr_consent=${GDPR_CONSENT_812}&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;blockquote&amp;gt;* Currently available in CMI &amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''JavaScript Video Tag vWrap URL'''&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;html&amp;quot;&amp;gt;&lt;br /&gt;
https://vwrap.imrworldwide.com/v1/wrap?ca=nlsnxxxxxx&amp;amp;cr=AD.ID&amp;amp;ce=PUBLISHER.ID&amp;amp;&lt;br /&gt;
pc=PLACEMENT.ID&amp;amp;ci=nlsncixxxx&amp;amp;am=4&amp;amp;autop=(value)&amp;amp;autof=(value)&amp;amp;vastURL=[original-VAST-URL]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;blockquote&amp;gt;** Please reach out to your TAM for this implementation&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''JavaScript Video Tag vWrap URL - Mobile'''&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;html&amp;quot;&amp;gt;&lt;br /&gt;
https://vwrap.imrworldwide.com/v1/wrap?ca=nlsnXXXXXX&amp;amp;cr={{AD.ID}}&amp;amp;ce={{PUBLISHER.ID}}&amp;amp;&lt;br /&gt;
pc={{PLACEMENT.ID}}&amp;amp;ci=nlsnciXXXX&amp;amp;am=4&amp;amp;c9={{devid,Advertising_ID}}&amp;amp;c13={{asid,app_id}}&lt;br /&gt;
&amp;amp;apiframework={{APIFRAMEWORK}}&amp;amp;vastURL={{ORIGINAL_VAST_URL}}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;blockquote&amp;gt;** Please reach out to your TAM for this implementation&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The Nielsen Digital Ad Ratings system also features the ability to record Viewability information such as: How long an Ad has been visible on the screen, and what portion on the Ad. This is an additional feature that can be purchased from your Nielsen Client Services Representative.&lt;br /&gt;
&lt;br /&gt;
Viewability for display ads can ONLY be offered through the JavaScript tags.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;The above tags are just examples and should not be placed in any live site or ad server. You will be provided with tags specifically designed for your media plan/campaign or be able to download tags after creation in CMI (Campaign Management Interface)&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== DAR Pixel Tag Parameters ==&lt;br /&gt;
The DAR tag is available as a 1x1 pixel. The following pixel/tag parameters must be specified for all DAR tags, 1x1, regardless of implementation type: browser, mobile browser, mobile app or connected device.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
! Tag Parameter&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| CI&lt;br /&gt;
| Client ID: the ID that is associated with the DAR account that processed tag data is associated with. Will always be hardcoded to a Nielsen generated value that comes from the Nielsen campaign management system&lt;br /&gt;
|- style=&amp;quot;background-color:#eff8ef;&amp;quot;&lt;br /&gt;
| AM&lt;br /&gt;
| Ad Server: an ad server participating on the campaign media-plan. This is an internal Nielsen generated value when the ad server is indicated on the campaign during setup&lt;br /&gt;
|-&lt;br /&gt;
| CA&lt;br /&gt;
| Campaign Id: this is the ID associated with your DAR campaign. Unless you are creating and managing the Nielsen campaign via the DAR Tag API, then this parameter value will always be generated from the Nielsen campaign management system. Note: often maps to a media-plan I/O Id&lt;br /&gt;
|- style=&amp;quot;background-color:#eff8ef;&amp;quot;&lt;br /&gt;
| CR&lt;br /&gt;
| Creative Id: DAR does not currently report at the creative level; can be hard coded ad server id or associated with a macro expansion&lt;br /&gt;
|-&lt;br /&gt;
| PC&lt;br /&gt;
| Placement Id: can be generated by the ad server via macro expansion or generated by the Nielsen campaign management system. Note: often maps to one of Ad Unit Id, Line Item Id or Video Ad Id&lt;br /&gt;
|- style=&amp;quot;background-color:#eff8ef;&amp;quot;&lt;br /&gt;
| CE&lt;br /&gt;
| Site Id: the Id that identifies a publisher site that the placement needs to be mapped to. Maps into the Nielsen MarketView database. Note: can be hardcoded to a pre-registered ad server site id in the Nielsen system or a macro expansion where more than one pre-existing site ids have been made known to Nielsen&lt;br /&gt;
|-&lt;br /&gt;
| R&lt;br /&gt;
| Cachebuster (web): timestamp / random number. Generated by ad server&lt;br /&gt;
|- style=&amp;quot;background-color:#eff8ef;&amp;quot;&lt;br /&gt;
| AT&lt;br /&gt;
| Fixed value: “view”&lt;br /&gt;
|-&lt;br /&gt;
| RT&lt;br /&gt;
| Fixed value: “banner”&lt;br /&gt;
|- style=&amp;quot;background-color:#eff8ef;&amp;quot;&lt;br /&gt;
| ST&lt;br /&gt;
| Fixed value: “image”&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;blockquote&amp;gt; Do not URL encode the values&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Additional Parameters ==&lt;br /&gt;
In this section we describe the additional parameters that the DAR tag can support, specifically Hashed Email, UID2 values, along with Page URL and Bundle Identifier if available.  Please work with your Nielsen Technical Account Manager on deciding which of the following parameters to append to the standard DAR tag.  &lt;br /&gt;
&lt;br /&gt;
'''Web Browser DAR tag (cookie based persons identification)'''&lt;br /&gt;
&lt;br /&gt;
[https://secure-gl.imrworldwide.com/cgi-bin/m?ci=nlsnci535&amp;amp;am=3&amp;amp;at=view&amp;amp;rt=banner&amp;amp;st=image&amp;amp;ca=nlsn12452&amp;amp;cr=crtve&amp;amp;pc=nlsn_plc0001&amp;amp;ce=000&amp;amp;r=34245454 https://secure-gl.imrworldwide.com/cgi-bin/m?ci=nlsnci535&amp;amp;am=3&amp;amp;at=view&amp;amp;rt=banner&amp;amp;st=image&amp;amp;ca=nlsn12452&amp;amp;cr=crtve&amp;amp;pc=&amp;lt;creativeid&amp;gt;_plc0001&amp;amp;ce=&amp;lt;siteid&amp;gt;&amp;amp;r=&amp;lt;timestamp&amp;gt;]&lt;br /&gt;
&lt;br /&gt;
'''Web Browser PLUS tag'''&lt;br /&gt;
&lt;br /&gt;
[http://secure-gl.imrworldwide.com/cgi-bin/m?ci=nlsnci535&amp;amp;am=3&amp;amp;at=view&amp;amp;rt=banner&amp;amp;st=image&amp;amp;ca=nlsn12452&amp;amp;cr=crtve&amp;amp;pc=554554_plc0001&amp;amp;ce=0000 http://secure-gl.imrworldwide.com/cgi-bin/m?ci=nlsnci535&amp;amp;am=3&amp;amp;at=view&amp;amp;rt=banner&amp;amp;st=image&amp;amp;ca=nlsn12452&amp;amp;cr=crtve&amp;amp;pc=&amp;lt;creativeid&amp;gt;_plc0001&amp;amp;ce=0000]&amp;amp;hem_sha256=&amp;lt;value&amp;gt;&amp;amp;uid2=&amp;lt;value&amp;gt;&amp;amp;uid_token=&amp;lt;value&amp;gt;&amp;amp;si=&amp;lt;value&amp;gt;c68=bndlid,com.tam.nielsen.com&lt;br /&gt;
&lt;br /&gt;
=== HEM Support (Hashed Email) ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|- &lt;br /&gt;
! NAME&lt;br /&gt;
! DESCRIPTION&lt;br /&gt;
! AVAILABLE TAG PARAMETERS&lt;br /&gt;
|-&lt;br /&gt;
|  style=&amp;quot;width: 15%&amp;quot;| Hashed Email &lt;br /&gt;
| User’s email address that has been run through a hashing algorithm (e.g. SHA256, MD5, SHA1) &amp;lt;/br&amp;gt; to create a unique 32-character hexadecimal string. If a client is unable to determine hashing type, they should pass using &amp;amp;hem_unknown parameter.&lt;br /&gt;
|style=&amp;quot;width: 20%&amp;quot;|&amp;lt;code&amp;gt;&amp;amp;hem_unknown&amp;lt;/code&amp;gt;&amp;lt;/br&amp;gt;&amp;lt;code&amp;gt;&amp;amp;hem_sha256&amp;lt;/code&amp;gt;&amp;lt;/br&amp;gt;&amp;lt;code&amp;gt;&amp;amp;hem_md5&amp;lt;/code&amp;gt;&amp;lt;/br&amp;gt;&amp;lt;code&amp;gt;&amp;amp;hem_sha1&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;Please use the parameter that matches your hashing algorithm.&amp;lt;br&amp;gt; For example, if you are using sha256 to encode the email address, then use &amp;lt;code&amp;gt;hem_sha256={encrypted_value_here}&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
Example:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
hem_sha256=tMmiiTI7IaAcPpQPFQ65uMVCWH8av9jw4cwf/F5HVRQ=&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Unified ID ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|- &lt;br /&gt;
! NAME&lt;br /&gt;
! DESCRIPTION&lt;br /&gt;
! AVAILABLE TAG PARAMETERS&lt;br /&gt;
|-&lt;br /&gt;
|  style=&amp;quot;width: 15%&amp;quot;| Unified ID 2.0&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)&amp;lt;/br&amp;gt; and is now managed by Prebid.&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;amp;uid2&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| Unified ID 2.0 Token&lt;br /&gt;
| Encrypted Unified ID 2.0&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;amp;uid_token&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
uid2=MTKVpUAzwYAPnHrtfE0wlINOMzhU7UUEjjVdCdRu63k=&lt;br /&gt;
uid_token=AgAAAAPFR0zA5ogv/yaAPiUsAdZPsfqS8QlDSGxAB+rr8yekFs3AjLYVk5qqqiyV2XHbSuwzHmxSlLeQeKQI1mp015jsNnpX5/xGgXldcgVz+gFnyh3T8/3agMwRmyrhCxG4oH2C7&lt;br /&gt;
fc48AQk2eotE7FW0ZDEYM8fD9ZxDaxFUC/OV3OuZA&amp;amp;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Page and Bundle ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|- &lt;br /&gt;
! NAME&lt;br /&gt;
! DESCRIPTION&lt;br /&gt;
! AVAILABLE TAG PARAMETERS&lt;br /&gt;
|-&lt;br /&gt;
|  style=&amp;quot;width: 15%&amp;quot;|Page URL&lt;br /&gt;
|  style=&amp;quot;width: 65%&amp;quot;| Canonical URL of the content where the Ad creative is served. (e.g. https://example.com/news/tech/article.html) The parameter value has to be encoded with JavaScript’s encodeURIComponent() method or equivalent. &amp;lt;br /&amp;gt;Example: si=https%3A%2F%2Fexample.com%2Fnews%2Ftech%2Farticle.html&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;amp;si&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| App Bundle ID&lt;br /&gt;
| The app’s unique bundle ID (e.g. com.example.myapp). The ID can be used to look up the App in Apple’s App Store&amp;lt;/br&amp;gt; or the Google Play Store. References:https://developer.android.com/studio/build/application-idhttps://developer.apple.com/documentation/appstoreconnectapi/bundle_ids&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;amp;c68=bndlid,&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&amp;lt;syntaxhighlight&amp;gt;&lt;br /&gt;
si=https%3A%2F%2Fexample.com%2Fnews%2Ftech%2Farticle.html&lt;br /&gt;
c68=bndlid,com.tam.nielsen.com&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Supported Creative Types ==&lt;br /&gt;
&lt;br /&gt;
For consistency, Nielsen recommends tagging as much of the campaign creative types as possible, including site-served elements. '''Note:''' Nielsen may need to review/test on a case-by-case basis.&lt;br /&gt;
&lt;br /&gt;
Nielsen Digital Ad Ratings supports banner ads, rich media and video units that are capable of being tagged with a 3rd party tracking pixel.&lt;br /&gt;
&amp;lt;blockquote&amp;gt;Some examples of non-standard campaign items that may be tagged include:&lt;br /&gt;
* microsite pages&lt;br /&gt;
* site “skins’”&lt;br /&gt;
* online mini-games&lt;br /&gt;
* streaming video&lt;br /&gt;
* pre-roll video banners&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
Most often, these items will need to be site served and our pixel will need to be provided to the site to implement directly.&lt;br /&gt;
&amp;lt;blockquote&amp;gt;The following are items not tagged:&lt;br /&gt;
* click command/text links&lt;br /&gt;
* default/backup ads in a 3rd party ad server&lt;br /&gt;
* static ‘logo’ creatives&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Digital Ad Ratings Viewability Solution: All standard ad units listed under [http://www.iab.net/displayguidelines Universal Ad Package (UAP)] on are supported for Viewability.&lt;br /&gt;
&lt;br /&gt;
Placements and sites that cannot support JavaScript cannot support Viewability.&lt;br /&gt;
&lt;br /&gt;
== Share Your Delivered Impressions ==&lt;br /&gt;
&lt;br /&gt;
=== Why the Media Plan is Needed ===&lt;br /&gt;
&lt;br /&gt;
Knowing the delivered impressions also helps Nielsen run automated QA checks, for example triggering alerts when data does not appear for a placement on an expected date. This ensures overall quality, and reduces errors in the tagging process.&lt;br /&gt;
&lt;br /&gt;
It is the responsibility of the client to send Nielsen an impression delivery report, generally known as the “ad server report.” Nielsen can provide the client with a template with the inputs required to complete the quality checks. If the client does not send these reports, Nielsen will not be able to complete the quality checks. Below are instructions on how to send these reports to Nielsen.&lt;br /&gt;
&lt;br /&gt;
=== How to Share Your Delivered impressions ===&lt;br /&gt;
&lt;br /&gt;
Set up an automated daily report from your ad server containing Site Name, Site ID, Placement Name, Placement ID, and data date.&lt;br /&gt;
&lt;br /&gt;
A secondary method to share your media plan information is to grant Nielsen “Reporting access” to your campaign in the designated ad server (such as DCM). To do this, simply grant the login [http://mailto:clientreporting@nielsen.com clientreporting@nielsen.com] access. In doing so Nielsen can directly access your media plan information, which enables us to check for updates, and reconcile any&amp;lt;br /&amp;gt;&lt;br /&gt;
discrepancies.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;Please note that Nielsen is currently in discussions with several leading Ad Servers regarding direct integration between Nielsen and the ad server platforms. Once completed this could someday enable Nielsen to retrieve Media Plans on a completed automated basis.&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Apply the Tag ==&lt;br /&gt;
=== Tag Generation===&lt;br /&gt;
&lt;br /&gt;
Your Nielsen representative will walk you through the Campaign Management Interface so that you can download tags at will at any point in the campaign.&lt;br /&gt;
&lt;br /&gt;
Nielsen supports macro-based tag generation for several major ad servers. Nielsen’s Technical Account Manager (TAM) can assist you in leveraging macro-based tags.&lt;br /&gt;
&lt;br /&gt;
=== Tag Application ===&lt;br /&gt;
&lt;br /&gt;
Apply the tag according to the 3rd party tracking pixel specifications of your ad server. If additional guidance is needed, please consult with the Technical Account Manager (TAM) for more specific instructions or recommendations, if available.&lt;br /&gt;
&lt;br /&gt;
==== Special Note: DAR Pixel Tags for Video ====&lt;br /&gt;
Nielsen’s recommended “Best Practice” for tagging your video ads is to apply the Digital Ad Ratings tag as close to the beginning of the video as possible and after initiation of the ad stream, when the ad itself begins to appear on the user’s browser, closest to the opportunity to see. To ensure video content initiates during Digital Ad Ratings measurement, tags should always be placed post buffer. Recognizing that it’s not always possible to give the Nielsen pixel priority positioning, please be aware that the placement of the tag should be discussed with the publisher/advertiser counterparty so that both sides agree on the measurement approach.&lt;br /&gt;
&lt;br /&gt;
==== Special Note: Video Auto-Play and Auto-Refresh ====&lt;br /&gt;
In accordance with MRC requirements, Clients must append “autop” parameter to detect click to play vs auto-play to their video tags. To detect auto-refresh (page refresh), “autof” parameter must be included (not limited to video tags).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=javascript&amp;gt;&lt;br /&gt;
&amp;lt;img src=&amp;quot;http://secure-gl.imrworldwide.com/cgi-bim/m?ci=entXXXX&amp;amp;at=view&amp;amp;rt=banner&amp;amp;am=3&amp;amp;ca=cmpXXXX&amp;amp;cr=&amp;amp;pc=plcXXXX&amp;amp;&lt;br /&gt;
autop=(value)&amp;amp;autof=(value)&amp;amp;r=[timestamp]&amp;quot; width=&amp;quot;1&amp;quot; height=&amp;quot;1&amp;quot; alt=&amp;quot;&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
| '''autop'''&lt;br /&gt;
|A value of 1 will be passed when Auto-Play is detected. (e.g. autop=1)&amp;lt;br&amp;gt;A value of 2 will be passed when Click-to-Play is detected. (e.g. autop=2)&amp;lt;br&amp;gt;When no value or parameter is not present, impressions are labeled as Unknown Play.&lt;br /&gt;
|-&lt;br /&gt;
| '''autof'''&lt;br /&gt;
|A value of 1 will be passed when Auto-Refresh is detected. (e.g. autor=1)&amp;lt;br /&amp;gt;When no value or parameter is not present, impressions are labeled as Unknown Refresh.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Special Note for Video Viewability Implementation ====&lt;br /&gt;
* Nielsen does not support any Flash based video players for viewability measurement.&lt;br /&gt;
* The ad and tag must be in the same division (div tag) in order to track Viewability&lt;br /&gt;
* Video:&lt;br /&gt;
** VPAID compliant players&lt;br /&gt;
** HTML5 Players (Flash not supported)&lt;br /&gt;
** VPAID or mp4 creative&lt;br /&gt;
** Video player must support VPAID and mp4&lt;br /&gt;
&lt;br /&gt;
==== Viewability Base URL &amp;amp;amp; Ping Paths ====&lt;br /&gt;
&amp;lt;code&amp;gt; events.imrworldwide.com/VALUE?... &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== JavaScript Ping Path Values ====&lt;br /&gt;
&lt;br /&gt;
'''Display Tag:'''&lt;br /&gt;
* /cgi-bin/m - DAR Main Ping&lt;br /&gt;
* /imp - Impression Ping&lt;br /&gt;
* /nmp - Measure Ping&lt;br /&gt;
* /psp - Primary Standard Ping&lt;br /&gt;
* /1sp - 1 Second Ping&lt;br /&gt;
* /5sp - 5 Second Ping&lt;br /&gt;
* /15sp - 15 Second Ping&lt;br /&gt;
* /120sp - 120 Second Ping&lt;br /&gt;
* /fp - Final Ping&lt;br /&gt;
* /er - Error Ping&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Video Tag'''&lt;br /&gt;
* /cgi-bin/m - DAR Main Ping&lt;br /&gt;
* /imp - Impression Ping&lt;br /&gt;
* /nmp - Measure Ping&lt;br /&gt;
* /psp - Primary Standard Ping&lt;br /&gt;
* /qp - Quarterly Ping (25%/50%/75%/100%)&lt;br /&gt;
* /fp - Final Ping&lt;br /&gt;
* /er - Error Ping&lt;br /&gt;
&lt;br /&gt;
==== Nielsen DAR Tag/VPAID Query Strings ====&lt;br /&gt;
&lt;br /&gt;
'''Measure Ping'''&lt;br /&gt;
&amp;lt;syntaxhighlight lang=html&amp;gt;&lt;br /&gt;
/nmp?impid=VALUE&amp;amp;ca=VALUE&amp;amp;cr=VALUE&amp;amp;pc=VALUE&amp;amp;ci=VALUE&amp;amp;am=VALUE&amp;amp;ce=VALUE&amp;amp;cy=VALUE&lt;br /&gt;
&amp;amp;at=view&amp;amp;st=image&amp;amp;mr=1&amp;amp;ty=js&amp;amp;rt=banner&amp;amp;meas=VALUE&amp;amp;rend=VALUE&amp;amp;ss=VALUE&lt;br /&gt;
&amp;amp;vp=VALUE&amp;amp;as=VALUE&amp;amp;al=VALUE&amp;amp;diag=VALUE&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Primary Standard Ping'''&lt;br /&gt;
&amp;lt;syntaxhighlight lang=html&amp;gt;&lt;br /&gt;
/psp?impid=VALUE&amp;amp;vs=VALUE&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Quarterly Ping (25%)'''&lt;br /&gt;
&amp;lt;syntaxhighlight lang=html&amp;gt;&lt;br /&gt;
/qp?impid=VALUE&amp;amp;qpc=25&amp;amp;src=njs&amp;amp;diag=VALUE&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Finish Ping'''&lt;br /&gt;
&amp;lt;syntaxhighlight lang=html&amp;gt;&lt;br /&gt;
/fp?impid=VALUE&amp;amp;vs=VALUE&amp;amp;ss=VALUE&amp;amp;vp=VALUE&amp;amp;as=VALUE&amp;amp;al=VALUE&amp;amp;vts=VALUE=&amp;amp;ats=VALUE==&amp;amp;diag=VALUE&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Error Ping'''&lt;br /&gt;
&amp;lt;syntaxhighlight lang=html&amp;gt;&lt;br /&gt;
/er?impid=VALUE&amp;amp;amp;ca=VALUE&amp;amp;amp;ci=VALUE&amp;amp;amp;cr=VALUE&amp;amp;amp;ce=VALUE&lt;br /&gt;
&amp;amp;amp;pc=VALUE&amp;amp;amp;am=VALUE&amp;amp;amp;ercd=VALUE&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Workflow and Tag Requirements for Nielsen Viewability with Qualified Ad Audience ===&lt;br /&gt;
The following steps represent the tag/data flow between the publisher and Nielsen, through to final reporting.&lt;br /&gt;
&amp;lt;blockquote&amp;gt; Please note that the assigned values for &amp;lt;code&amp;gt;CA, CI, AM, AM, PC and CR &amp;lt;/code&amp;gt; in the example tags below are for illustrative purposes only to demonstrate the VW viewability state tag token. These values will need to be replaced with client specific data and/or macros specific to the ad serving situation.&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
# Ad creative exposed to the user&amp;lt;br /&amp;gt;&lt;br /&gt;
# Ad Server technology fires DAR tag on the publisher site&amp;lt;br /&amp;gt;&lt;br /&gt;
# Viewable state detected by Nielsen technology on publisher property; tag/signal sent to Nielsen collection system&amp;lt;br /&amp;gt;&lt;br /&gt;
# Nielsen collection system generates and executes the DAR tag with one of the following viewable states.&lt;br /&gt;
# DAR data processing and reporting aggregates viewable impression states by campaign, placement and demographic attribution.&lt;br /&gt;
&lt;br /&gt;
=== Workflow and Pixel Tag Requirements for 3rd Party Viewability ===&lt;br /&gt;
The following steps represent the tag/data flow between publisher, Nielsen and the 3rd party viewability vendor (hereafter referred to as “vendor”), through to final reporting.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;Please note that the assigned values for CA, CI, AM, AM, PC and CR in the example tags below are for illustrative purposes only to demonstrate the VW viewability state tag token. These values will need to be replaced with client specific data and/or macros specific to the ad serving situation.&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Requirements'''&lt;br /&gt;
* Ad creative exposed to the user&amp;lt;br /&amp;gt;&lt;br /&gt;
*  Vendor technology fires DAR tag on the publisher site&lt;br /&gt;
&amp;lt;syntaxhighlight lang=html&amp;gt;&lt;br /&gt;
http://secure-gl.imrworldwide.com/cgi-bin/m?ci=[clientid]&amp;amp;amp;am=[AdserverId]&amp;amp;amp;at=view&lt;br /&gt;
&amp;amp;amp;rt=banner&amp;amp;amp;st=image&amp;amp;amp;ca=[campaignId]&amp;amp;amp;cr=[creativeId/macro]&lt;br /&gt;
&amp;amp;amp;pc=[placementId/macro]&amp;amp;amp;r=[timestamp]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
*  Viewable state detected by vendor detection technology (i.e. vendor Javascript containertag) on publisher property; tag/signal sent to vendor collection system&lt;br /&gt;
*  Vendor collection system generates and executes the DAR tag with one of the following viewable state (see highlight) embedded&lt;br /&gt;
&lt;br /&gt;
==== onMeasureable ====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=html&amp;gt;&lt;br /&gt;
http://secure-gl.imrworldwide.com/cgi-bin/int?ci=[clientid]&amp;amp;amp;am=[AdserverId]&amp;amp;amp;at=view&lt;br /&gt;
&amp;amp;amp;rt=banner&amp;amp;amp;st=image&amp;amp;amp;ca=[campaignI d]&amp;amp;amp;cr=[creativeId/macro]&amp;amp;amp;pc=&lt;br /&gt;
[amvalue]_[placementId/macro]&amp;amp;amp;vw=meas&amp;amp;amp;r=[timestamp]&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== onInViewMRC ====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=html&amp;gt;&lt;br /&gt;
http://secure-gl.imrworldwide.com/cgi-bin/int?ci=[clientid]&amp;amp;amp;am=[AdserverId]&amp;amp;amp;at=view&lt;br /&gt;
&amp;amp;amp;rt=banner&amp;amp;amp;st=image&amp;amp;amp;ca=[campaignId]&amp;amp;amp;cr=[creativeId/macro]&lt;br /&gt;
&amp;amp;amp;pc=[amvalue]_[placementId/macro]&amp;amp;amp;vw=view&amp;amp;amp;r=[timestamp ]&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
==== onSuspicious====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=html&amp;gt;&lt;br /&gt;
http://secure-gl.imrworldwide.com/cgi-bin/int?ci=[clientid]&amp;amp;amp;am=[AdserverId]&amp;amp;amp;at=view&lt;br /&gt;
&amp;amp;amp;rt=banner&amp;amp;amp;st=image&amp;amp;amp;ca=[campaignI d]&amp;amp;amp;cr=[creativeId/macro]&lt;br /&gt;
&amp;amp;amp;pc=[amvalue]_[placementId/macro]&amp;amp;amp;vw=susp&amp;amp;amp;r=[timestamp ]&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*  DAR data processing and reporting aggregates viewable impression states by campaign, placement and demographic attribution.&lt;br /&gt;
&amp;lt;blockquote&amp;gt;'''Special Note for Nielsen Viewability with Qualified Ad Audience:''' Primary owner of campaign must provide assigned Technical Account Manager (TAM) VPAID tags per site/placement in order for VAST Wrapper to be delivered back to primary owner for implementation within their respective ad server, CMS, video serving platform, etc.&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;'''Special Note for Server Side Dynamic Ad Insertion:''' In cases where Server Side Dynamic Ad Insertion (SSDAI) is present, the Nielsen tag cannot execute unless the client side video player is coded to fire impression pixels when ads play. When this happens, all of the existing specifications for tag format, time, and criteria of execution (i.e. on play of ad) previously documented must be followed.&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== QA Testing the Tag ==&lt;br /&gt;
&lt;br /&gt;
Nielsen’s Technical Account Manager (TAM) will coordinate a plan to test fire tags in advance of the campaign go-live date.&lt;br /&gt;
&lt;br /&gt;
In order to test the implementation of the Nielsen tag, at least one or two (more are&amp;lt;br /&amp;gt;&lt;br /&gt;
recommended) live URLs should be provided to the TAM. If a live page cannot be made available, at staging page or offline test page should be provided. The object of this is so that the TAM can see the Nielsen call being made live, exactly as it has been implemented, to verify all of the values expected – dynamic and static - are in the tag. A spot check of a couple of placements should be sufficient unless otherwise requested. In lieu of an actual test page, we may recommend you provide a screenshot of you testing the implementation from your end, showing the Nielsen call exactly as it is being called.&lt;br /&gt;
&lt;br /&gt;
Additionally, we will verify that the tags delivered have begun to receive data once the campaign actually goes live and will regularly (every 7-14 days, minimally) compare the Nielsen reporting to your 3rd party or publisher reporting to ensure we are capturing all of the data for all of the placements, as expected, and that the overall gap between your reporting and the Nielsen reporting is kept to a minimum.&lt;br /&gt;
&lt;br /&gt;
=== Confirmation Steps ===&lt;br /&gt;
* Open Chrome browser and enable “Developer Tools” (shortcuts: PC, “F12” - Mac, “Command+Option+I”)&lt;br /&gt;
* Paste test page into browser URL field&lt;br /&gt;
* Toggle to the “Network” tab (to isolate the DAR ping you can use “imr” into the filter box). If the DAR tag does not appear, refresh the page.&lt;br /&gt;
&amp;lt;blockquote&amp;gt;NOTE - Other browsers or debugging tools can also be used as an alternative.&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== DAR Pixel Tag Campaigns ====&lt;br /&gt;
* Confirm that the DAR Main ping (/cgi-bin/m) has call status 302, this ensures a redirect has been made to our Data Enrichment Provider &lt;br /&gt;
* Clicking on the ping URL and navigating to the “Headers” tab will allow you to better evaluate tag construction &lt;br /&gt;
* The “Query String” section will disclose the tag parameter Confirm these values are displaying as expected&lt;br /&gt;
&amp;lt;blockquote&amp;gt;NOTE - If ad server macro tokens are used, please ensure they are expanding properly &amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== DAR JavaScript Tag Campaigns ====&lt;br /&gt;
Generally, the steps are same as the above except for the following:&lt;br /&gt;
* If the player makes the DAR main call &amp;lt;code&amp;gt;(/cgi-bin/m)&amp;lt;/code&amp;gt;, it will have status 302, but if our JavaScript tag is responsible for the main ping, the status will be 200. The player makes the call if the DAR JavaScript has been called with &amp;lt;code&amp;gt;darsup=1&amp;lt;/code&amp;gt;.&lt;br /&gt;
* If the test page is set up correctly, you should also see Viewability pings - at the very least there should be an /nmp ping&lt;br /&gt;
* If there is a &amp;lt;code&amp;gt;/nmp&amp;lt;/code&amp;gt; ping, check the &amp;lt;code&amp;gt;meas&amp;lt;/code&amp;gt; parameter. It will be &amp;lt;code&amp;gt;meas=1&amp;lt;/code&amp;gt; if our tag is able to measure viewability in the given ad slot.&lt;br /&gt;
&lt;br /&gt;
== Managing Campaign Updates ==&lt;br /&gt;
&lt;br /&gt;
As part of the campaign monitoring process, your Nielsen TAM will stay in close contact with you throughout the campaign, including scheduling periodic check-ins to check on the campaigns (approximately every 7-14 days, but could be more often, as needed). If you have provided reporting access to the campaign via your 3rd party or have scheduled a report to be delivered on a regular (weekly) basis, this can significantly expedite the monitoring of your campaign.&lt;br /&gt;
&lt;br /&gt;
If you have any questions regarding setting up the reporting to be delivered, fields that will need to be included, etc., please reach out to the TAM assigned to your campaign. If not providing direct access to reporting, please schedule reporting to be delivered on a weekly basis.&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Frequently Asked Questions ==&lt;br /&gt;
&lt;br /&gt;
'''What is a tag?'''&lt;br /&gt;
&lt;br /&gt;
For our purposes, a tag is an HTML code that is placed directly on a website or inside a 3rd party ad server to track exposure to an online advertisement. Adding the Nielsen tag to the banners/videos/etc. is referred to in general as ‘tagging a campaign’.&lt;br /&gt;
&lt;br /&gt;
'''What is served by the Nielsen tag?'''&lt;br /&gt;
&lt;br /&gt;
The tag call is a simple 1x1 pixel image call. There is not a survey delivered at the time of ad call so this is not intrusive to the end user and should not adversely affect site page load times. &lt;br /&gt;
&lt;br /&gt;
'''What should be tagged?'''&lt;br /&gt;
&lt;br /&gt;
As much of the campaign that can be tagged, should be, for consistency. In most cases, we generally do not tag items such as: click command/text links, default/backup ads in a 3rd party ad server, or static ‘logo’ creatives. Whenever possible, we will request that you attempt to tag all other creative types, including site-served elements.&lt;br /&gt;
&lt;br /&gt;
'''Is there a way to differentiate between video “auto-play” and “click-to-play” impressions?'''&lt;br /&gt;
&lt;br /&gt;
The Nielsen pixel does not gather this type of granularity if the events are both sharing the same ad server placement ID. If it is desirable to compare the performance between these two events, our recommendation is to traffic these as individual placements within your ad serving&amp;lt;br /&amp;gt;&lt;br /&gt;
technology.&lt;br /&gt;
&lt;br /&gt;
'''What is the best way to add the Nielsen tag to my campaign?'''&lt;br /&gt;
&lt;br /&gt;
The Nielsen pixel should be called as close to the same time as the banner ad/creative element on which you would like to track exposure. Typically, this is handled by placing our tag inside a 3rd party ad server, such as Google’s DCM or a Rich Media vendor, such as PointRoll. However, if need be, our tag can be placed directly on a site page, immediately after the ad call in the same &amp;amp;lt;/div&amp;amp;gt; as the creative file. Further instruction can be provided on the kickoff call or we can work directly with trafficking contact(s) to get the tags in place.&lt;br /&gt;
&lt;br /&gt;
'''Do we need to use a 3rd party ad server to use the Nielsen tag?'''&lt;br /&gt;
&lt;br /&gt;
The short answer is no. In a lot of cases, we have provided a tag that can be implemented directly on a site. The benefit of placing our tag inside a 3rd party ad server is that we can provide a single tag (or minimal number of tags) that contain macros to simplify the tagging process.&lt;br /&gt;
&lt;br /&gt;
'''Is there anything that can’t be tagged?'''&lt;br /&gt;
&lt;br /&gt;
We may need to review/test on a case-by-case basis, but realistically most campaign elements can be tagged. Most often, these items will need to be site served and our pixel will need to be provided to the site to implement directly. Some examples of non-standard campaign items that have been tagged before include: microsite pages, site ‘skins’, online mini-games, streaming video, pre-roll video banners.&lt;br /&gt;
&lt;br /&gt;
'''The site has told us that they can accept only one pixel for the site served element. Can we append your tag to the end of ours?'''&lt;br /&gt;
&lt;br /&gt;
If you are serving a DCM 1x1 pixel to track these elements of your campaign, we have a method for placing our tag behind this call, to be served as a redirect. For other situations, we may need to discuss further and consider other options.&lt;br /&gt;
&lt;br /&gt;
'''I’m using more than one Nielsen study/product on this campaign. Will I need multiple/different tags for each?'''&lt;br /&gt;
&lt;br /&gt;
You should not need separate tags for each study. To keep the tagging process simple, we have designed our products so that a single tag can be used for multiple online studies, however, your TAM needs to be informed of all studies before launch so that they can be enabled.&lt;br /&gt;
&lt;br /&gt;
'''How much detail can be tracked with the Nielsen tag?'''&lt;br /&gt;
&lt;br /&gt;
Typically, we do an overall read for these studies, but we can segment the data by site, placement, ad size or creative, for example. If more granular data is desired, this should be discussed ahead of the campaign launch and planned for at the time of tag creation. ''We cannot segment the data if we have not tagged for it''​ -- multiple tags will need to be created and implemented properly. Note that this can often be a time consuming process for the client trafficker and additional time should be allotted if this is needed. Lastly, keep in mind that exposure sample size may be a factor for segmenting the data at a more granular level.&lt;br /&gt;
&lt;br /&gt;
'''Why is it recommended to implement a timestamp or random number on the tag?''' This value will ensure that the tag call will not be cached on a user’s browser. It’s not absolutely necessary to implement for the tag to work, but without it you may see a larger gap between the impressions ran and what Nielsen captures. It is recommended to minimize this gap.&lt;br /&gt;
&lt;br /&gt;
'''For campaigns involving Facebook, what can’t be tagged on their site?'''&lt;br /&gt;
&lt;br /&gt;
Fan/Like pages are not allowed to be tagged, per Facebook. Additionally, Marketplace slots are not allowed to be tagged as these are user generated ads.&lt;br /&gt;
&lt;br /&gt;
'''What if it is not possible to provide a test or staging page before launch?'''&lt;br /&gt;
&lt;br /&gt;
While not ideal, we can view raw impression numbers on the day of the launch as well as review a live example if a URL is provided. Another option would to test from the client/site side and provide a screenshot of the Nielsen call being made using a proxy tool (HTTPWatch, Fiddler, Charles, etc.) – prior to launch. The aim either way is to minimize missing impressions for your campaign, so it is in your best interest to provide for this testing if you can.&lt;br /&gt;
&lt;br /&gt;
'''What is considered to be an acceptable gap in reporting?'''&lt;br /&gt;
&lt;br /&gt;
In a perfect world, we’d like to see no gap in the numbers. We realize this is simply not possible – it is a factor of the Internet and having different counting methodologies, so we will aim for the lowest overall gap we can. Even with everything trafficked correctly; it is not uncommon to see gaps in the range of 5 to 10%, so we shoot for this range (if it’s lower than that, that’s great). If it’s greater than 10%, it usually indicates that there was something that was missed from being tagged or there’s an additional issue that requires further attention. When issues arise, we make all attempts to highlight and communicate the issue seen, to minimize the overall impact to the study, but are reliant on the client to ensure the issue is fixed. In a campaign where there are issues such as this, we try to keep the gap under 20% and will document any issues found. What are the capabilities for tagging video and video based ads?&lt;br /&gt;
&lt;br /&gt;
Our tag is not a specific limitation as it is one of the simplest things that can be served – a 1x1 image. That being said, much of the video implementation limitations are often dictated by the video vendors themselves. Where you can add our tag is dependent on the capabilities of these vendors. Some have the ability to place the tag in multiple locations in the video (i.e. beginning, middle, end – multiple tags will be needed to separate these out) and some simply place the pixel directly on the webpage, next to video being served. Further discussion may need to happen with the vendor, Nielsen and the client to determine the optimum implementation that meets the client's needs.&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;/div&gt;</summary>
		<author><name>ColinBrown</name></author>
	</entry>
	<entry>
		<id>https://nielsentest.mywikis.net/w/index.php?title=Digital_Ad_Ratings&amp;diff=5825</id>
		<title>Digital Ad Ratings</title>
		<link rel="alternate" type="text/html" href="https://nielsentest.mywikis.net/w/index.php?title=Digital_Ad_Ratings&amp;diff=5825"/>
		<updated>2022-06-14T17:55:30Z</updated>

		<summary type="html">&lt;p&gt;ColinBrown: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Breadcrumb|}} {{Breadcrumb|Digital}} {{CurrentBreadcrumb}}&lt;br /&gt;
{{CategoryIcon|DAR.png|Digital Ad Ratings (DAR)}}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;width: 90px;&amp;quot; |&lt;br /&gt;
! General Reference&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | {{SmallIcon|DigitalIcon.png}}&lt;br /&gt;
| '''[[Mobile DAR Attributes Requirements]]'''&lt;br /&gt;
|-&lt;br /&gt;
|'''[[iOS SDK App Privacy|App Privacy Details for App Store]]'''&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;width: 90px;&amp;quot; | SDK / API&lt;br /&gt;
! style=&amp;quot;width: 45px;&amp;quot; | OS&lt;br /&gt;
! Guide&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | {{SmallIcon|SDKIcon.png}}&lt;br /&gt;
| {{SmallIcon|BrowserIcon.png}}&lt;br /&gt;
| '''[[DAR Browser Implementation]]'''&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>ColinBrown</name></author>
	</entry>
	<entry>
		<id>https://nielsentest.mywikis.net/w/index.php?title=mDAR_Attributes_Requirements&amp;diff=5824</id>
		<title>mDAR Attributes Requirements</title>
		<link rel="alternate" type="text/html" href="https://nielsentest.mywikis.net/w/index.php?title=mDAR_Attributes_Requirements&amp;diff=5824"/>
		<updated>2022-06-14T17:54:55Z</updated>

		<summary type="html">&lt;p&gt;ColinBrown: ColinBrown moved page mDAR Attributes Requirements to Mobile DAR Attributes Requirements: Changed paged name to better represent content&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[Mobile DAR Attributes Requirements]]&lt;/div&gt;</summary>
		<author><name>ColinBrown</name></author>
	</entry>
	<entry>
		<id>https://nielsentest.mywikis.net/w/index.php?title=Mobile_DAR_Attributes_Requirements&amp;diff=5823</id>
		<title>Mobile DAR Attributes Requirements</title>
		<link rel="alternate" type="text/html" href="https://nielsentest.mywikis.net/w/index.php?title=Mobile_DAR_Attributes_Requirements&amp;diff=5823"/>
		<updated>2022-06-14T17:54:55Z</updated>

		<summary type="html">&lt;p&gt;ColinBrown: ColinBrown moved page mDAR Attributes Requirements to Mobile DAR Attributes Requirements: Changed paged name to better represent content&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Breadcrumb|}} {{Breadcrumb|Digital}} {{Breadcrumb|Digital Ad Ratings}}  {{CurrentBreadcrumb}}&lt;br /&gt;
[[Category:Digital]]&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
The standard Nielsen Digital Ad Rating (DAR) tag only supports cookie based '''web browser''' viewing on PCs, MACs, and tablets/smartphone (web-browser). However, when ads are served to tablets/smartphones via native '''app-store applications''', the cookie based tag does not function correctly. Additional tag attributes are needed in order for audience reach measurement to function. Example tags are detailed later in this document.&lt;br /&gt;
&lt;br /&gt;
One way Nielsen clients can accomplish this is by the use of Nielsen’s native iOS/Android App SDK. Nielsen’s App SDK automatically adds these additional tag attributes to the standard cookie based webbrowser tag before the tag is forwarded on to the Nielsen census collection system. However, there is a significant portion of the publisher mobile app universe where it is either not feasible, or desirable to integrate Nielsen’s native App SDK into 3rd party applications.&lt;br /&gt;
&lt;br /&gt;
The purpose of this document is to detail the tag URL parameters required that are '''additional''' to the standard cookie based web-browser tag.&lt;br /&gt;
&lt;br /&gt;
The most critical additional parameter required is the insertion of the Advertising ID (IFA / IDFA / AdID) from the users device that has been exposed to the Ad creative.&lt;br /&gt;
&lt;br /&gt;
If you are reading this document as an Ad server representative then it is assumed that you have published a specification that mobile app publishers follow to pass the appropriate Advertising ID in the Ad request payload. Typically, your Ad server will then expand a macro or label with that value passed in the Ad request URL, insert into the DAR mobile app tag and redirect to Nielsen collections. See s. See  [[#Appendix A: Example Implementation]], figure 2 for an example tag workflow.&lt;br /&gt;
&lt;br /&gt;
The standard way of triggering a Digital Ad Ratings (DAR) tag on Mobile-App is for the publisher app to trigger (either directly or via Ad server) the tag upon Ad exposure to the user. i.e. a client-side initiated tag. If you wish to implement server-side dispatch of mobile in-app DAR tags then see additional section in this document titled '''server-side tag dispatch'''. Please read the rest of this document before reading the section on server-server.&lt;br /&gt;
&lt;br /&gt;
Once you have completed your integration, you will be required to submit to a short certification. See [[#Appendix B: Implementation, Testing &amp;amp; Certification]]. Certification also grants inclusion to the approved publisher and certified Ad server vendor list.&lt;br /&gt;
&lt;br /&gt;
'''Important Note:''' for 2018, the MRC has mandated a series of changes to audience measurement that will require additional tag events to be communicated to Nielsen so that we may compute duration weighting etc. You are strongly urged to contact your Nielsen client service representative to seek a briefing from Nielsen on the best technical methods for tagging in order to be compliant with these changes.&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
== Standard DAR Tag ==&lt;br /&gt;
The DAR tag is available as a 1x1 pixel. The following pixel/tag parameters must be specified for all DAR tags, 1x1, regardless of implementation type: browser, mobile browser, mobile app or connected device.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
! Tag Parameter&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| CI&lt;br /&gt;
| Client ID: the ID that is associated with the DAR account that processed tag data is associated with. Will always be hardcoded to a Nielsen generated value that comes from the Nielsen campaign management system&lt;br /&gt;
|- style=&amp;quot;background-color:#eff8ef;&amp;quot;&lt;br /&gt;
| AM&lt;br /&gt;
| Ad Server: an ad server participating on the campaign media-plan. This is an internal Nielsen generated value when the ad server is indicated on the campaign during setup&lt;br /&gt;
|-&lt;br /&gt;
| CA&lt;br /&gt;
| Campaign Id: this is the ID associated with your DAR campaign. Unless you are creating and managing the Nielsen campaign via the DAR Tag API, then this parameter value will always be generated from the Nielsen campaign management system. Note: often maps to a media-plan I/O Id&lt;br /&gt;
|- style=&amp;quot;background-color:#eff8ef;&amp;quot;&lt;br /&gt;
| CR&lt;br /&gt;
| Creative Id: DAR does not currently report at the creative level; can be hard coded ad server id or associated with a macro expansion&lt;br /&gt;
|-&lt;br /&gt;
| PC&lt;br /&gt;
| Placement Id: can be generated by the ad server via macro expansion or generated by the Nielsen campaign management system. Note: often maps to one of Ad Unit Id, Line Item Id or Video Ad Id&lt;br /&gt;
|- style=&amp;quot;background-color:#eff8ef;&amp;quot;&lt;br /&gt;
| CE&lt;br /&gt;
| Site Id: the Id that identifies a publisher site that the placement needs to be mapped to. Maps into the Nielsen MarketView database. Note: can be hardcoded to a pre-registered ad server site id in the Nielsen system or a macro expansion where more than one pre-existing site ids have been made known to Nielsen&lt;br /&gt;
|-&lt;br /&gt;
| R&lt;br /&gt;
| Cachebuster (web): timestamp / random number. Generated by ad server&lt;br /&gt;
|- style=&amp;quot;background-color:#eff8ef;&amp;quot;&lt;br /&gt;
| AT&lt;br /&gt;
| Fixed value: “view”&lt;br /&gt;
|-&lt;br /&gt;
| RT&lt;br /&gt;
| Fixed value: “banner”&lt;br /&gt;
|- style=&amp;quot;background-color:#eff8ef;&amp;quot;&lt;br /&gt;
| ST&lt;br /&gt;
| Fixed value: “image”&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;blockquote&amp;gt; Do not URL encode the values&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Additional DAR Tag Parameters for Mobile App Audience Measurement ==&lt;br /&gt;
In this section, the additional URL parameters required beyond the standard cookie based web-browser tag are described in detail.&lt;br /&gt;
&lt;br /&gt;
For each of the tag examples detailed below, we can support both non-secure (http) and secure (https) flavors. The standard cookie based web-browser tag is included below for reference purposes.&lt;br /&gt;
&lt;br /&gt;
'''Important note:''' the values against each value-pair in the following tags are for illustrative purposes only. Values for CA, PC and CE will vary depending on the specific campaign being measured and capabilities of the Ad server for macro/value expansion. For more detail on the core DAR  parameters, please see the '''Nielsen DAR Tag Implementation Guide.'''&lt;br /&gt;
&lt;br /&gt;
'''Web Browser DAR tag (cookie based persons identification)'''&lt;br /&gt;
&amp;lt;code&amp;gt; //secure-gl.imrworldwide.com/cgi-bin/m?ci=nlsnci535&amp;amp;am=3&amp;amp;at=view&amp;amp;rt=banner&amp;amp;st=image&amp;amp;ca=nlsn12452&amp;amp;cr=crtve&amp;amp;pc=&amp;lt;creativeid&amp;gt;_plc0001&amp;amp;ce=&amp;lt;siteid&amp;gt;&amp;amp;r=&amp;lt;timestamp&amp;gt; &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Mobile-App DAR Tag Extension (IFA based persons identification)'''&lt;br /&gt;
&amp;lt;code&amp;gt; //secure-gl.imrworldwide.com/cgi-bin/m?ci=nlsnci535&amp;amp;am=3&amp;amp;at=view&amp;amp;rt=banner&amp;amp;st=image&amp;amp;ca=nlsn12452&amp;amp;cr=crtve&amp;amp;pc=&amp;lt;creativeid&amp;gt;_plc0001&amp;amp;ce=&amp;lt;siteid&amp;gt;&amp;amp;c7=osgrp,IOS&amp;amp;c8=devgrp,PHN&amp;amp;c9=devid,XXXX-XX-XXXXX-XXXX &amp;amp;c10=plt,MBL&amp;amp;c12=apv,&amp;lt;appVersion&amp;gt;&amp;amp;c13=asid,NIELSEN-PROVIDEDID&amp;amp;c14=osver,7.0.4&amp;amp;uoo=1&amp;amp;r=&amp;lt;timestamp&amp;gt; &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Additional DAR Tag Parameters for Mobile !! Description !! Mandatory parameter for mDAR?&lt;br /&gt;
|-&lt;br /&gt;
| &amp;amp;c7 || OS Grouping ||&lt;br /&gt;
|- style=&amp;quot;background-color:#eff8ef;&amp;quot;&lt;br /&gt;
| &amp;amp;c8  || Device Grouping || &amp;lt;center&amp;gt;✔&amp;lt;/center&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;amp;c9 || Advertising ID || &amp;lt;center&amp;gt;✔&amp;lt;/center&amp;gt;&lt;br /&gt;
|- style=&amp;quot;background-color:#eff8ef;&amp;quot;&lt;br /&gt;
| &amp;amp;c10 || Platform || &amp;lt;center&amp;gt;✔&amp;lt;/center&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;amp;c12 || App Version ||&lt;br /&gt;
|- style=&amp;quot;background-color:#eff8ef;&amp;quot;&lt;br /&gt;
| &amp;amp;c13 || AppID (Nielsen assigned App ID) || &amp;lt;center&amp;gt;✔&amp;lt;/center&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;amp;c14 || OS Version ||&lt;br /&gt;
|- style=&amp;quot;background-color:#eff8ef;&amp;quot;&lt;br /&gt;
| &amp;amp;uoo || Opt-out indicator || &amp;lt;center&amp;gt;✔&amp;lt;/center&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;blockquote&amp;gt;'''Note''': Clients are encouraged to make an effort to always fill-in optional parameters.&lt;br /&gt;
&lt;br /&gt;
'''Note''': Do not URL encode the values.&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== C7 - OS Grouping (Optional) ==&lt;br /&gt;
Valid device OS Grouping data values are the following literal values:&lt;br /&gt;
* osgrp,IOS&lt;br /&gt;
* osgrp,DROID&lt;br /&gt;
* osgrp,ANDROID&lt;br /&gt;
&amp;lt;blockquote&amp;gt;'''Note''': If one of the above values cannot be specific, then the parameter should not be included in the call.&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== C8 - Device Grouping (Mandatory)==&lt;br /&gt;
Valid literal values for phone, tablet, portable media player (iPod) and unknown are as follows:&lt;br /&gt;
* devgrp,PHN - Phone&lt;br /&gt;
* devgrp,TAB - Tablet&lt;br /&gt;
* devgrp,PMP - Portable Media Player (iPod)&lt;br /&gt;
* devgrp,UNWN - Unknown/Unclassified&lt;br /&gt;
* devgrp,DSK - Desktop&lt;br /&gt;
* devgrp,STV ←​ CTV/OTT Device&lt;br /&gt;
==== Notes ====&lt;br /&gt;
* Mandatory for accurate measurement, and if unable to pass, Nielsen cannot guarantee the impression will be classified correctly. &lt;br /&gt;
* “​UNWN” will result in Nielsen attempting an introspection of the User Agent in the HTTP request sent against Device Atlas for classification. &lt;br /&gt;
* “STV” is the default value for OTT when the specific device value isn’t passed.&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== C9 - Advertising ID (Mandatory) ==&lt;br /&gt;
This is the advertiser ID for the client’s mobile device. IDFA for iOS, Google Advertising ID for Android:&lt;br /&gt;
* devid,&amp;lt;IDFA&amp;gt;&lt;br /&gt;
* devid,&amp;lt;IFA&amp;gt;&lt;br /&gt;
* devid,&amp;lt;Google Advertising ID&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Notes ====&lt;br /&gt;
For Android devices, the Google Advertiser ID should be used as the default and the Android ID as the second option.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* If C9 is &amp;lt;empty&amp;gt;, upon receiving the ping, the Nielsen collection server will attempt a 302 redirect to the data provider per the regular DAR pixel for browsers.&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
* As of August 1, 2014, Google is enforcing use of the Advertising ID for advertising and user analytics (http://play.google.com/about/developer-content-policy.html).&lt;br /&gt;
&amp;lt;blockquote&amp;gt;'' &amp;quot;Beginning August 1st 2014, all updates and new apps uploaded to the Play Store must use the advertising ID (when available on a device) in lieu of any other device identifiers for any advertising purposes.&amp;quot;&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
* It is preferred that the IDFA or Google Advertising ID be sent as is from the mobile device (“cleartext”). However, if mandated, we will support SHA256 hashed values with no-salt. Passing a hashed value (and/or salting) using any other standard will result in a failed match by the data provider upon receiving the ping. In turn, this results in impressions surfacing in the DAR unmeasurable audience totals. Please contact Nielsen if you anticipate a large percentage of hashed values coming in from your publisher clients.&lt;br /&gt;
&lt;br /&gt;
=== Privacy, Ad Tracking, and Ad Targeting ===&lt;br /&gt;
In newer iterations of the iOS and Android device operating systems, a facility exists allowing users to “opt-out” of “Ad Tracking”. It is Nielsen’s interpretation that this setting is primarily designed to allow users to specify opt-out of Ad Targeting rather than Ad Measurement. DAR&lt;br /&gt;
does not provide Ad Targeting data.&lt;br /&gt;
&lt;br /&gt;
However, it is also Nielsen’s position that the publisher or Ad network should provide a mechanism to also allow a user to opt-out of Ad Measurement. The Nielsen SDK will honor the Nielsen Ad Measurement opt-out settings configurable @ http://www.nielsen.com/us/en/campaigns/privacy-policy-opt-out.html.&lt;br /&gt;
&lt;br /&gt;
However if the integration approach described in this document is being used instead of the Nielsen SDK then '''YOU''' as the publisher or Ad network must provide a capability to opt-out of Ad Measurement as the configuration on www.nielsen.com will not be detectable. You may&lt;br /&gt;
elect to interpret the iOS / Android “Ad Tracking” setting for the purpose of limit Ad measurement or provide a separate discreet mechanism to allow a user to opt-out of Ad measurement.&lt;br /&gt;
&lt;br /&gt;
Please see '''&amp;amp;uoo''' later in this document for implementation details of the optout indicator.&lt;br /&gt;
&lt;br /&gt;
For additional clarification on privacy policy, please contact your Nielsen representative.&lt;br /&gt;
&lt;br /&gt;
== C10 - Platform (Mandatory) ==&lt;br /&gt;
To determine this value, Nielsen suggests that the ad network leverage user agent information to determine if the client device is either a mobile or desktop device.&lt;br /&gt;
&lt;br /&gt;
Valid literal values for mobile and desktop data values are as follows:&lt;br /&gt;
* plt,MBL&lt;br /&gt;
* plt,DSK&lt;br /&gt;
* plt,OTT&lt;br /&gt;
==== Notes ====&lt;br /&gt;
* Mandatory for accurate measurement, and if unable to pass, Nielsen cannot guarantee the impression will be classified correctly. &lt;br /&gt;
* Omitting c10, or a value in c10, will result in Nielsen attempting an introspection of the User Agent in the HTTP request sent against Device Atlas for classification. &lt;br /&gt;
* “OTT” (Connective Devices) is a valid value that is populated by participating vendors (Amazon, Hulu and Roku).  Non-participating vendors will be unmeasurable volumetric metric only.&lt;br /&gt;
&lt;br /&gt;
== C12 - App Version (Optional) ==&lt;br /&gt;
This is the version of the ad network system software or SDK that is implemented in this extension. Although this field is not required, this feature can be useful for troubleshooting purposes following deployment.&lt;br /&gt;
* apv,&amp;lt;N.N&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== C13 - AppID ==&lt;br /&gt;
This Nielsen provided ID is unique to the ad network and is required for certification.&lt;br /&gt;
* asid,&amp;lt;NNNNNNNNN-NNNN-NNNN-NNNN-NNNNNNNNNNNN&amp;gt;&lt;br /&gt;
An App ID will be provided for testing. A separate App ID will be provided for production use. Please request from your Nielsen representative.&lt;br /&gt;
&amp;lt;blockquote&amp;gt;'''Note''': If you are a publisher leveraging the non-SDK solution, you will be provided with a unique App ID for each combination of app and device OS type.&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== C14 - OS Version (Optional) ==&lt;br /&gt;
Operating system version&lt;br /&gt;
* osver,&amp;lt;OS Version&amp;gt;&lt;br /&gt;
Example: for iOS -&amp;gt; 7.0.4&lt;br /&gt;
&lt;br /&gt;
== UOO - Opt Out ==&lt;br /&gt;
Opt-out parameter&lt;br /&gt;
* &amp;lt;Boolean state&amp;gt;&lt;br /&gt;
&amp;lt;Boolean state&amp;gt; is a Boolean representation of whether the user is opting out or not.&lt;br /&gt;
&lt;br /&gt;
The absence of uoo in the tag is interpreted as an implicit opt-in. i.e. not opting out.&lt;br /&gt;
&lt;br /&gt;
The following pairings of opt-out are supported. '''Important:''' you must choose one set of paired values only and inform your Nielsen representative.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Opt-out !! Opt-in&lt;br /&gt;
|-&lt;br /&gt;
| uoo=true || uoo=false&lt;br /&gt;
|-&lt;br /&gt;
| uoo=1 || uoo=0&lt;br /&gt;
|-&lt;br /&gt;
| uoo=yes || uoo=no&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;blockquote&amp;gt;'''Note''':  if your Ad server is not capable os supporting the discrete &amp;amp;uoo parameter then you can set the c9 value to &amp;lt;code&amp;gt;devid,optout&amp;lt;/code&amp;gt; (for example &amp;lt;code&amp;gt;…&amp;amp;c8=PHN&amp;amp;c9=devid,optout&amp;amp;c10=MBL…&amp;lt;/code&amp;gt;)&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Server-Side Tag Dispatch ==&lt;br /&gt;
The standard way of triggering a Digital Ad Ratings (DAR) tag on Mobile-App is for the publisher app to trigger (either directly or via Ad server) the tag upon Ad exposure to the user. i.e. a client-side initiated tag.&lt;br /&gt;
&lt;br /&gt;
It is important to note that MRC/IAB measurement standards stipulate that the Ad exposure event still be initiated and recorded from the client-side, even if the Ad measurement tag (in this case a DAR tag) is physically initiated from the server-side. Evidence may be required (publisher log file or similar) from the MRC/IAB that the user was exposed to the Ad creative on their device.&lt;br /&gt;
&lt;br /&gt;
The following additional changes to the standard mobile-app DAR tag are required to support dispatch the DAR tag from a '''server-side''' publisher ad server:&lt;br /&gt;
&lt;br /&gt;
#'''X-Forwarded-For (XFF) IP:''' The original client IP address must be passed in the X-Forwarded-For (XFF) HTTP header field. When the impression is fired directly from the Ad Server, the XReal-IP will be the Ad Server IP.&lt;br /&gt;
#'''Cachebuster:''' Already present in the DAR tag, this now becomes mandatory. A cachebuster or random number ensures a new call is made to the Ad Server. By including a cachebuster ('r' parameter), the tag will not be cached. The timestamp of when the Ad was served can be used.&lt;br /&gt;
#'''User Agent (UA):''' The HTTP UA from the client device should be used to populate the HTTP UA in the server-server connection/ping.&lt;br /&gt;
#'''TLS:''' the tag received by Nielsen must be TLS v1.2 compliant or greater.&lt;br /&gt;
&lt;br /&gt;
==== Important notes ====&lt;br /&gt;
* the current iteration of server-server tag collection only supports mobile-app (IFA and AAID) and will NOT support cookie based audience measurement.&lt;br /&gt;
* The client’s server-server setup that is going to trigger/send the DAR tag should ​suppress​ any Nielsen cookie returned by the Nielsen collection server as a result of the first DAR tag received. If the Nielsen cookie (returned upon receiving the first DAR tag into secure.imrworldwide.com) is not suppressed then invalid traffic (IVT) filtration will quickly be triggered upon receiving the 2​nd and nth tag.&lt;br /&gt;
&lt;br /&gt;
== Appendix A: Example Implementation ==&lt;br /&gt;
In the below examples, you will see the overall DAR flow (Figure 1) and a detailed illustrative Ad Request / Response model (Figure 2).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div align=&amp;quot;center&amp;quot;&amp;gt;'''Figure 1 – End to End Data Flow'''&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:mDAR_Dataflow.png|center|link=]]&lt;br /&gt;
&lt;br /&gt;
Nielsen certified publishers and platforms will append the new parameters (below) with the appropriate URL safe values passed to Nielsen’s current DAR tag. The current DAR tag should be acquired using the existing processes for each campaign/placement. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&amp;lt;code&amp;gt;'''&amp;amp;c7'''=osgrp,IOS'''&amp;amp;c8'''=devgrp,PHN'''&amp;amp;c9'''=devid,XXXX-XX-XXXXXXXXX'''&amp;amp;c10'''=plt,MBL'''&amp;amp;c12'''=apv,AppVersion'''&amp;amp;c13'''=asid,XXXX-XX-XXXX-XXXX&amp;lt;/code&amp;gt;&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div align=&amp;quot;center&amp;quot;&amp;gt;'''Figure 2 – Illustrative Ad Request / Ad Response'''&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:ad_response.png|center|link=]]&lt;br /&gt;
&lt;br /&gt;
The above is an example of how an Ad server is supporting the build of mobile DAR tags for its publisher clients.&lt;br /&gt;
*Step 2 in Figure 1 is a summary of steps 1 and 2 in Figure 2 above.&lt;br /&gt;
*Steps 3 and 4 in Figure 1 is a summary of steps 3 through 9 in Figure 2 above.&lt;br /&gt;
&lt;br /&gt;
== Appendix B: Implementation, Testing &amp;amp; Certification ==&lt;br /&gt;
Once you have integrated the ping per the above specs, Nielsen requires you to pass through a one-time certification before traffic can be accepted into the production environment.&lt;br /&gt;
&lt;br /&gt;
The overall process is:&lt;br /&gt;
* Valid DAR contract or NDA is in place.&lt;br /&gt;
* Kick-off meeting with Nielsen onboarding team.&lt;br /&gt;
* Confirm meet minimums testing requirements:&lt;br /&gt;
** Host Ad/Tag for in-app delivery&lt;br /&gt;
** Can pass opt-out back to Nielsen&lt;br /&gt;
** Can pass Device ID in cleartext or SHA-256&lt;br /&gt;
* Nielsen provides the mDAR testing form that includes the test App ID and the test tag&lt;br /&gt;
* Identify the live campaigns for initial testing and run the test tag; suggest 5,000-10,000 impressions.&lt;br /&gt;
* Nielsen validates the data received from the test and confirms the initial test successful and provides the production App ID.&lt;br /&gt;
* Ensure contracts are in place for external test campaign with Nielsen Client Service team.&lt;br /&gt;
* Identify another live campaigns for production testing with production tag and app ID.&lt;br /&gt;
* Nielsen validates the data received from the final test and confirms certification for any DAR countries tested.&lt;br /&gt;
==== Goals ====&lt;br /&gt;
* To test in full DAR E2E environment, receive matches from data provider for demographics and correct identification of mobile impressions.&lt;br /&gt;
* To test that all minimum requirements in step 3 are passed to Nielsen with no issues.&lt;br /&gt;
* To test in a full DAR end-to-end environment, receive matches from data providers for demographics and correct identification of mobile impressions.&lt;/div&gt;</summary>
		<author><name>ColinBrown</name></author>
	</entry>
	<entry>
		<id>https://nielsentest.mywikis.net/w/index.php?title=Template:iOS_NoID_Privacy_and_Opt-Out&amp;diff=5822</id>
		<title>Template:iOS NoID Privacy and Opt-Out</title>
		<link rel="alternate" type="text/html" href="https://nielsentest.mywikis.net/w/index.php?title=Template:iOS_NoID_Privacy_and_Opt-Out&amp;diff=5822"/>
		<updated>2022-06-14T03:25:52Z</updated>

		<summary type="html">&lt;p&gt;ColinBrown: /* Display OptOut Notice */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Privacy and Opt-Out ==&lt;br /&gt;
The Irish Market build of the Nielsen SDK automatically Opt's Users out of the collection of any User Identifiable information or any Device Advertising ID.&lt;br /&gt;
&lt;br /&gt;
When building your app:&lt;br /&gt;
#  Ensure that you are using the [https://nielsendownloads-green.digitalengsdk.com/digital/Nielsen-iOS-App-SDK-GlobalNoId_latest.zip NoID version] of the Nielsen SDK Framework.&lt;br /&gt;
#  Immediately following the initialization of the Nielsen SDK ensure you call the userOptOut API with Opt out selection: &lt;br /&gt;
&amp;lt;syntaxhighlight lang=swift&amp;gt;NielsenAppApi?.userOptOut(&amp;quot;nielsenappsdk://1&amp;quot;); // User opt-out&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Retrieve current Opt-Out preference ===&lt;br /&gt;
Whether the user is opted out via OS-level Opt-out or via User Choice Opt-out, the current Opt-Out status as detected by the SDK is available via the [[optOutStatus]] property in the Nielsen SDK API&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;objective-c&amp;quot;&amp;gt;&lt;br /&gt;
@property (readonly) BOOL optOutStatus&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
=== Display OptOut Notice ===&lt;br /&gt;
Nielsen does not use cookies in measurement in Ireland; however, you may want to present this information to your user.  Sample code on how to do this is below:&lt;br /&gt;
&lt;br /&gt;
==== Sample Code ====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;swift&amp;quot;&amp;gt;&lt;br /&gt;
import UIKit&lt;br /&gt;
import WebKit&lt;br /&gt;
import NielsenAppApi&lt;br /&gt;
&lt;br /&gt;
class OptOutVC: UIViewController, NielsenAppApiDelegate, WKNavigationDelegate {&lt;br /&gt;
    var nielsenApi : NielsenAppApi!&lt;br /&gt;
    var webView: WKWebView!&lt;br /&gt;
   &lt;br /&gt;
    override func loadView() {&lt;br /&gt;
        webView = WKWebView()&lt;br /&gt;
        webView.navigationDelegate = self&lt;br /&gt;
        view = webView&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    override func viewDidLoad() {&lt;br /&gt;
        super.viewDidLoad()&lt;br /&gt;
     // For English use: https://sites.nielsen.com/priv/browser/cookie-policy-ie-en.html&lt;br /&gt;
     // For  Gaelic use: https://sites.nielsen.com/priv/browser/cookie-policy-ie-ga.html&lt;br /&gt;
&lt;br /&gt;
            if let url = URL(string: &amp;quot;https://sites.nielsen.com/priv/browser/cookie-policy-ie-en.html&amp;quot;) {&lt;br /&gt;
                webView.load(URLRequest(url: url))&lt;br /&gt;
                webView.allowsBackForwardNavigationGestures = true&lt;br /&gt;
        &lt;br /&gt;
        }}}&lt;br /&gt;
&lt;br /&gt;
        func closeOptOutView() {&lt;br /&gt;
            self.dismiss(animated: true, completion: nil)&lt;br /&gt;
        }}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
--&amp;gt;&lt;/div&gt;</summary>
		<author><name>ColinBrown</name></author>
	</entry>
	<entry>
		<id>https://nielsentest.mywikis.net/w/index.php?title=Template:iOS_NoID_Privacy_and_Opt-Out&amp;diff=5821</id>
		<title>Template:iOS NoID Privacy and Opt-Out</title>
		<link rel="alternate" type="text/html" href="https://nielsentest.mywikis.net/w/index.php?title=Template:iOS_NoID_Privacy_and_Opt-Out&amp;diff=5821"/>
		<updated>2022-06-14T01:57:43Z</updated>

		<summary type="html">&lt;p&gt;ColinBrown: /* Sample Code */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Privacy and Opt-Out ==&lt;br /&gt;
The Irish Market build of the Nielsen SDK automatically Opt's Users out of the collection of any User Identifiable information or any Device Advertising ID.&lt;br /&gt;
&lt;br /&gt;
When building your app:&lt;br /&gt;
#  Ensure that you are using the [https://nielsendownloads-green.digitalengsdk.com/digital/Nielsen-iOS-App-SDK-GlobalNoId_latest.zip NoID version] of the Nielsen SDK Framework.&lt;br /&gt;
#  Immediately following the initialization of the Nielsen SDK ensure you call the userOptOut API with Opt out selection: &lt;br /&gt;
&amp;lt;syntaxhighlight lang=swift&amp;gt;NielsenAppApi?.userOptOut(&amp;quot;nielsenappsdk://1&amp;quot;); // User opt-out&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Retrieve current Opt-Out preference ===&lt;br /&gt;
Whether the user is opted out via OS-level Opt-out or via User Choice Opt-out, the current Opt-Out status as detected by the SDK is available via the [[optOutStatus]] property in the Nielsen SDK API&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;objective-c&amp;quot;&amp;gt;&lt;br /&gt;
@property (readonly) BOOL optOutStatus&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Display OptOut Notice ===&lt;br /&gt;
Nielsen does not use cookies in measurement in Ireland; however, you may want to present this information to your user.  Sample code on how to do this is below:&lt;br /&gt;
&lt;br /&gt;
==== Sample Code ====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;swift&amp;quot;&amp;gt;&lt;br /&gt;
import UIKit&lt;br /&gt;
import WebKit&lt;br /&gt;
import NielsenAppApi&lt;br /&gt;
&lt;br /&gt;
class OptOutVC: UIViewController, NielsenAppApiDelegate, WKNavigationDelegate {&lt;br /&gt;
    var nielsenApi : NielsenAppApi!&lt;br /&gt;
    var webView: WKWebView!&lt;br /&gt;
   &lt;br /&gt;
    override func loadView() {&lt;br /&gt;
        webView = WKWebView()&lt;br /&gt;
        webView.navigationDelegate = self&lt;br /&gt;
        view = webView&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    override func viewDidLoad() {&lt;br /&gt;
        super.viewDidLoad()&lt;br /&gt;
     // For English use: https://sites.nielsen.com/priv/browser/cookie-policy-ie-en.html&lt;br /&gt;
     // For  Gaelic use: https://sites.nielsen.com/priv/browser/cookie-policy-ie-ga.html&lt;br /&gt;
&lt;br /&gt;
            if let url = URL(string: &amp;quot;https://sites.nielsen.com/priv/browser/cookie-policy-ie-en.html&amp;quot;) {&lt;br /&gt;
                webView.load(URLRequest(url: url))&lt;br /&gt;
                webView.allowsBackForwardNavigationGestures = true&lt;br /&gt;
        &lt;br /&gt;
        }}}&lt;br /&gt;
&lt;br /&gt;
        func closeOptOutView() {&lt;br /&gt;
            self.dismiss(animated: true, completion: nil)&lt;br /&gt;
        }}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>ColinBrown</name></author>
	</entry>
	<entry>
		<id>https://nielsentest.mywikis.net/w/index.php?title=Template:iOS_NoID_Privacy_and_Opt-Out&amp;diff=5820</id>
		<title>Template:iOS NoID Privacy and Opt-Out</title>
		<link rel="alternate" type="text/html" href="https://nielsentest.mywikis.net/w/index.php?title=Template:iOS_NoID_Privacy_and_Opt-Out&amp;diff=5820"/>
		<updated>2022-06-14T01:53:33Z</updated>

		<summary type="html">&lt;p&gt;ColinBrown: /* Display OptOut Notice */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Privacy and Opt-Out ==&lt;br /&gt;
The Irish Market build of the Nielsen SDK automatically Opt's Users out of the collection of any User Identifiable information or any Device Advertising ID.&lt;br /&gt;
&lt;br /&gt;
When building your app:&lt;br /&gt;
#  Ensure that you are using the [https://nielsendownloads-green.digitalengsdk.com/digital/Nielsen-iOS-App-SDK-GlobalNoId_latest.zip NoID version] of the Nielsen SDK Framework.&lt;br /&gt;
#  Immediately following the initialization of the Nielsen SDK ensure you call the userOptOut API with Opt out selection: &lt;br /&gt;
&amp;lt;syntaxhighlight lang=swift&amp;gt;NielsenAppApi?.userOptOut(&amp;quot;nielsenappsdk://1&amp;quot;); // User opt-out&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Retrieve current Opt-Out preference ===&lt;br /&gt;
Whether the user is opted out via OS-level Opt-out or via User Choice Opt-out, the current Opt-Out status as detected by the SDK is available via the [[optOutStatus]] property in the Nielsen SDK API&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;objective-c&amp;quot;&amp;gt;&lt;br /&gt;
@property (readonly) BOOL optOutStatus&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Display OptOut Notice ===&lt;br /&gt;
Nielsen does not use cookies in measurement in Ireland; however, you may want to present this information to your user.  Sample code on how to do this is below:&lt;br /&gt;
&lt;br /&gt;
==== Sample Code ====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;swift&amp;quot;&amp;gt;&lt;br /&gt;
import UIKit&lt;br /&gt;
import WebKit&lt;br /&gt;
import NielsenAppApi&lt;br /&gt;
&lt;br /&gt;
class OptOutVC: UIViewController, NielsenAppApiDelegate, WKNavigationDelegate {&lt;br /&gt;
    var nielsenApi : NielsenAppApi!&lt;br /&gt;
    var webView: WKWebView!&lt;br /&gt;
   &lt;br /&gt;
    override func loadView() {&lt;br /&gt;
        webView = WKWebView()&lt;br /&gt;
        webView.navigationDelegate = self&lt;br /&gt;
        view = webView&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    override func viewDidLoad() {&lt;br /&gt;
        super.viewDidLoad()&lt;br /&gt;
     &lt;br /&gt;
            if let url = URL(string: &amp;quot;https://sites.nielsen.com/priv/browser/cookie-policy-ie-en.html&amp;quot;) {&lt;br /&gt;
                webView.load(URLRequest(url: url))&lt;br /&gt;
                webView.allowsBackForwardNavigationGestures = true&lt;br /&gt;
        &lt;br /&gt;
        }}}&lt;br /&gt;
&lt;br /&gt;
        func closeOptOutView() {&lt;br /&gt;
            self.dismiss(animated: true, completion: nil)&lt;br /&gt;
        }}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>ColinBrown</name></author>
	</entry>
	<entry>
		<id>https://nielsentest.mywikis.net/w/index.php?title=Template:iOS_NoID_Privacy_and_Opt-Out&amp;diff=5819</id>
		<title>Template:iOS NoID Privacy and Opt-Out</title>
		<link rel="alternate" type="text/html" href="https://nielsentest.mywikis.net/w/index.php?title=Template:iOS_NoID_Privacy_and_Opt-Out&amp;diff=5819"/>
		<updated>2022-06-14T01:53:09Z</updated>

		<summary type="html">&lt;p&gt;ColinBrown: /* Retrieve current Opt-Out preference */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Privacy and Opt-Out ==&lt;br /&gt;
The Irish Market build of the Nielsen SDK automatically Opt's Users out of the collection of any User Identifiable information or any Device Advertising ID.&lt;br /&gt;
&lt;br /&gt;
When building your app:&lt;br /&gt;
#  Ensure that you are using the [https://nielsendownloads-green.digitalengsdk.com/digital/Nielsen-iOS-App-SDK-GlobalNoId_latest.zip NoID version] of the Nielsen SDK Framework.&lt;br /&gt;
#  Immediately following the initialization of the Nielsen SDK ensure you call the userOptOut API with Opt out selection: &lt;br /&gt;
&amp;lt;syntaxhighlight lang=swift&amp;gt;NielsenAppApi?.userOptOut(&amp;quot;nielsenappsdk://1&amp;quot;); // User opt-out&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Retrieve current Opt-Out preference ===&lt;br /&gt;
Whether the user is opted out via OS-level Opt-out or via User Choice Opt-out, the current Opt-Out status as detected by the SDK is available via the [[optOutStatus]] property in the Nielsen SDK API&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;objective-c&amp;quot;&amp;gt;&lt;br /&gt;
@property (readonly) BOOL optOutStatus&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Display OptOut Notice ==&lt;br /&gt;
Nielsen does not use cookies in measurement in Ireland; however, you may want to present this information to your user.  Sample code on how to do this is below:&lt;br /&gt;
&lt;br /&gt;
==== Sample Code ====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;swift&amp;quot;&amp;gt;&lt;br /&gt;
import UIKit&lt;br /&gt;
import WebKit&lt;br /&gt;
import NielsenAppApi&lt;br /&gt;
&lt;br /&gt;
class OptOutVC: UIViewController, NielsenAppApiDelegate, WKNavigationDelegate {&lt;br /&gt;
    var nielsenApi : NielsenAppApi!&lt;br /&gt;
    var webView: WKWebView!&lt;br /&gt;
   &lt;br /&gt;
    override func loadView() {&lt;br /&gt;
        webView = WKWebView()&lt;br /&gt;
        webView.navigationDelegate = self&lt;br /&gt;
        view = webView&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    override func viewDidLoad() {&lt;br /&gt;
        super.viewDidLoad()&lt;br /&gt;
     &lt;br /&gt;
            if let url = URL(string: &amp;quot;https://sites.nielsen.com/priv/browser/cookie-policy-ie-en.html&amp;quot;) {&lt;br /&gt;
                webView.load(URLRequest(url: url))&lt;br /&gt;
                webView.allowsBackForwardNavigationGestures = true&lt;br /&gt;
        &lt;br /&gt;
        }}}&lt;br /&gt;
&lt;br /&gt;
        func closeOptOutView() {&lt;br /&gt;
            self.dismiss(animated: true, completion: nil)&lt;br /&gt;
        }}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>ColinBrown</name></author>
	</entry>
	<entry>
		<id>https://nielsentest.mywikis.net/w/index.php?title=Template:iOS_NoID_Privacy_and_Opt-Out&amp;diff=5818</id>
		<title>Template:iOS NoID Privacy and Opt-Out</title>
		<link rel="alternate" type="text/html" href="https://nielsentest.mywikis.net/w/index.php?title=Template:iOS_NoID_Privacy_and_Opt-Out&amp;diff=5818"/>
		<updated>2022-06-14T01:51:46Z</updated>

		<summary type="html">&lt;p&gt;ColinBrown: /* Sample Code */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Privacy and Opt-Out ==&lt;br /&gt;
The Irish Market build of the Nielsen SDK automatically Opt's Users out of the collection of any User Identifiable information or any Device Advertising ID.&lt;br /&gt;
&lt;br /&gt;
When building your app:&lt;br /&gt;
#  Ensure that you are using the [https://nielsendownloads-green.digitalengsdk.com/digital/Nielsen-iOS-App-SDK-GlobalNoId_latest.zip NoID version] of the Nielsen SDK Framework.&lt;br /&gt;
#  Immediately following the initialization of the Nielsen SDK ensure you call the userOptOut API with Opt out selection: &lt;br /&gt;
&amp;lt;syntaxhighlight lang=swift&amp;gt;NielsenAppApi?.userOptOut(&amp;quot;nielsenappsdk://1&amp;quot;); // User opt-out&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Retrieve current Opt-Out preference ==&lt;br /&gt;
Whether the user is opted out via OS-level Opt-out or via User Choice Opt-out, the current Opt-Out status as detected by the SDK is available via the [[optOutStatus]] property in the Nielsen SDK API&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;objective-c&amp;quot;&amp;gt;&lt;br /&gt;
@property (readonly) BOOL optOutStatus&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Display OptOut Notice ==&lt;br /&gt;
Nielsen does not use cookies in measurement in Ireland; however, you may want to present this information to your user.  Sample code on how to do this is below:&lt;br /&gt;
&lt;br /&gt;
==== Sample Code ====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;swift&amp;quot;&amp;gt;&lt;br /&gt;
import UIKit&lt;br /&gt;
import WebKit&lt;br /&gt;
import NielsenAppApi&lt;br /&gt;
&lt;br /&gt;
class OptOutVC: UIViewController, NielsenAppApiDelegate, WKNavigationDelegate {&lt;br /&gt;
    var nielsenApi : NielsenAppApi!&lt;br /&gt;
    var webView: WKWebView!&lt;br /&gt;
   &lt;br /&gt;
    override func loadView() {&lt;br /&gt;
        webView = WKWebView()&lt;br /&gt;
        webView.navigationDelegate = self&lt;br /&gt;
        view = webView&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    override func viewDidLoad() {&lt;br /&gt;
        super.viewDidLoad()&lt;br /&gt;
     &lt;br /&gt;
            if let url = URL(string: &amp;quot;https://sites.nielsen.com/priv/browser/cookie-policy-ie-en.html&amp;quot;) {&lt;br /&gt;
                webView.load(URLRequest(url: url))&lt;br /&gt;
                webView.allowsBackForwardNavigationGestures = true&lt;br /&gt;
        &lt;br /&gt;
        }}}&lt;br /&gt;
&lt;br /&gt;
        func closeOptOutView() {&lt;br /&gt;
            self.dismiss(animated: true, completion: nil)&lt;br /&gt;
        }}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>ColinBrown</name></author>
	</entry>
	<entry>
		<id>https://nielsentest.mywikis.net/w/index.php?title=Template:iOS_NoID_Privacy_and_Opt-Out&amp;diff=5817</id>
		<title>Template:iOS NoID Privacy and Opt-Out</title>
		<link rel="alternate" type="text/html" href="https://nielsentest.mywikis.net/w/index.php?title=Template:iOS_NoID_Privacy_and_Opt-Out&amp;diff=5817"/>
		<updated>2022-06-14T01:51:23Z</updated>

		<summary type="html">&lt;p&gt;ColinBrown: /* Sample Code for Global Build */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Privacy and Opt-Out ==&lt;br /&gt;
The Irish Market build of the Nielsen SDK automatically Opt's Users out of the collection of any User Identifiable information or any Device Advertising ID.&lt;br /&gt;
&lt;br /&gt;
When building your app:&lt;br /&gt;
#  Ensure that you are using the [https://nielsendownloads-green.digitalengsdk.com/digital/Nielsen-iOS-App-SDK-GlobalNoId_latest.zip NoID version] of the Nielsen SDK Framework.&lt;br /&gt;
#  Immediately following the initialization of the Nielsen SDK ensure you call the userOptOut API with Opt out selection: &lt;br /&gt;
&amp;lt;syntaxhighlight lang=swift&amp;gt;NielsenAppApi?.userOptOut(&amp;quot;nielsenappsdk://1&amp;quot;); // User opt-out&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Retrieve current Opt-Out preference ==&lt;br /&gt;
Whether the user is opted out via OS-level Opt-out or via User Choice Opt-out, the current Opt-Out status as detected by the SDK is available via the [[optOutStatus]] property in the Nielsen SDK API&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;objective-c&amp;quot;&amp;gt;&lt;br /&gt;
@property (readonly) BOOL optOutStatus&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Display OptOut Notice ==&lt;br /&gt;
Nielsen does not use cookies in measurement in Ireland; however, you may want to present this information to your user.  Sample code on how to do this is below:&lt;br /&gt;
&lt;br /&gt;
==== Sample Code ====&lt;br /&gt;
===== Swift =====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;swift&amp;quot;&amp;gt;&lt;br /&gt;
import UIKit&lt;br /&gt;
import WebKit&lt;br /&gt;
import NielsenAppApi&lt;br /&gt;
&lt;br /&gt;
class OptOutVC: UIViewController, NielsenAppApiDelegate, WKNavigationDelegate {&lt;br /&gt;
    var nielsenApi : NielsenAppApi!&lt;br /&gt;
    var webView: WKWebView!&lt;br /&gt;
   &lt;br /&gt;
    override func loadView() {&lt;br /&gt;
        webView = WKWebView()&lt;br /&gt;
        webView.navigationDelegate = self&lt;br /&gt;
        view = webView&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    override func viewDidLoad() {&lt;br /&gt;
        super.viewDidLoad()&lt;br /&gt;
     &lt;br /&gt;
            if let url = URL(string: &amp;quot;https://sites.nielsen.com/priv/browser/cookie-policy-ie-en.html&amp;quot;) {&lt;br /&gt;
                print (&amp;quot;optout url was:&amp;quot;,url)&lt;br /&gt;
                webView.load(URLRequest(url: url))&lt;br /&gt;
                webView.allowsBackForwardNavigationGestures = true&lt;br /&gt;
        &lt;br /&gt;
        }}}&lt;br /&gt;
&lt;br /&gt;
        func closeOptOutView() {&lt;br /&gt;
            self.dismiss(animated: true, completion: nil)&lt;br /&gt;
        }}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>ColinBrown</name></author>
	</entry>
	<entry>
		<id>https://nielsentest.mywikis.net/w/index.php?title=Template:iOS_NoID_Privacy_and_Opt-Out&amp;diff=5816</id>
		<title>Template:iOS NoID Privacy and Opt-Out</title>
		<link rel="alternate" type="text/html" href="https://nielsentest.mywikis.net/w/index.php?title=Template:iOS_NoID_Privacy_and_Opt-Out&amp;diff=5816"/>
		<updated>2022-06-14T01:50:44Z</updated>

		<summary type="html">&lt;p&gt;ColinBrown: /* Sample Code for Global Build */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Privacy and Opt-Out ==&lt;br /&gt;
The Irish Market build of the Nielsen SDK automatically Opt's Users out of the collection of any User Identifiable information or any Device Advertising ID.&lt;br /&gt;
&lt;br /&gt;
When building your app:&lt;br /&gt;
#  Ensure that you are using the [https://nielsendownloads-green.digitalengsdk.com/digital/Nielsen-iOS-App-SDK-GlobalNoId_latest.zip NoID version] of the Nielsen SDK Framework.&lt;br /&gt;
#  Immediately following the initialization of the Nielsen SDK ensure you call the userOptOut API with Opt out selection: &lt;br /&gt;
&amp;lt;syntaxhighlight lang=swift&amp;gt;NielsenAppApi?.userOptOut(&amp;quot;nielsenappsdk://1&amp;quot;); // User opt-out&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Retrieve current Opt-Out preference ==&lt;br /&gt;
Whether the user is opted out via OS-level Opt-out or via User Choice Opt-out, the current Opt-Out status as detected by the SDK is available via the [[optOutStatus]] property in the Nielsen SDK API&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;objective-c&amp;quot;&amp;gt;&lt;br /&gt;
@property (readonly) BOOL optOutStatus&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Display OptOut Notice ==&lt;br /&gt;
Nielsen does not use cookies in measurement in Ireland; however, you may want to present this information to your user.  Sample code on how to do this is below:&lt;br /&gt;
&lt;br /&gt;
==== Sample Code for Global Build ====&lt;br /&gt;
===== Swift =====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;swift&amp;quot;&amp;gt;&lt;br /&gt;
import UIKit&lt;br /&gt;
import WebKit&lt;br /&gt;
import NielsenAppApi&lt;br /&gt;
&lt;br /&gt;
class OptOutVC: UIViewController, NielsenAppApiDelegate, WKNavigationDelegate {&lt;br /&gt;
    var nielsenApi : NielsenAppApi!&lt;br /&gt;
    var webView: WKWebView!&lt;br /&gt;
   &lt;br /&gt;
    override func loadView() {&lt;br /&gt;
        webView = WKWebView()&lt;br /&gt;
        webView.navigationDelegate = self&lt;br /&gt;
        view = webView&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    override func viewDidLoad() {&lt;br /&gt;
        super.viewDidLoad()&lt;br /&gt;
     &lt;br /&gt;
            if let url = URL(string: &amp;quot;https://sites.nielsen.com/priv/browser/cookie-policy-ie-en.html&amp;quot;) {&lt;br /&gt;
                print (&amp;quot;optout url was:&amp;quot;,url)&lt;br /&gt;
                webView.load(URLRequest(url: url))&lt;br /&gt;
                webView.allowsBackForwardNavigationGestures = true&lt;br /&gt;
        &lt;br /&gt;
        }}}&lt;br /&gt;
&lt;br /&gt;
        func closeOptOutView() {&lt;br /&gt;
            self.dismiss(animated: true, completion: nil)&lt;br /&gt;
        }}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>ColinBrown</name></author>
	</entry>
	<entry>
		<id>https://nielsentest.mywikis.net/w/index.php?title=Template:iOS_NoID_Privacy_and_Opt-Out&amp;diff=5815</id>
		<title>Template:iOS NoID Privacy and Opt-Out</title>
		<link rel="alternate" type="text/html" href="https://nielsentest.mywikis.net/w/index.php?title=Template:iOS_NoID_Privacy_and_Opt-Out&amp;diff=5815"/>
		<updated>2022-06-14T01:49:00Z</updated>

		<summary type="html">&lt;p&gt;ColinBrown: /* Retrieve current Opt-Out preference */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Privacy and Opt-Out ==&lt;br /&gt;
The Irish Market build of the Nielsen SDK automatically Opt's Users out of the collection of any User Identifiable information or any Device Advertising ID.&lt;br /&gt;
&lt;br /&gt;
When building your app:&lt;br /&gt;
#  Ensure that you are using the [https://nielsendownloads-green.digitalengsdk.com/digital/Nielsen-iOS-App-SDK-GlobalNoId_latest.zip NoID version] of the Nielsen SDK Framework.&lt;br /&gt;
#  Immediately following the initialization of the Nielsen SDK ensure you call the userOptOut API with Opt out selection: &lt;br /&gt;
&amp;lt;syntaxhighlight lang=swift&amp;gt;NielsenAppApi?.userOptOut(&amp;quot;nielsenappsdk://1&amp;quot;); // User opt-out&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Retrieve current Opt-Out preference ==&lt;br /&gt;
Whether the user is opted out via OS-level Opt-out or via User Choice Opt-out, the current Opt-Out status as detected by the SDK is available via the [[optOutStatus]] property in the Nielsen SDK API&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;objective-c&amp;quot;&amp;gt;&lt;br /&gt;
@property (readonly) BOOL optOutStatus&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Display OptOut Notice ==&lt;br /&gt;
Nielsen does not use cookies in measurement in Ireland; however, you may want to present this information to your user.  Sample code on how to do this is below:&lt;br /&gt;
&lt;br /&gt;
==== Sample Code for Global Build ====&lt;br /&gt;
===== Swift =====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;swift&amp;quot;&amp;gt;&lt;br /&gt;
import UIKit&lt;br /&gt;
import WebKit&lt;br /&gt;
import NielsenAppApi&lt;br /&gt;
&lt;br /&gt;
class OptOutVC: UIViewController, NielsenAppApiDelegate, WKNavigationDelegate {&lt;br /&gt;
    var nielsenApi : NielsenAppApi!&lt;br /&gt;
    var webView: WKWebView!&lt;br /&gt;
   &lt;br /&gt;
    override func loadView() {&lt;br /&gt;
        webView = WKWebView()&lt;br /&gt;
        webView.navigationDelegate = self&lt;br /&gt;
        view = webView&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    override func viewDidLoad() {&lt;br /&gt;
        super.viewDidLoad()&lt;br /&gt;
&lt;br /&gt;
    if let appApi = self.nielsenApi {&lt;br /&gt;
            //Getting the optPut URL from SDK&lt;br /&gt;
            if let url = URL(string: appApi.optOutURL) {&lt;br /&gt;
                webView.load(URLRequest(url: url))&lt;br /&gt;
                webView.allowsBackForwardNavigationGestures = true&lt;br /&gt;
            }}}&lt;br /&gt;
&lt;br /&gt;
        func closeOptOutView() {&lt;br /&gt;
            self.dismiss(animated: true, completion: nil)&lt;br /&gt;
        }}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Objective-C =====&lt;br /&gt;
 &amp;lt;syntaxhighlight lang=&amp;quot;objective-c&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#import &amp;quot;OptOutVC.h&amp;quot;&lt;br /&gt;
#import &amp;quot;NielsenInit.h&amp;quot;&lt;br /&gt;
#import &amp;lt;NielsenAppApi/NielsenAppApi.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
@interface OptOutVC ()&lt;br /&gt;
&lt;br /&gt;
@property (weak, nonatomic) IBOutlet UIWebView *webView;&lt;br /&gt;
@end&lt;br /&gt;
&lt;br /&gt;
@implementation OptOutVC&lt;br /&gt;
&lt;br /&gt;
- (void)viewDidLoad {&lt;br /&gt;
    [super viewDidLoad];&lt;br /&gt;
&lt;br /&gt;
- (void)viewDidLoad {&lt;br /&gt;
    [super viewDidLoad];&lt;br /&gt;
    //Getting the optPut URL from eventTracker&lt;br /&gt;
    [self.webView loadRequest:[NSURLRequest requestWithURL:[NSURL&lt;br /&gt;
 URLWithString:self.nielsenApi.optOutURL]]];&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>ColinBrown</name></author>
	</entry>
	<entry>
		<id>https://nielsentest.mywikis.net/w/index.php?title=Digital_Measurement_iOS_Cocoapods_Guide&amp;diff=5814</id>
		<title>Digital Measurement iOS Cocoapods Guide</title>
		<link rel="alternate" type="text/html" href="https://nielsentest.mywikis.net/w/index.php?title=Digital_Measurement_iOS_Cocoapods_Guide&amp;diff=5814"/>
		<updated>2022-06-13T23:05:58Z</updated>

		<summary type="html">&lt;p&gt;ColinBrown: /* Podfile */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Breadcrumb|}} {{Breadcrumb|Digital}} {{Breadcrumb|Digital Downloads}} {{Breadcrumb|Digital Measurement iOS Artifactory Guide}} {{CurrentBreadcrumb}}&lt;br /&gt;
[[Category:Digital]]&lt;br /&gt;
&lt;br /&gt;
__NOTOC__&lt;br /&gt;
= How to install Nielsen SDK using CocoaPods =&lt;br /&gt;
CocoaPods is a dependency manager for Swift and Objective-C Cocoa projects. It has over 30 thousand libraries and is used in over 1.9 million apps. The Nielsen SDK now uses this distribution framework for improved version management and provides a Static and Dynamic Framework.&lt;br /&gt;
&lt;br /&gt;
== Initial Configuration ==&lt;br /&gt;
The Nielsen SDK integration requires Cocoapods.  &lt;br /&gt;
* The XCFramework which requires Cocoapods Version 1.10.1 or higher.&lt;br /&gt;
* The Dynamic Framework which requires Cocoapods Version 1.6.1 or higher.&lt;br /&gt;
* The Static Framework requires Cocoapods version 1.4.0. or higher.&lt;br /&gt;
&lt;br /&gt;
The full installation guide for this framework is provided on the [https://guides.cocoapods.org/using/getting-started.html Getting Started] page, and how to set up the Podfile is mentioned in [https://guides.cocoapods.org/using/using-cocoapods.html Using Cocoapods] page.&lt;br /&gt;
&lt;br /&gt;
== Repository Credentials ==&lt;br /&gt;
The first step is to add the credentials received from Nielsen into your .netrc file.&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;
== Verify version of Cocoapods ==&lt;br /&gt;
First verify that Cocoapods is installed.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=Javascript&amp;gt;&lt;br /&gt;
pod --version&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
If it is not, then install.&amp;lt;br &amp;gt;&lt;br /&gt;
===== Install via gem =====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=Javascript&amp;gt;&lt;br /&gt;
sudo gem install cocoapods&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
===== Install using homebrew ===== &lt;br /&gt;
&amp;lt;syntaxhighlight lang=Javascript&amp;gt;&lt;br /&gt;
brew install cocoapods&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
== Add Cocoapod repository ==&lt;br /&gt;
=== XCFramework (Cocoapods 1.10.1+) ===&lt;br /&gt;
If using '''XCFramework''' (preferred approach), from the command line, type the following:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=Javascript&amp;gt;&lt;br /&gt;
pod repo add NielsenAppSDK https://github.com/NielsenDigitalSDK/nielsenappsdk-ios-specs-dynamic.git&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Make sure you run the pod init command in your **project's directory.**&lt;br /&gt;
&amp;lt;syntaxhighlight lang=Javascript&amp;gt;&lt;br /&gt;
pod init&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;You now need to slightly modify the PodFile that was created in this directory.  From the command line, you can use vi or vim to edit. &amp;lt;br&amp;gt; The following must be in the PodFile:&lt;br /&gt;
==== Podfile ====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=Javascript&amp;gt;&lt;br /&gt;
platform :ios, '14.0'&lt;br /&gt;
source 'https://github.com/NielsenDigitalSDK/nielsenappsdk-ios-specs-dynamic.git'&lt;br /&gt;
&lt;br /&gt;
target 'YourProjectsNameHere' do&lt;br /&gt;
 use_frameworks!&lt;br /&gt;
    #Pods for ApplicationTarget&lt;br /&gt;
    pod 'NielsenAppSDK-XC'&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;'''Note''': If you migrate from the iOS dynamic framework to the XCFramework, just add -XC suffix for the pod in the podfile. E.g. NielsenAppSDK should be replaced with NielsenAppSDK-XC. The same Github repo is used for both dynamic and XCFramework.&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;'''Note''': Nielsen AppSDK clients with applications on TVOS platform should take into account that TVOS slices are now part of the same XCFramework with iOS slices, so the XCFramework name is the same for both iOS and TVOS. But the TVOS framework imported in the application still has TVOS in its name. This is needed to reduce the number of changes in the existing apps. The code below should be added into the podfiles for TVOS XCFramework users.&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=Javascript&amp;gt;&lt;br /&gt;
# modify XCFramework configuration files to update NielsenAppApi.framework -&amp;gt; NielsenTVAppApi.framework&lt;br /&gt;
post_install do |installer|&lt;br /&gt;
  installer.pods_project.targets.each do |target|&lt;br /&gt;
    if target.name == 'Pods-NielsenVideoPlayerTVOSPodsXC'&lt;br /&gt;
      # update Pods-NielsenVideoPlayerTVOSPodsXC.debug.xcconfig file&lt;br /&gt;
      # update Pods-NielsenVideoPlayerTVOSPodsXC.release.xcconfig file&lt;br /&gt;
      target.build_configurations.each do |config|&lt;br /&gt;
          xcconfig_path = config.base_configuration_reference.real_path&lt;br /&gt;
          puts &amp;quot;post_install: Found #{File.basename(xcconfig_path)}&amp;quot;&lt;br /&gt;
          xcconfig = File.read(xcconfig_path)&lt;br /&gt;
          new_xcconfig = xcconfig.sub('-framework &amp;quot;NielsenAppApi&amp;quot;', '-framework &amp;quot;NielsenTVAppApi&amp;quot;')&lt;br /&gt;
          File.open(xcconfig_path, &amp;quot;w&amp;quot;) { |file| file &amp;lt;&amp;lt; new_xcconfig }&lt;br /&gt;
          puts &amp;quot;post_install: Updated #{File.basename(xcconfig_path)} file with a value: NielsenTVAppApi.framework&amp;quot;&lt;br /&gt;
      end&lt;br /&gt;
      # update Pods-NielsenVideoPlayerTVOSPodsXC-frameworks.sh file&lt;br /&gt;
      frameworksh_path = &amp;quot;Pods/Target Support Files/#{target.name}/#{target.name}-frameworks.sh&amp;quot;&lt;br /&gt;
      if File.exist?(frameworksh_path)&lt;br /&gt;
        puts &amp;quot;post_install: Found #{File.basename(frameworksh_path)}&amp;quot;&lt;br /&gt;
        text = File.read(frameworksh_path)&lt;br /&gt;
        new_contents = text.gsub('NielsenAppApi.framework', 'NielsenTVAppApi.framework')&lt;br /&gt;
        File.open(frameworksh_path, &amp;quot;w&amp;quot;) {|file| file.puts new_contents}&lt;br /&gt;
        puts &amp;quot;post_install: Updated #{File.basename(frameworksh_path)} file with a value: NielsenTVAppApi.framework&amp;quot;&lt;br /&gt;
      end&lt;br /&gt;
    end&lt;br /&gt;
  end&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;blockquote&amp;gt;If you migrate from the TVOS dynamic framework to the XCFramework, please note that TVOS slices are now part of the same XCFramework with iOS slices. So in addition to appending of the -XC suffix to the pod name in the podfile please remove TVOS. E.g. the naming for the pod NielsenTVOSAppSDK should be changed to NielsenAppSDK-XC.&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Dynamic Framework (Cocoapods 1.6.1+) ===&lt;br /&gt;
&amp;lt;blockquote&amp;gt;'''Note''': We highly recommend to migrate to XCFramework for all our clients.&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
If using '''Dynamic Framework''', from the command line, type the following:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=Javascript&amp;gt;&lt;br /&gt;
pod repo add NielsenAppSDK https://github.com/NielsenDigitalSDK/nielsenappsdk-ios-specs-dynamic.git&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Make sure you run the pod init command in your **project's directory.**&lt;br /&gt;
&amp;lt;syntaxhighlight lang=Javascript&amp;gt;&lt;br /&gt;
pod init&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;You now need to slightly modify the PodFile that was created in this directory.  From the command line, you can use vi or vim to edit. &amp;lt;br&amp;gt; The following must be in the PodFile:&lt;br /&gt;
==== Podfile ====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=Javascript&amp;gt;&lt;br /&gt;
platform :ios, '11.0'&lt;br /&gt;
source 'https://github.com/NielsenDigitalSDK/nielsenappsdk-ios-specs-dynamic.git'&lt;br /&gt;
&lt;br /&gt;
target 'YourProjectsNameHere' do&lt;br /&gt;
 use_frameworks!&lt;br /&gt;
    #Pods for ApplicationTarget&lt;br /&gt;
    pod 'NielsenAppSDK'&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;blockquote&amp;gt;'''Note''': If you are building an application on a Mac with Apple M1 chip, please add the following fix to end of the podfile&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=Javascript&amp;gt;&lt;br /&gt;
post_install do |installer|&lt;br /&gt;
  installer.pods_project.build_configurations.each do |config|&lt;br /&gt;
    config.build_settings[&amp;quot;EXCLUDED_ARCHS[sdk=iphonesimulator*]&amp;quot;] = &amp;quot;arm64&amp;quot;&lt;br /&gt;
  end&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== For Static Framework (Cocoapods 1.4+) ===&lt;br /&gt;
From the command line, type the following:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=Javascript&amp;gt;&lt;br /&gt;
pod repo add NielsenAppSDK https://github.com/nielsendigitalsdk/nielsenappsdk-ios-specs.git&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Make sure you run the pod init command in your **project's directory.**&lt;br /&gt;
&amp;lt;syntaxhighlight lang=Javascript&amp;gt;&lt;br /&gt;
pod init&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;You now need to slightly modify the PodFile that was created in this directory.  From the command line, you can use vi or vim to edit. &amp;lt;br&amp;gt; The following must be in the PodFile:&lt;br /&gt;
==== Podfile ====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=Javascript&amp;gt;&lt;br /&gt;
platform :ios, '11.0'&lt;br /&gt;
source 'https://github.com/NielsenDigitalSDK/nielsenappsdk-ios-specs.git'&lt;br /&gt;
&lt;br /&gt;
target 'YourProjectsNameHere' do&lt;br /&gt;
    #Pods for ApplicationTarget&lt;br /&gt;
    pod 'NielsenAppSDK'&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;blockquote&amp;gt;'''Note''': If you are building an application on a Mac with Apple M1 chip, please add the following fix to end of the podfile&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=Javascript&amp;gt;&lt;br /&gt;
post_install do |installer|&lt;br /&gt;
  installer.pods_project.build_configurations.each do |config|&lt;br /&gt;
    config.build_settings[&amp;quot;EXCLUDED_ARCHS[sdk=iphonesimulator*]&amp;quot;] = &amp;quot;arm64&amp;quot;&lt;br /&gt;
  end&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
''NOTE: You can have multiple pods within the Podfile''&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
To select a specific version of the Nielsen SDK, just append the build number.  For example, this line is requesting XCFramework build 8.1.0.0:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=javascript&amp;gt;&lt;br /&gt;
pod 'NielsenAppSDK-XC','8.1.0.0'&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&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.&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
=== For Cocoapods Versions &amp;lt; 1.6.0 ===&lt;br /&gt;
&lt;br /&gt;
If you are using a version of Cocoapods that is less than 1.6.0, you have a Swift Project and your pod has '''use_frameworks!''' please use the following:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=javascript&amp;gt;&lt;br /&gt;
# Uncomment the next line to define a global platform for your project&lt;br /&gt;
platform :ios, '8.0'&lt;br /&gt;
source 'https://github.com/NielsenDigitalSDK/nielsenappsdk-ios-specs.git'&lt;br /&gt;
&lt;br /&gt;
target 'YourProjectsNameHere' do&lt;br /&gt;
  # Comment the next line if you're not using Swift and don't want to use dynamic frameworks&lt;br /&gt;
use_frameworks!&lt;br /&gt;
    #Pods for ApplicationTarget&lt;br /&gt;
    pod 'NielsenAppSDK'&lt;br /&gt;
&lt;br /&gt;
static_frameworks = ['NielsenAppSDK']&lt;br /&gt;
# make all the other frameworks into static frameworks by overriding the static_framework? function to return true&lt;br /&gt;
pre_install do |installer|&lt;br /&gt;
    installer.pod_targets.each do |pod|&lt;br /&gt;
        if static_frameworks.include?(pod.name)&lt;br /&gt;
            puts &amp;quot;Overriding the static_framework? method for #{pod.name}&amp;quot;&lt;br /&gt;
            def pod.static_framework?;&lt;br /&gt;
            true&lt;br /&gt;
            end&lt;br /&gt;
        end&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Execute Install ==&lt;br /&gt;
Once that has been edited, you can now execute the install:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=Swift&amp;gt;&lt;br /&gt;
pod install&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Cocoapods will automatically create a new file with extension “.xcworkspace”. From this moment, that file should be used for using the target project instead of previous one with extension “.xcodeproj”. Inside of this workspace you will see “Pods” target which will include ready to use NielsenAppApi framework.&lt;br /&gt;
&lt;br /&gt;
Open the file with the extension of &amp;lt;code&amp;gt;.xcworkspace&amp;lt;/code&amp;gt; file using Xcode.&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
== Build Notes ==&lt;br /&gt;
Please note that the Nielsen dynamic framework contains slices for devices and simulators.  When building your project it is recommended that Simulator slices are removed before sending the app to the AppStore.   An example of the shell script that should be added as a Run Script phase in the application is attached&lt;br /&gt;
&amp;lt;syntaxhighlight lang=Swift&amp;gt;&lt;br /&gt;
APP_PATH=&amp;quot;${TARGET_BUILD_DIR}/${WRAPPER_NAME}&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# This script loops through the frameworks embedded in the application and&lt;br /&gt;
# removes unused architectures.&lt;br /&gt;
find &amp;quot;$APP_PATH&amp;quot; -name '*.framework' -type d | while read -r FRAMEWORK&lt;br /&gt;
do&lt;br /&gt;
FRAMEWORK_EXECUTABLE_NAME=$(defaults read &amp;quot;$FRAMEWORK/Info.plist&amp;quot; CFBundleExecutable)&lt;br /&gt;
FRAMEWORK_EXECUTABLE_PATH=&amp;quot;$FRAMEWORK/$FRAMEWORK_EXECUTABLE_NAME&amp;quot;&lt;br /&gt;
echo &amp;quot;Executable is $FRAMEWORK_EXECUTABLE_PATH&amp;quot;&lt;br /&gt;
&lt;br /&gt;
EXTRACTED_ARCHS=()&lt;br /&gt;
&lt;br /&gt;
for ARCH in $ARCHS&lt;br /&gt;
do&lt;br /&gt;
echo &amp;quot;Extracting $ARCH from $FRAMEWORK_EXECUTABLE_NAME&amp;quot;&lt;br /&gt;
lipo -extract &amp;quot;$ARCH&amp;quot; &amp;quot;$FRAMEWORK_EXECUTABLE_PATH&amp;quot; -o &amp;quot;$FRAMEWORK_EXECUTABLE_PATH-$ARCH&amp;quot;&lt;br /&gt;
EXTRACTED_ARCHS+=(&amp;quot;$FRAMEWORK_EXECUTABLE_PATH-$ARCH&amp;quot;)&lt;br /&gt;
done&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;Merging extracted architectures: ${ARCHS}&amp;quot;&lt;br /&gt;
lipo -o &amp;quot;$FRAMEWORK_EXECUTABLE_PATH-merged&amp;quot; -create &amp;quot;${EXTRACTED_ARCHS[@]}&amp;quot;&lt;br /&gt;
rm &amp;quot;${EXTRACTED_ARCHS[@]}&amp;quot;&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;Replacing original executable with thinned version&amp;quot;&lt;br /&gt;
rm &amp;quot;$FRAMEWORK_EXECUTABLE_PATH&amp;quot;&lt;br /&gt;
mv &amp;quot;$FRAMEWORK_EXECUTABLE_PATH-merged&amp;quot; &amp;quot;$FRAMEWORK_EXECUTABLE_PATH&amp;quot;&lt;br /&gt;
&lt;br /&gt;
done&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Pod Versions ==&lt;br /&gt;
The following Pod versions are now available: (For 'kids' apps, please use the NoId framework (EG: NielsenNoIdAppSDK-XC).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;'''Note''': Nielsen SDK builds for tvOS are no longer distributed as separated packages. XCFramework allows to combine iOS and tvOS platforms in a single package. Please use the corresponding XCFramework while migrating from static or dynamic framework for tvOS. E.g. NielsenTVOSAppSDK -&amp;gt; NielsenAppSDK-XC.&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width: 30%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background-color:#efefef;&amp;quot;&lt;br /&gt;
! App Flavor Name&lt;br /&gt;
|-&lt;br /&gt;
| NielsenAppSDK-XC&lt;br /&gt;
|-&lt;br /&gt;
| NielsenNoAdAppSDK-XC&lt;br /&gt;
|-&lt;br /&gt;
| NielsenNoIdAppSDK-XC&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
We highly recommend to migrate to XCFramework for all our clients. For clients who still have reasons to keep using the old framework packages in the application and do not migrate to XCFramework we distribute &amp;quot;fat&amp;quot; frameworks both static and dynamic for the release 8.1.0.0. Anyway, our plan to stop distributing &amp;quot;fat&amp;quot; frameworks for future releases and to distribute the Nielsen iOS SDK as an XCFramework only.&lt;br /&gt;
&lt;br /&gt;
The following Pod versions are available: (For 'kids' apps, please use the NoId framework (EG: NielsenNoIdAppSDK, NielsenNoIdTVOSAppSDK) &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width: 30%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background-color:#efefef;&amp;quot;&lt;br /&gt;
! App Flavor Name&lt;br /&gt;
|-&lt;br /&gt;
| NielsenAppSDK&lt;br /&gt;
|-&lt;br /&gt;
| NielsenNoAdAppSDK&lt;br /&gt;
|-&lt;br /&gt;
| NielsenNoAdTVOSAppSDK&lt;br /&gt;
|-&lt;br /&gt;
| NielsenNoIdAppSDK &lt;br /&gt;
|-&lt;br /&gt;
| NielsenNoIdTVOSAppSDK &lt;br /&gt;
|-&lt;br /&gt;
| NielsenTVOSAppSDK&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Regional Builds ===&lt;br /&gt;
(For 'kids' apps, please use the NoId framework (EG: NielsenAGFNoIdAppSDK-XC, NielsenAGFNoIdTVOSAppSDK-XC) &lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width: 30%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background-color:#efefef;&amp;quot;&lt;br /&gt;
! App Flavor Name&lt;br /&gt;
|-&lt;br /&gt;
| NielsenAGFAppSDK-XC&lt;br /&gt;
|-&lt;br /&gt;
| NielsenAGFNoAdAppSDK-XC&lt;br /&gt;
|-&lt;br /&gt;
| NielsenAGFNoIdAppSDK-XC&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Fat frameworks are still available for the release 8.1.0.0.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width: 30%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background-color:#efefef;&amp;quot;&lt;br /&gt;
! App Flavor Name&lt;br /&gt;
|-&lt;br /&gt;
| NielsenAGFAppSDK&lt;br /&gt;
|-&lt;br /&gt;
| NielsenAGFNoAdAppSDK&lt;br /&gt;
|-&lt;br /&gt;
| NielsenAGFNoAdTVOSAppSDK&lt;br /&gt;
|-&lt;br /&gt;
| NielsenAGFNoIdAppSDK&lt;br /&gt;
|-&lt;br /&gt;
| NielsenAGFNoIdTVOSAppSDK&lt;br /&gt;
|-&lt;br /&gt;
| NielsenAGFTVOSAppSDK&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Appsdk 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 iOS 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;ai.8.1.0.0_abc&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Additional Resources ===&lt;br /&gt;
&lt;br /&gt;
For more information on [https://guides.cocoapods.org/using/getting-started.html) CocoaPods] or How to set up the Profile in the [https://guides.cocoapods.org/using/using-cocoapods.html) Using Cocoapods] page.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>ColinBrown</name></author>
	</entry>
	<entry>
		<id>https://nielsentest.mywikis.net/w/index.php?title=Template:DCR_Content_Metadata&amp;diff=5807</id>
		<title>Template:DCR Content Metadata</title>
		<link rel="alternate" type="text/html" href="https://nielsentest.mywikis.net/w/index.php?title=Template:DCR_Content_Metadata&amp;diff=5807"/>
		<updated>2022-05-18T22:36:34Z</updated>

		<summary type="html">&lt;p&gt;ColinBrown: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
! '''Keys''' !! '''Description''' !! '''Values''' !! '''Required'''!!'''Provider'''&lt;br /&gt;
|-&lt;br /&gt;
| type || Type of asset ||For Video use: &amp;lt;code&amp;gt;content&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt; For Static or text &amp;lt;code&amp;gt;static&amp;lt;/code&amp;gt; || Yes || Nielsen&lt;br /&gt;
|-style=&amp;quot;background-color:#e9f9fa;&amp;quot;&lt;br /&gt;
| assetid || Unique ID assigned to asset &amp;lt;br&amp;gt; Note: Refrain from using the following special characters [[Special_Characters|(Special Characters)]]. || Examples: &amp;lt;br&amp;gt; &amp;lt;code&amp;gt;BBT345a234 &amp;lt;/code&amp;gt; &amp;lt;br&amp;gt; &amp;lt;code&amp;gt;CBSs5e234F2021&amp;lt;/code&amp;gt;  || Yes || Client &lt;br /&gt;
|-&lt;br /&gt;
| program ||Complete program or movie title &amp;lt;br&amp;gt; (no abbreviations or shorthand) &amp;lt;br&amp;gt; Note: there is a 25 character limit.  ||&amp;lt;code&amp;gt; The Big Bang Theory&amp;lt;/code&amp;gt; &amp;lt;br&amp;gt; &amp;lt;code&amp;gt; TheBigBangTheory&amp;lt;/code&amp;gt; &amp;lt;br&amp;gt;&amp;lt;code&amp;gt; The Dark Knight&amp;lt;/code&amp;gt; &amp;lt;br&amp;gt;&amp;lt;code&amp;gt; TheDarkKnight&amp;lt;/code&amp;gt; &amp;lt;br&amp;gt; || Yes || Client &lt;br /&gt;
|-style=&amp;quot;background-color:#e9f9fa;&amp;quot;&lt;br /&gt;
| title ||Episode title with season and episode number (40 character limit) &amp;lt;br&amp;gt; (Formats accepted: S01E03, S1E3, S1 E3). || Examples: &amp;lt;br&amp;gt; &amp;lt;code&amp;gt;The Pants Alternative S03E18&amp;lt;/code&amp;gt; &amp;lt;br&amp;gt; &amp;lt;code&amp;gt;The Pants Alternative S3E18&amp;lt;/code&amp;gt; &amp;lt;br&amp;gt; &amp;lt;code&amp;gt;The Pants Alternative S3 E18&amp;lt;/code&amp;gt; &amp;lt;br&amp;gt; Can also accept: &amp;lt;code&amp;gt; S3E18&amp;lt;/code&amp;gt; &amp;lt;br&amp;gt; Not Valid: &amp;lt;code&amp;gt; 318 &amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt; 0318 &amp;lt;/code&amp;gt;|| Yes || Client &lt;br /&gt;
|-&lt;br /&gt;
| crossId1 || Gracenote TMS ID (If available) should be passed for all telecasted content for clients using the Gracenote solution for proper matching purposes. &amp;lt;br&amp;gt;Note: The TMS ID will be a 14 character string. Normally leading with 2 alpha characerts ('EP', 'MV', 'SH' or 'SP'), followed by 12 numbers.&lt;br /&gt;
|| The TMS ID will be a 14 character string. &amp;lt;br&amp;gt; Normally being with  'EV,' 'EP', 'SH', 'SP', or 'MV' &amp;lt;br&amp;gt; Followed by 12 numbers after the initial two letter prefix. &amp;lt;br&amp;gt; &amp;lt;br&amp;gt; The Giant Morning Show: &amp;lt;code&amp;gt;SH009311820022&amp;lt;/code&amp;gt; &amp;lt;br&amp;gt; The Pants Alternative Episode : &amp;lt;code&amp;gt;EP009311820061&amp;lt;/code&amp;gt; || Optional || Nielsen&lt;br /&gt;
|-style=&amp;quot;background-color:#e9f9fa;&amp;quot;&lt;br /&gt;
| crossId2 || Populated by content distributor to contribute viewing from that distributor to the given content originator. || Custom&amp;lt;br&amp;gt;For a full list of acceptable values, please contact your Nielsen reprentative. || Yes, for distributors || Nielsen&lt;br /&gt;
|-&lt;br /&gt;
| length || Length of content in seconds&amp;lt;br&amp;gt;Note: Integers and decimals are acceptable values are acceptable for the length parameter. || Examples:&lt;br /&gt;
&amp;lt;small&amp;gt;For standard VOD content - &amp;lt;code&amp;gt;300&amp;lt;/code&amp;gt; to represent 5 minutes, &amp;lt;code&amp;gt;1320&amp;lt;/code&amp;gt; to represent 22 minutes, etc.&lt;br /&gt;
&amp;lt;br&amp;gt;If DAI live stream of a discrete program (Live Event/Sporting Event), pass length of content. See example for standard VOD content above.&lt;br /&gt;
&amp;lt;br&amp;gt;If unknown DAI live steam, pass a value of &amp;lt;code&amp;gt;0&amp;lt;/code&amp;gt;.&amp;lt;/small&amp;gt; &lt;br /&gt;
|| Yes || Client &lt;br /&gt;
|-style=&amp;quot;background-color:#e9f9fa;&amp;quot;&lt;br /&gt;
| airdate ||Original broadcast or release date for the program &amp;lt;br&amp;gt;For USA, date should be EST &amp;lt;br&amp;gt; Outside USA, date should be local time.&amp;lt;br&amp;gt;If not applicable or available, original broadcast or release date for the Program. || Acceptable Formats:&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;YYYY-MM-DDTHH:MI:SS&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;YYYY-MM-DDHH:MI:SS&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;YYYY-MM-DDTHH:MI:SS+xx:xx&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;YYYY-MM-DDTHH:MI:SS-xx:xx&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;YYYYMMDDHH:MI:SS&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;YYYYMMDD HH:MI:SS&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;MM-DD-YYYY&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;MM/DD/YYYY&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;YYYYMMDD&amp;lt;/code&amp;gt;&amp;lt;/big&amp;gt; || Yes || Client &lt;br /&gt;
|-&lt;br /&gt;
| isfullepisode || Full episode flag to identify differences between long form content. || &amp;lt;code&amp;gt;y&amp;lt;/code&amp;gt;- full episode, &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt;- non full episode(clip,teaser,promo,etc.)&lt;br /&gt;
&amp;lt;small&amp;gt;Also accept: &lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;lf&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;yes&amp;lt;/code&amp;gt;- longform&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;sf&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;no&amp;lt;/code&amp;gt;- shortform&lt;br /&gt;
|| Yes || Nielsen&lt;br /&gt;
|-style=&amp;quot;background-color:#e9f9fa;&amp;quot;&lt;br /&gt;
| adloadtype || &amp;lt;big&amp;gt;&amp;lt;small&amp;gt;Type of ad load: &lt;br /&gt;
&amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt; Linear – matches TV ad load&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;2&amp;lt;/code&amp;gt; Dynamic – Dynamic Ad Insertion (DAI)&amp;lt;/small&amp;gt;&amp;lt;/big&amp;gt;&lt;br /&gt;
|| &amp;lt;code&amp;gt;2&amp;lt;/code&amp;gt; - DCR measures content with dynamic ads || Yes || Nielsen&lt;br /&gt;
|-&lt;br /&gt;
| segB || One of two custom segment for the clients granular reporting within a brand. || Examples:&amp;lt;br&amp;gt;Genre - &amp;lt;code&amp;gt;horror&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;comedy&amp;lt;/code&amp;gt;, etc.&amp;lt;br&amp;gt;Timeslot - &amp;lt;code&amp;gt;primetime&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;daytime&amp;lt;/code&amp;gt;, etc.&amp;lt;br&amp;gt;News type - &amp;lt;code&amp;gt;breakingnews&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;weather&amp;lt;/code&amp;gt;, etc. || Optional || Client &lt;br /&gt;
|-style=&amp;quot;background-color:#e9f9fa;&amp;quot;&lt;br /&gt;
| segC || One of two custom segment for the clients granular reporting within a brand. || Examples:&amp;lt;br&amp;gt;Genre - &amp;lt;code&amp;gt;horror&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;comedy&amp;lt;/code&amp;gt;, etc.&amp;lt;br&amp;gt;Timeslot - &amp;lt;code&amp;gt;primetime&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;daytime&amp;lt;/code&amp;gt;, etc.&amp;lt;br&amp;gt;News type - &amp;lt;code&amp;gt;breakingnews&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;weather&amp;lt;/code&amp;gt;, etc. || Optional || Client &lt;br /&gt;
|}&lt;br /&gt;
Custom segments (segB and segC) can be used to aggregate video and/or static content within a single Brand to receive more granular reports within a brand.&lt;br /&gt;
&lt;br /&gt;
Examples regarding usage of segments within SDK:&lt;br /&gt;
* All comedy clips and stories for a Brand rolled into a &amp;quot;Comedy&amp;quot; segment&lt;br /&gt;
* genre grouping content by Comedy vs. Drama&lt;br /&gt;
* group related Text + Video content - i.e. for a show that has a lot of - static pages associated with it&lt;br /&gt;
* packaging based on how clients sell inventory&lt;br /&gt;
* grouping related types of content either by genre, category or platform.&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;/div&gt;</summary>
		<author><name>ColinBrown</name></author>
	</entry>
	<entry>
		<id>https://nielsentest.mywikis.net/w/index.php?title=DCR_Chromecast_Android_SDK&amp;diff=5786</id>
		<title>DCR Chromecast Android SDK</title>
		<link rel="alternate" type="text/html" href="https://nielsentest.mywikis.net/w/index.php?title=DCR_Chromecast_Android_SDK&amp;diff=5786"/>
		<updated>2022-05-10T17:56:50Z</updated>

		<summary type="html">&lt;p&gt;ColinBrown: /* 4. Receiver app (JavaScript) - Nielsen SDK implementation */&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;
== 1. General Cast architecture ==&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
[[File:ScreenShot-2021-3-09-b.jpg||600px|center|]]&lt;br /&gt;
See https://developers.google.com/cast/docs/developers&lt;br /&gt;
&lt;br /&gt;
=== Sender App ===&lt;br /&gt;
is a user-controlled native app that runs on a mobile device (Android, iOS) or a laptop (JS).&lt;br /&gt;
&lt;br /&gt;
=== Receiver App ===&lt;br /&gt;
is an HTML5/JavaScript application placed at a custom URL that handles communication between the sender app and the Chromecast device.&lt;br /&gt;
&lt;br /&gt;
== 2. Cast scenarios ==&lt;br /&gt;
&lt;br /&gt;
=== 2.1 Pure casting scenario === &lt;br /&gt;
The video is only playing on a Chromecast device. &amp;lt;br /&amp;gt;&lt;br /&gt;
The sender app should not pass any Nielsen API calls once the pure casting scenario starts. All Nielsen API calls are handled by the receiver app.&lt;br /&gt;
[[File:Screen Shot 2018-09-25 at 09.35.08.png|600px|center]]&lt;br /&gt;
&lt;br /&gt;
=== 2.2 Chromecast mirroring scenario ===&lt;br /&gt;
The video is playing on both the sender and receiver apps. &amp;lt;br /&amp;gt; &lt;br /&gt;
Both the sender and receiver apps should pass Nielsen API calls.&lt;br /&gt;
[[File:Screen Shot 2018-09-25 at 09.35.19.png|600px|center]]&lt;br /&gt;
&lt;br /&gt;
== 3.Sender App (Android/Java) - Nielsen SDK implementation ==&lt;br /&gt;
&lt;br /&gt;
=== 3.1 General ===&lt;br /&gt;
By adding the below cast-specific API calls alongside the standard implementation of the Nielsen AppSDK into your native application, a sender app can pass appropriate cast-specific metadata.&lt;br /&gt;
&lt;br /&gt;
=== 3.2 API call updateOTT ===&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
mAppSdk.updateOTT(JSONObject ottInfo)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
Use the updateOTT method to notify the AppSDK whether the remote OTT device (like Google ChromeCast, Roku, Amazon FireTV, etc.) is connected or disconnected (indicated by &amp;quot;ottStatus&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
When the OTT device is connected, call updateOTT with &amp;quot;ottStatus&amp;quot;: &amp;quot;1&amp;quot; as well as a set of OTT device related parameters in the ottConfig JSONObject.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
ottConfig = new JSONObject()&lt;br /&gt;
        .put(&amp;quot;ottStatus&amp;quot;, &amp;quot;1&amp;quot;)&lt;br /&gt;
        .put(&amp;quot;ottName&amp;quot;, &amp;quot;casting”) // (casting, screen mirroring, ..) &lt;br /&gt;
        .put(&amp;quot;ottDevice&amp;quot;, &amp;quot;chromecast&amp;quot;)&lt;br /&gt;
        .put(&amp;quot;ottDeviceName&amp;quot;, &amp;quot;Google ChromeCast&amp;quot;)&lt;br /&gt;
        .put(&amp;quot;ottDeviceID&amp;quot;, &amp;quot;xxxx-xxxx-xxxx&amp;quot;)&lt;br /&gt;
        .put(&amp;quot;ottDeviceManufacturer&amp;quot;, &amp;quot;Google&amp;quot;)&lt;br /&gt;
        .put(&amp;quot;ottDeviceModel&amp;quot;, &amp;quot;ChromeCast&amp;quot;)&lt;br /&gt;
        .put(&amp;quot;ottDeviceVersion&amp;quot;, &amp;quot;1.0.0&amp;quot;);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
When the OTT device is disconnected, call updateOTT with &amp;quot;ottStatus&amp;quot;: &amp;quot;0&amp;quot;.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
ottConfig = new JSONObject()&lt;br /&gt;
        .put(&amp;quot;ottStatus&amp;quot;, &amp;quot;0&amp;quot;)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Notes:&lt;br /&gt;
* Every time the application is launched or moves to foreground, call updateOTT to report the current OTT status.&lt;br /&gt;
* The application needs to report all the possible OTT types (casting, screen mirroring, and any other types) to App SDK.&lt;br /&gt;
* Some variables of the ottConfig object can be populated from the cast framework as seen below:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
String ottDeviceName = castSession.getCastDevice().getFriendlyName();&lt;br /&gt;
String ottDeviceId = castSession.getCastDevice().getDeviceId();&lt;br /&gt;
String ottDeviceModelName = castSession.getCastDevice().getModelName();&lt;br /&gt;
String ottDeviceVersion = castSession.getCastDevice().getDeviceVersion();&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 3.3 API call getOptOutStatus() and getDemographicId() ===&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
mAppSdk.getOptOutStatus()&lt;br /&gt;
mAppSdk.getDemographicId()&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
The sender device will need to retrieve the Opt Out status using getOptOutStatus() and the Demographic ID using getDemographicId(). These values should be sent to the Chromecast at the beginning of the casting session. Both API calls must be run in AsyncTasks to retrieve proper values.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
1. Define pre-defined static variables&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
private static final String MEDIA_METADATA_KEY_DEVICE_ID = &amp;quot;kGCKMetadataNlsKeyDeviceID&amp;quot;;&lt;br /&gt;
private static final String MEDIA_METADATA_KEY_OPTOUT_STATE = &amp;quot;kGCKMetadataNlsKeyOptout&amp;quot;;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2. Start AsyncTask to retrieve values&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
  if(mSdkDevIdAndOptoutStateFetcherThread != null &amp;amp;&amp;amp; !mSdkDevIdAndOptoutStateFetcherThread.isAlive()){&lt;br /&gt;
                    mSdkDevIdAndOptoutStateFetcherThread.start();&lt;br /&gt;
                }&lt;br /&gt;
&lt;br /&gt;
 private class SdkDevIdAndOptoutStateFetcherThread extends Thread&lt;br /&gt;
    {&lt;br /&gt;
        @Override&lt;br /&gt;
        public void run()&lt;br /&gt;
        {&lt;br /&gt;
            if(mAppSdk != null)&lt;br /&gt;
            {&lt;br /&gt;
                // Get the demographic id and the user optout status from AppSDK&lt;br /&gt;
                mDemographicId = mAppSdk.getDemographicId();&lt;br /&gt;
                mSdkOptoutState = String.valueOf(mAppSdk.getOptOutStatus());&lt;br /&gt;
                runOnUiThread(new Runnable()&lt;br /&gt;
                {&lt;br /&gt;
                    @Override&lt;br /&gt;
                    public void run()&lt;br /&gt;
                    {&lt;br /&gt;
                        // Once the optout status is retrieved, proceed with the casting of media to remote cast device&lt;br /&gt;
                        onApplicationConnected(mCastSession);&lt;br /&gt;
                    }&lt;br /&gt;
              });}} }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
3. Pass result of getOptOutStatus() and getDemographicId() to defined variable within MediaMetaData&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
MediaMetadata mediaMetadata = new MediaMetadata( MediaMetadata.MEDIA_TYPE_MOVIE );&lt;br /&gt;
mediaMetadata.putString( MediaMetadata.KEY_TITLE, channelName.getText().toString());&lt;br /&gt;
&lt;br /&gt;
mediaMetadata.putString( MEDIA_METADATA_KEY_DEVICE_ID, mDemographicId);&lt;br /&gt;
mediaMetadata.putString( MEDIA_METADATA_KEY_OPTOUT_STATE, mSdkOptoutState);&lt;br /&gt;
&lt;br /&gt;
MediaInfo mediaInfo = new MediaInfo.Builder(mNowPlayingUrl)&lt;br /&gt;
            .setContentType( getString( R.string.content_type_mp4 ) )&lt;br /&gt;
            .setStreamType( MediaInfo.STREAM_TYPE_BUFFERED )&lt;br /&gt;
            .setMetadata( mediaMetadata )&lt;br /&gt;
            .build();&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Notes :&lt;br /&gt;
* To get more information about Opt Out, please refer to general AppSDK implementation guide Chapter Step 6: Privacy and Nielsen Opt-Out&lt;br /&gt;
* Result of getOptOutStatus() should be 0 or 1 (true or false)&lt;br /&gt;
* Result of getDemographicId() is an alphanumeric string (ex: a5ff494cce22bda39b29da2509f90f52e4e044587107ba9ca092eb3a1c2eccdf)&lt;br /&gt;
&lt;br /&gt;
== 4. Receiver app (JavaScript) - Nielsen SDK implementation  ==&lt;br /&gt;
Once casting starts, the receiver app becomes important as a BSDK instance must be created and the related appropriate API events must be called. Please refer to the Browser SDK guide for more information.&lt;br /&gt;
&lt;br /&gt;
=== 4.1 BSDK init ===&lt;br /&gt;
The BSDK receiver instance gets initialized on load of the Chromecast receiver app.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
window.nolSDKInstance = NOLBUNDLE.nlsQ(&amp;quot;Pxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxx&amp;quot;, &amp;quot;ChromeCastInstance&amp;quot; );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Note: replace &amp;quot;Pxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxx&amp;quot; with your Nielsen provided AppID.&lt;br /&gt;
&lt;br /&gt;
=== 4.2 LoadMetadata=== &lt;br /&gt;
On load of remote player, retrieve content metadata sent by the sender device and pass it using the loadMetadata API call.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
var metadata = {&lt;br /&gt;
              &amp;quot;assetid&amp;quot; : senderMetadata.assetid,&lt;br /&gt;
              &amp;quot;type&amp;quot; : senderMetadata.type,&lt;br /&gt;
              &amp;quot;program&amp;quot; : senderMetadata.program,&lt;br /&gt;
              &amp;quot;title&amp;quot; : senderMetadata.title,&lt;br /&gt;
              &amp;quot;length&amp;quot; : senderMetadata.length,&lt;br /&gt;
              &amp;quot;mediaUrl&amp;quot; : senderMetadata.mediaUrl,&lt;br /&gt;
              &amp;quot;airdate&amp;quot; : senderMetadata.airdate,&lt;br /&gt;
              &amp;quot;isfullepisode&amp;quot; : senderMetadata.isfullepisode,&lt;br /&gt;
              &amp;quot;crossId1&amp;quot; : senderMetadata.crossId1,&lt;br /&gt;
              &amp;quot;nol_c1&amp;quot; : senderMetadata.nol_c1,&lt;br /&gt;
              &amp;quot;nol_c2&amp;quot; : senderMetadata.nol_c2,&lt;br /&gt;
              &amp;quot;segB&amp;quot; : senderMetadata.segB,&lt;br /&gt;
              &amp;quot;segC&amp;quot; : senderMetadata.segC,&lt;br /&gt;
              &amp;quot;adloadtype&amp;quot; : senderMetadata.adloadtype,&lt;br /&gt;
              &amp;quot;hasAds&amp;quot; : senderMetadata.hasAds&lt;br /&gt;
          };&lt;br /&gt;
window.nolSDKInstance.ggPM('loadmetadata', metadata);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Note : refer to specification of Czech MetaData and follow it&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
=== 4.3 updateOTT  ===&lt;br /&gt;
Send the updateOTT event to BSDK receiver instance. The updateOTT event should relay the ottmetadata (kGCKMetadataNlsKeyDeviceID and kGCKMetadataNlsKeyOptout) received from sender app.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
sessionId = senderMetadata.kGCKMetadataNlsKeyNUID?senderMetadata.kGCKMetadataNlsKeyNUID:senderMetadata.kGCKMetadataNlsKeyDeviceID;&lt;br /&gt;
&lt;br /&gt;
var contentMetadataObject ={&lt;br /&gt;
                        type: &amp;quot;content&amp;quot;,&lt;br /&gt;
                        ottStatus: &amp;quot;1&amp;quot;,&lt;br /&gt;
                        ottType: &amp;quot;casting&amp;quot;,&lt;br /&gt;
                        ottDevice: &amp;quot;chromecast&amp;quot;,&lt;br /&gt;
                        ottDeviceName: &amp;quot;Google Chromecast&amp;quot;,&lt;br /&gt;
                        ottDeviceID: sessionId,&lt;br /&gt;
                        ottDeviceManufacturer: &amp;quot;Google&amp;quot;,&lt;br /&gt;
                        ottDeviceModel: &amp;quot;ChromeCastModel&amp;quot;,&lt;br /&gt;
                        ottDeviceVersion: &amp;quot;1.0.0&amp;quot;, &lt;br /&gt;
    kGCKMetadataNlsKeyOptout : ([&amp;quot;1&amp;quot;,true,1,&amp;quot;true&amp;quot;].indexOf(senderMetadata.kGCKMetadataNlsKeyOptout)&amp;gt;=0)?true:false,&lt;br /&gt;
                        kGCKMetadataNlsKeyDeviceID : sessionId&lt;br /&gt;
                  };&lt;br /&gt;
window.nolSDKInstance.ggPM('updateOTT', contentMetadataObject);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 4.4 Rest of API calls  ===&lt;br /&gt;
Fire off other API calls based on App/Player state. Refer to the BSDK implementation guide for more information.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
// play&lt;br /&gt;
window.nolSDKInstance.ggPM('play',Math.round(event.path[0].currentTime));&lt;br /&gt;
&lt;br /&gt;
// setPlayheadPosition&lt;br /&gt;
window.nolSDKInstance.ggPM('setPlayheadPosition',Math.round(event.path[0].currentTime));&lt;br /&gt;
&lt;br /&gt;
// pause&lt;br /&gt;
window.nolSDKInstance.ggPM('pause',Math.round(event.path[0].currentTime));&lt;br /&gt;
&lt;br /&gt;
// stop&lt;br /&gt;
window.nolSDKInstance.ggPM('stop',Math.round(event.path[0].currentTime));&lt;br /&gt;
&lt;br /&gt;
// end&lt;br /&gt;
window.nolSDKInstance.ggPM('end',Math.round(event.path[0].currentTime));&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
=== 4.3 Sample code  ===&lt;br /&gt;
Below is a sample code snippet on how the receiver app should retrieve the ottMetadata received from sender apps and relay the information to receiver BSDK instance.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
sampleplayer.CastPlayer.prototype.onLoad_ = function(event) {&lt;br /&gt;
&lt;br /&gt;
var senderMetadata = event.data.media.metadata,&lt;br /&gt;
	    &lt;br /&gt;
sessionId =senderMetadata.kGCKMetadataNlsKeyDeviceID;&lt;br /&gt;
&lt;br /&gt;
  this.cancelDeferredPlay_('new media is loaded');&lt;br /&gt;
  this.load(new cast.receiver.MediaManager.LoadInfo( (event.data),  event.senderId));&lt;br /&gt;
	var contentMetadata = {&lt;br /&gt;
         	      &amp;quot;assetid&amp;quot; : senderMetadata.assetid,&lt;br /&gt;
              &amp;quot;type&amp;quot; : senderMetadata.type,&lt;br /&gt;
              &amp;quot;program&amp;quot; : senderMetadata.program,&lt;br /&gt;
              &amp;quot;title&amp;quot; : senderMetadata.title,&lt;br /&gt;
              &amp;quot;length&amp;quot; : senderMetadata.length,&lt;br /&gt;
              &amp;quot;mediaUrl&amp;quot; : senderMetadata.mediaUrl,&lt;br /&gt;
              &amp;quot;airdate&amp;quot; : senderMetadata.airdate,&lt;br /&gt;
              &amp;quot;isfullepisode&amp;quot; : senderMetadata.isfullepisode,&lt;br /&gt;
              &amp;quot;crossId1&amp;quot; : senderMetadata.crossId1,&lt;br /&gt;
              &amp;quot;nol_c1&amp;quot; : senderMetadata.nol_c1,&lt;br /&gt;
              &amp;quot;nol_c2&amp;quot; : senderMetadata.nol_c2,&lt;br /&gt;
              &amp;quot;segB&amp;quot; : senderMetadata.segB,&lt;br /&gt;
              &amp;quot;segC&amp;quot; : senderMetadata.segC,&lt;br /&gt;
              &amp;quot;adloadtype&amp;quot; : senderMetadata.adloadtype,&lt;br /&gt;
              &amp;quot;hasAds&amp;quot; : senderMetadata.hasAds&lt;br /&gt;
	};&lt;br /&gt;
&lt;br /&gt;
      window.nolSDKInstance.ggPM('loadmetadata', contentMetadata);&lt;br /&gt;
	  &lt;br /&gt;
	   var ottMetadataObject ={&lt;br /&gt;
			ottStatus: &amp;quot;1&amp;quot;,&lt;br /&gt;
			ottType: &amp;quot;casting&amp;quot;,&lt;br /&gt;
			ottDevice: &amp;quot;chromecast&amp;quot;,&lt;br /&gt;
			ottDeviceName: &amp;quot;Google Chromecast&amp;quot;,&lt;br /&gt;
			ottDeviceID: sessionId,&lt;br /&gt;
			ottDeviceManufacturer: &amp;quot;Google&amp;quot;,&lt;br /&gt;
			ottDeviceModel: &amp;quot;ChromeCastModel&amp;quot;,&lt;br /&gt;
			ottDeviceVersion: &amp;quot;1.0.0&amp;quot;, &lt;br /&gt;
			kGCKMetadataNlsKeyOptout : senderMetadata.kGCKMetadataNlsKeyOptout,&lt;br /&gt;
		              kGCKMetadataNlsKeyDeviceID : sessionId	&lt;br /&gt;
		  };&lt;br /&gt;
&lt;br /&gt;
window.nolSDKInstance.ggPM('updateOTT', ottMetadataObject);};&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 5. Summary - Correct squence of API calls ==&lt;br /&gt;
Below is the sequence of API calls sequence from the beginning to the end of casting.&lt;br /&gt;
&lt;br /&gt;
=== SENDER side : === &lt;br /&gt;
1) If the video is playing only on the sender app, the standard Nielsen SDK API calls should be invoked.&amp;lt;br /&amp;gt;&lt;br /&gt;
2) Once a user presses the cast icon and if the video was playing already, call '''end()'''.&amp;lt;br /&amp;gt;&lt;br /&gt;
3) Inform the AppSDK about the Chromecast's status (connected or disconnected) by calling '''updateOTT(config metadata)'''. &amp;lt;br /&amp;gt;&lt;br /&gt;
4) Retrieve the optOutStatus and demographicId by calling '''getOptOutStatus()''' and '''getDemographicId()'''.&amp;lt;br /&amp;gt;&lt;br /&gt;
5) Pass the optOutStatus and demographicId into the MediaMetaData object.&amp;lt;br /&amp;gt;&lt;br /&gt;
6) Start casting (the video should be stopped on the sender device).&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== RECEIVER side : ===&lt;br /&gt;
Playback has started at ChromeCast device (TV)&amp;lt;br /&amp;gt;&lt;br /&gt;
7) Retrieve the MediaMedaData sent by the sender device.&amp;lt;br /&amp;gt;&lt;br /&gt;
8) Instantiate the Browser SDK.&amp;lt;br /&amp;gt;&lt;br /&gt;
9) Pass metadata by calling '''loadMetaData()'''.&amp;lt;br /&amp;gt;&lt;br /&gt;
10) Pass playheads every second by calling '''setPlayheadPosition()'''.&amp;lt;br /&amp;gt;&lt;br /&gt;
11) Based on the user's interactions or the playlist state, call '''stop()''' (once paused) or '''end()''' (once the content or casting has ended).&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== SENDER side : === &lt;br /&gt;
Casting has ended and playback continues on the sender device&amp;lt;br /&amp;gt;&lt;br /&gt;
12) Start a new session by calling '''play()''' and '''loadMetaData()'''.&amp;lt;br /&amp;gt;&lt;br /&gt;
13) Continue sending API calls as usual.&lt;br /&gt;
&lt;br /&gt;
== 6. Testing implementation ==&lt;br /&gt;
See https://developers.google.com/cast/docs/debugging&amp;lt;br /&amp;gt;&lt;br /&gt;
Note: make sure that all your test devices and PC are connected to the same network.&amp;lt;br /&amp;gt;&lt;br /&gt;
1. Start the Android application and play video.&amp;lt;br /&amp;gt;&lt;br /&gt;
2. Connect the app to Chromecast by pressing the cast button.&amp;lt;br /&amp;gt;&lt;br /&gt;
[[File:Screen Shot 2018-09-25 at 10.15.38.png|400px|center]]&lt;br /&gt;
3. Launch Chrome browser and access URL chrome://inspect.&amp;lt;br /&amp;gt;&lt;br /&gt;
4. Under your ChromeCast device, press “inspect”&amp;lt;br /&amp;gt;&lt;br /&gt;
[[File:Screen Shot 2018-09-25 at 10.15.49.png|600px|center]]&lt;br /&gt;
5. In your browser console, check JS activity - including Nielsen SDK. Note: make sure that the BSDK has DEBUG mode on.&amp;lt;br /&amp;gt;&lt;br /&gt;
[[File:Screen Shot 2018-09-25 at 10.16.02.png|600px|center]]&lt;br /&gt;
6. In your Network – make sure that outgoing data to Nielsen collection is present.&amp;lt;br /&amp;gt;&lt;br /&gt;
[[File:Screen Shot 2018-09-25 at 10.21.23.png|600px|center]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
== 7. Demos ==&lt;br /&gt;
=== Function Demo Explanation (video) ===&lt;br /&gt;
https://youtu.be/Xw-D2H8BpRQ&lt;br /&gt;
&lt;br /&gt;
=== Sender (Android) ===&lt;br /&gt;
https://sdkdemo.admosphere.cz/demo-android/NielsenUScastDemo/v1.0/MPMTVRCastJV.apk&amp;lt;br /&amp;gt;&lt;br /&gt;
https://sdkdemo.admosphere.cz/demo-android/NielsenUScastDemo/v1.0/MPMTVRCastJV.zip&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Receiver (JavaScript) ===&lt;br /&gt;
https://sdkdemo.admosphere.cz/demo-android/NielsenUScastDemo/v1.0/reciever.zip&lt;br /&gt;
--&amp;gt;&lt;/div&gt;</summary>
		<author><name>ColinBrown</name></author>
	</entry>
	<entry>
		<id>https://nielsentest.mywikis.net/w/index.php?title=Template:DCR_Content_Metadata&amp;diff=5782</id>
		<title>Template:DCR Content Metadata</title>
		<link rel="alternate" type="text/html" href="https://nielsentest.mywikis.net/w/index.php?title=Template:DCR_Content_Metadata&amp;diff=5782"/>
		<updated>2022-05-02T20:14:48Z</updated>

		<summary type="html">&lt;p&gt;ColinBrown: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
! '''Keys''' !! '''Description''' !! '''Values''' !! '''Required'''&lt;br /&gt;
|-&lt;br /&gt;
| type || type of asset ||For Video use: &amp;lt;code&amp;gt;&amp;quot;content&amp;quot;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt; For Static or text &amp;lt;code&amp;gt;&amp;quot;static&amp;quot;&amp;lt;/code&amp;gt; || Yes&lt;br /&gt;
|-style=&amp;quot;background-color:#e9f9fa;&amp;quot;&lt;br /&gt;
| assetid || unique ID assigned to asset &amp;lt;br&amp;gt; Note: Refrain from using the following special characters [[Special_Characters|(Special Characters)]] || Examples: &amp;lt;br&amp;gt; &amp;lt;code&amp;gt;BBT345a234 &amp;lt;/code&amp;gt; &amp;lt;br&amp;gt; &amp;lt;code&amp;gt;CBSs5e234F2021&amp;lt;/code&amp;gt;  || Yes&lt;br /&gt;
|-&lt;br /&gt;
| program ||Complete program or movie title. &amp;lt;br&amp;gt; (no abbreviations or shorthand) &amp;lt;br&amp;gt; Note: there is a 25 character limit.  ||&amp;lt;code&amp;gt; The Big Bang Theory&amp;lt;/code&amp;gt; &amp;lt;br&amp;gt; &amp;lt;code&amp;gt; TheBigBangTheory&amp;lt;/code&amp;gt; &amp;lt;br&amp;gt;&amp;lt;code&amp;gt; The Dark Knight&amp;lt;/code&amp;gt; &amp;lt;br&amp;gt;&amp;lt;code&amp;gt; TheDarkKnight&amp;lt;/code&amp;gt; &amp;lt;br&amp;gt; || Yes&lt;br /&gt;
|-style=&amp;quot;background-color:#e9f9fa;&amp;quot;&lt;br /&gt;
| title ||episode title with season and episode number (40 character limit) &amp;lt;br&amp;gt; (Formats accepted: S01E03, S1E3, S1 E3) || Examples: &amp;lt;br&amp;gt; &amp;lt;code&amp;gt;The Pants Alternative S03E18&amp;lt;/code&amp;gt; &amp;lt;br&amp;gt; &amp;lt;code&amp;gt;The Pants Alternative S3E18&amp;lt;/code&amp;gt; &amp;lt;br&amp;gt; &amp;lt;code&amp;gt;The Pants Alternative S3 E18&amp;lt;/code&amp;gt; &amp;lt;br&amp;gt; Can also accept: &amp;lt;code&amp;gt; S3E18&amp;lt;/code&amp;gt; &amp;lt;br&amp;gt; Not Valid: &amp;lt;code&amp;gt; 318 &amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt; 0318 &amp;lt;/code&amp;gt;|| Yes&lt;br /&gt;
|-&lt;br /&gt;
| crossId1 || The Gracenote TMS ID (If available) || The TMS ID will be a 14 character string. &amp;lt;br&amp;gt; Normally being with  'EV,' 'EP', 'SH', 'SP', or 'MV' &amp;lt;br&amp;gt; Followed by 12 numbers after the initial two letter prefix. &amp;lt;br&amp;gt; &amp;lt;br&amp;gt; The Giant Morning Show: &amp;lt;code&amp;gt;SH009311820022&amp;lt;/code&amp;gt; &amp;lt;br&amp;gt; The Pants Alternative Episode : &amp;lt;code&amp;gt;EP009311820061&amp;lt;/code&amp;gt; || &lt;br /&gt;
|-style=&amp;quot;background-color:#e9f9fa;&amp;quot;&lt;br /&gt;
| crossId2 || content originator (only required for distributors) || custom || &lt;br /&gt;
|-&lt;br /&gt;
| length || length of content in seconds || If '''continuous''' (24 x 7) stream, pass the value of 86400.&amp;lt;br&amp;gt; If '''live stream''' of a discrete program (Live Event/Sporting Event), &amp;lt;br&amp;gt;pass length of content. If unknown, pass a value of 0.|| Yes&lt;br /&gt;
|-style=&amp;quot;background-color:#e9f9fa;&amp;quot;&lt;br /&gt;
| airdate ||Original broadcast or release date for the program &amp;lt;br&amp;gt;For USA, date should be EST &amp;lt;br&amp;gt; Outside USA, date should be local time. || Acceptable Formats &amp;lt;br&amp;gt; &amp;lt;code&amp;gt;YYYYMMDD HH24:MI:SS&amp;lt;/code&amp;gt; &amp;lt;br&amp;gt;&amp;lt;code&amp;gt;YYYYMMDDHH24MISS&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;YYYY-MM-DDTHH:MI:SS&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;YYYY-MM-DDHH:MI:SS&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;YYYYMMDDHH:MI:SS&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;MM-DD-YYYY&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;YYYYMMDD HH:MI:SS&amp;lt;/code&amp;gt; || Yes&lt;br /&gt;
|-&lt;br /&gt;
| isfullepisode || full episode flag || &amp;lt;code&amp;gt;&amp;quot;y&amp;quot;&amp;lt;/code&amp;gt;- full episode, &amp;lt;code&amp;gt;&amp;quot;n&amp;quot;&amp;lt;/code&amp;gt;- non full episode || Yes&lt;br /&gt;
|-style=&amp;quot;background-color:#e9f9fa;&amp;quot;&lt;br /&gt;
| adloadtype || type of ad load:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;quot;1&amp;quot;&amp;lt;/code&amp;gt; Linear – matches TV ad load&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;quot;2&amp;quot;&amp;lt;/code&amp;gt; Dynamic – Dynamic Ad Insertion (DAI)&lt;br /&gt;
|| &amp;lt;code&amp;gt;&amp;quot;2&amp;quot;&amp;lt;/code&amp;gt; - DCR measures content with dynamic ads || Yes&lt;br /&gt;
|-&lt;br /&gt;
| segB || custom segment B || custom || &lt;br /&gt;
|-style=&amp;quot;background-color:#e9f9fa;&amp;quot;&lt;br /&gt;
| segC || custom segment C || custom || &lt;br /&gt;
|}&lt;br /&gt;
Custom segments (segB and segC) can be used to aggregate video and/or static content within a single Brand to receive more granular reports within a brand.&lt;br /&gt;
&lt;br /&gt;
Examples regarding usage of segments within SDK:&lt;br /&gt;
* All comedy clips and stories for a Brand rolled into a &amp;quot;Comedy&amp;quot; segment&lt;br /&gt;
* genre grouping content by Comedy vs. Drama&lt;br /&gt;
* group related Text + Video content - i.e. for a show that has a lot of - static pages associated with it&lt;br /&gt;
* packaging based on how clients sell inventory&lt;br /&gt;
* grouping related types of content either by genre, category or platform.&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;/div&gt;</summary>
		<author><name>ColinBrown</name></author>
	</entry>
	<entry>
		<id>https://nielsentest.mywikis.net/w/index.php?title=DCR_Video_Android_SDK&amp;diff=5781</id>
		<title>DCR Video Android SDK</title>
		<link rel="alternate" type="text/html" href="https://nielsentest.mywikis.net/w/index.php?title=DCR_Video_Android_SDK&amp;diff=5781"/>
		<updated>2022-04-29T05:21:11Z</updated>

		<summary type="html">&lt;p&gt;ColinBrown: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Breadcrumb|}} {{Breadcrumb|Digital}} {{Breadcrumb|US DCR &amp;amp; DTVR}}  {{CurrentBreadcrumb}}&lt;br /&gt;
[[Category:Digital]]&lt;br /&gt;
&lt;br /&gt;
== Overview ==&lt;br /&gt;
The Nielsen SDK is one of multiple framework SDKs that Nielsen provides to enable measuring linear (live) and on-demand TV viewing using TVs, mobile devices, etc.&lt;br /&gt;
The App SDK is the framework for mobile application developers to integrate Nielsen Measurement into their media player applications. It supports a variety of Nielsen Measurement Products like Digital in TV Ratings, Digital Content Ratings ([[DCR &amp;amp; DTVR]]), and [[Digital Ad Ratings]] (DAR). Nielsen SDKs are also equipped to measure static content and can track key life cycle events of an application like:&lt;br /&gt;
*Application launch events and how long app was running&lt;br /&gt;
*Time of viewing a sub section / page in the application.&lt;br /&gt;
&lt;br /&gt;
{{Android_Prerequisites_and_Implementation_Overview}}&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
{{Android_Setting_Up_Development_Environment}}&lt;br /&gt;
&lt;br /&gt;
{{Android_SDK_Initialization}}&lt;br /&gt;
&lt;br /&gt;
== APP SDK Error &amp;amp; Event Codes ==&lt;br /&gt;
To view the Error and Event codes for iOS and Android, please review the [[APP SDK Event Codes|App SDK Event Code]] Reference page.&lt;br /&gt;
&lt;br /&gt;
== Configure Payload ==&lt;br /&gt;
=== Handling JSON Metadata ===&lt;br /&gt;
All the SDK methods handles only two types of objects: NSString, NSDictionary. The parameters passed must be either a JSON formatted string or a NSDictionary object. The JSON passed in the SDK must be well-formed.&lt;br /&gt;
* NSDictionary object&lt;br /&gt;
** If an object of unexpected type is passed to the method, the error message will be logged.&lt;br /&gt;
** If string has invalid JSON format, the error message will be logged.&lt;br /&gt;
* JSON value must be string value.&lt;br /&gt;
** This includes boolean and numeric values. For example, a value of true should be represented with &amp;quot;true&amp;quot;, number value 123 should be &amp;quot;123&amp;quot;.&lt;br /&gt;
** All the Variable Names like appid, appname, sfcode, dataSrc, title, type etc. are case-sensitive. Use the correct variable name as specified in the documentation.&lt;br /&gt;
* JSON string can be prepared using either raw NSString or serialized NSDictionary.&lt;br /&gt;
 &amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
JSONObject contentMetadata = new JSONObject()&lt;br /&gt;
//SDK Metadata&lt;br /&gt;
    .put(&amp;quot;type&amp;quot;, &amp;quot;content&amp;quot;)&lt;br /&gt;
    .put(&amp;quot;assetid&amp;quot;, &amp;quot;vid345-67483&amp;quot;)&lt;br /&gt;
    .put(&amp;quot;program&amp;quot;, &amp;quot;The Big Bang Theory&amp;quot;)&lt;br /&gt;
    .put(&amp;quot;title&amp;quot;, &amp;quot;The Pants Alternative S03E18&amp;quot;)&lt;br /&gt;
    .put(&amp;quot;crossId1&amp;quot;, &amp;quot;EP009311820061&amp;quot;)  //optional  &lt;br /&gt;
    .put(&amp;quot;crossId2&amp;quot;, &amp;quot;Content Originator&amp;quot;)  //optional  &lt;br /&gt;
    .put(&amp;quot;length&amp;quot;, &amp;quot;3600&amp;quot;)&lt;br /&gt;
    .put(&amp;quot;isfullepisode&amp;quot;, &amp;quot;yes&amp;quot;) &lt;br /&gt;
    .put(&amp;quot;airdate&amp;quot;, &amp;quot;2022-03-21T10:05:00&amp;quot;)&lt;br /&gt;
    .put(&amp;quot;adloadtype&amp;quot;, &amp;quot;2&amp;quot;)&lt;br /&gt;
    .put(&amp;quot;segB&amp;quot;, &amp;quot;CustomSegmentValueB&amp;quot;) //optional&lt;br /&gt;
    .put(&amp;quot;segC&amp;quot;, &amp;quot;CustomSegmentValueC&amp;quot;) //optional&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Content metadata ===&lt;br /&gt;
Content metadata should remain constant throughout the entirety of an episode/clip including when ads play.&lt;br /&gt;
{{DCR Content Metadata}}&lt;br /&gt;
&lt;br /&gt;
=== Ad Metadata ===&lt;br /&gt;
The Ad Metadata (if applicable) should be passed for each individual ad.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Keys	!! Description	!! Values	!! Required&lt;br /&gt;
|-&lt;br /&gt;
| type 	|| type of Ad	||  &amp;lt;code&amp;gt;'preroll'&amp;lt;/code&amp;gt;,  &amp;lt;code&amp;gt;'midroll'&amp;lt;/code&amp;gt;,  &amp;lt;code&amp;gt;'postroll'&amp;lt;/code&amp;gt; &amp;lt;br&amp;gt; &amp;lt;code&amp;gt;'ad'&amp;lt;/code&amp;gt;  - If specific type can not be identified.||	✓&lt;br /&gt;
|-&lt;br /&gt;
| assetid ||	unique ID assigned to Ad	|| custom &amp;lt;br&amp;gt;(no [[Special Characters]])	|| ✓&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Example Ad Object ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
// create ad object&lt;br /&gt;
&amp;quot;ad&amp;quot;: {&lt;br /&gt;
  &amp;quot;type&amp;quot;: &amp;quot;preroll&amp;quot;,&lt;br /&gt;
  &amp;quot;assetid&amp;quot;: &amp;quot;AD-ID123&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Sequence of Calls ==&lt;br /&gt;
=== play ===&lt;br /&gt;
Use [[DCR_Video_APP_SDK#play|play]] to pass the channel descriptor information through channelName parameter when the user taps the '''Play''' button on the player.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;    public void play(JSONObject channelInfo);&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== loadMetadata ===&lt;br /&gt;
 &amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;public void loadMetadata(JSONObject contentMetadata);&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== playheadPosition ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
public void setPlayheadPosition(long position)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== stop ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;public void stop()&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== end ===&lt;br /&gt;
When content stop is initiated and content cannot be resumed from the same position (it can only be restarted from the beginning of stream).&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;public void end()&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Configure API Calls ==&lt;br /&gt;
&lt;br /&gt;
=== Sample API Sequence ===&lt;br /&gt;
A Sample API sequence could follow this flow:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Type !! Sample code !! Description&lt;br /&gt;
|-&lt;br /&gt;
|On App Start||&amp;lt;code&amp;gt;[nielsenMeter loadMetadata: contentMetadata];&amp;lt;/code&amp;gt; || // contentMetadata Object contains the JSON metadata for the impression&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | Start of stream || &amp;lt;code&amp;gt;[nielsenMeter play];&amp;lt;/code&amp;gt; || // call at start of each new stream&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[nielsenMeter loadMetadata: contentMetadataObject];&amp;lt;/code&amp;gt; || // contentMetadataObject contains the JSON metadata for the content being played&lt;br /&gt;
|-&lt;br /&gt;
| Content || &amp;lt;code&amp;gt;[nielsenMeter setplayheadPosition: position];&amp;lt;/code&amp;gt; || // playheadPosition is position of the playhead while the content is being played&lt;br /&gt;
|-&lt;br /&gt;
| End of Stream || &amp;lt;code&amp;gt;[nielsenMeter end];&amp;lt;/code&amp;gt; || // Content playback is completed.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== SDK Events ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Event !!	Parameter	!! Description&lt;br /&gt;
|-&lt;br /&gt;
| 'play'	|| 	|| Call at start of each new stream&lt;br /&gt;
|-&lt;br /&gt;
| 'loadMetadata'	|| content/ad metadata object	|| Needs to be called at the beginning of each asset&lt;br /&gt;
|-&lt;br /&gt;
| 'setPlayheadPosition'	|| playhead position as integer&amp;lt;br/&amp;gt;&lt;br /&gt;
VOD: || current position in seconds &amp;lt;br/&amp;gt;&lt;br /&gt;
Live: current Unix timestamp (seconds since Jan-1-1970 UTC) &amp;lt;br/&amp;gt;&lt;br /&gt;
Note: 'setPlayheadPosition' has to be called every second&lt;br /&gt;
||&lt;br /&gt;
Pass playhead position every second during playback&lt;br /&gt;
|-&lt;br /&gt;
| 'stop' ||	playhead position	|| Call during any interruption to content or Ad playback and at the end of each Ad.&lt;br /&gt;
|-&lt;br /&gt;
| 'end'	|| playhead position in seconds	|| Call when the current video asset completes playback and pass the playhead position. &amp;lt;br/&amp;gt;&lt;br /&gt;
Example: At the end of the content stream, if the user switches to another piece of content, when the browser is refreshed or closed.&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;blockquote&amp;gt;Note: For livestream, send the Unix timestamp; for VOD send the time in seconds as integer. The final playhead position must be sent for the current asset being played before calling &amp;lt;code&amp;gt;'''stop'''&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;'''end'''&amp;lt;/code&amp;gt; or&amp;lt;code&amp;gt; '''loadmetadata'''&amp;lt;/code&amp;gt;,.&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Life cycle of SDK instance ===&lt;br /&gt;
Life cycle of SDK instance includes four general states:&lt;br /&gt;
# '''Initial state''' – The SDK is not initialized and hence, not ready to process playing information. Once the SDK is moved out of this state, it needs instantiation of the new SDK instance in order to get the instance in the '''Initial state'''.&lt;br /&gt;
# '''Idle state''' – The SDK is initialized and is ready to process playing information. Once Initialized, the SDK instance is not processing any data, but is listening for the play event to occur.&lt;br /&gt;
# '''Processing state''' – The SDK instance is processing playing information. The &amp;lt;code&amp;gt;'''play'''&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;'''loadMetadata''' &amp;lt;/code&amp;gt; calls move the SDK instance into this state. In this state, the SDK instance will be able to process the following calls.&lt;br /&gt;
## &amp;lt;code&amp;gt;'''setplayheadPosition'''&amp;lt;/code&amp;gt; – Call this API every one second when playhead position timer is fired.  If a LIVE event, use the current Unix timestamp (seconds since Jan-1-1970 UTC).&lt;br /&gt;
## &amp;lt;code&amp;gt;'''stop'''&amp;lt;/code&amp;gt; – Call this API when the playback is paused, switches between content and ad (within the same content playback) or encounters interruptions.&lt;br /&gt;
## &amp;lt;code&amp;gt;'''end'''&amp;lt;/code&amp;gt; – Call when content completes. When called, the SDK instance exits from Processing state.&lt;br /&gt;
# '''Disabled state''' – The SDK instance is disabled and is not processing playing information. SDK instance moves into this state in one of the following scenarios.&lt;br /&gt;
## Initialization fails&lt;br /&gt;
## &amp;lt;code&amp;gt;'''appDisableApi'''&amp;lt;/code&amp;gt; is set to &amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;'''Note:''' For API Version 5.1 and above, App SDK will fire data pings and continue measurement even after the user has opted out from Nielsen measurement on a device. The data ping will be marked as opted-out ping.&lt;br /&gt;
&lt;br /&gt;
'''Note''': In case of any interruptions during playback due to alarm, calendar, call, flight mode, Wi-Fi toggle, channel change, etc., call [[stop]] to stop the measurement.&lt;br /&gt;
* As soon as the playback resumes, &amp;lt;code&amp;gt;'''loadMetadata''' &amp;lt;/code&amp;gt; and   &amp;lt;code&amp;gt;'''playheadPosition'''&amp;lt;/code&amp;gt; &amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== API Call Sequence ===&lt;br /&gt;
==== Use Case 1: Content has no Advertisements ====&lt;br /&gt;
Call [[play()]] at start of stream&lt;br /&gt;
&lt;br /&gt;
Call [[loadMetadata()]] with JSON metadata for content as below.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;json&amp;quot;&amp;gt;{&lt;br /&gt;
  &amp;quot;type&amp;quot;: &amp;quot;content&amp;quot;,&lt;br /&gt;
  &amp;quot;assetid&amp;quot;: &amp;quot;vid345-67483&amp;quot;,&lt;br /&gt;
  &amp;quot;program&amp;quot;: &amp;quot;ProgramName&amp;quot;,&lt;br /&gt;
  &amp;quot;title&amp;quot;: &amp;quot;Program S3, EP1&amp;quot;,&lt;br /&gt;
  &amp;quot;length&amp;quot;: &amp;quot;3600&amp;quot;,&lt;br /&gt;
  ...&lt;br /&gt;
}&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Call [[setPlayheadPosition()]] every one second until a pause / stop.&lt;br /&gt;
Use the sample API sequence below as a reference to identify the specific events that need to be called during content playback without ads.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Type !! Sample code !! Description&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | Start of stream || &amp;lt;code&amp;gt;mAppSdk.play(); &amp;lt;/code&amp;gt; || // Call at start of each new stream&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;mAppSdk.loadMetadata(contentMetaDataObject);&amp;lt;/code&amp;gt; || // contentMetadataObject contains the JSON metadata for the content being played&lt;br /&gt;
|-&lt;br /&gt;
| Content || &amp;lt;code&amp;gt;mAppSdk.setPlayheadPosition(playheadPosition);&amp;lt;/code&amp;gt; || // position is position of the playhead while the content is being played&lt;br /&gt;
|-&lt;br /&gt;
| Interruption || &amp;lt;code&amp;gt;mAppSdk.stop();&amp;lt;/code&amp;gt; || // call stop when content playback is interrupted&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | Resume Content || &amp;lt;code&amp;gt;mAppSdk.loadMetadata(contentMetaDataObject);&amp;lt;/code&amp;gt;  || // Call loadMetadata and pass content metadata object when content resumes&lt;br /&gt;
|- &lt;br /&gt;
|&amp;lt;code&amp;gt;mAppSdk.setPlayheadPosition(playheadPosition);&amp;lt;/code&amp;gt; || // continue pasing playhead position every second starting from position where content is resumed&lt;br /&gt;
|- &lt;br /&gt;
| End of Stream || &amp;lt;code&amp;gt;mAppSdk.end();&amp;lt;/code&amp;gt; || // Content playback is completed.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Use Case 2: Content has Advertisements ====&lt;br /&gt;
Call [[play()]] &lt;br /&gt;
&lt;br /&gt;
Call [[loadMetadata()]] with JSON metadata for ad as below.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;json&amp;quot;&amp;gt;{&lt;br /&gt;
   &amp;quot;type&amp;quot;: &amp;quot;preroll&amp;quot;,&lt;br /&gt;
   &amp;quot;assetid&amp;quot;: &amp;quot;ad-123&amp;quot;&lt;br /&gt;
}&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;blockquote&amp;gt;Note: In case the individual ad details are not available, send ad pod (presence) details through the [[loadMetadata]] and playhead position through [[playheadPosition]].&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Call [[setPlayheadPosition()]] every one second until a pause / stop / another [[loadMetadata()]] is called. Playhead should be passed for the entire duration of ad pod, if the ad pod details are passed as part of [[loadMetadata()]].&lt;br /&gt;
&lt;br /&gt;
'''Ad Content'''&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;    long pos = mAdPlayer.videoPosition() / 1000;&lt;br /&gt;
   if (mAppSdk != null)&lt;br /&gt;
   {&lt;br /&gt;
     mAppSdk.setPlayheadPosition(pos);&lt;br /&gt;
   }&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;blockquote&amp;gt;Note: The playhead positions for ad and content should be maintained separately.&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The sample API sequence can be used as a reference to identify the specific events that need to be called during content and ad playback.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Type !! Sample code !! Description&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | Start of stream || &amp;lt;code&amp;gt;mAppSdk.play(); &amp;lt;/code&amp;gt; || // stream starts&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;mAppSdk.loadMetadata(contentMetaDataObject);&amp;lt;/code&amp;gt; || // contentMetadataObject contains the JSON metadata for the content being played&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Preroll || &amp;lt;code&amp;gt;mAppSdk.loadMetadata(prerollMetadataObject);&amp;lt;/code&amp;gt; || // prerollMetadataObject contains the JSON metadata for the preroll ad&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;mAppSdk.setPlayheadPosition(playheadPosition);&amp;lt;/code&amp;gt; || // position is position of the playhead while the preroll ad is being played&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;mAppSdk.stop();&amp;lt;/code&amp;gt; || // Call stop after preroll occurs&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | Content || &amp;lt;code&amp;gt;mAppSdk.loadMetadata(contentMetaDataObject);&amp;lt;/code&amp;gt; || // contentMetadataObject contains the JSON metadata for the content being played&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;mAppSdk.setPlayheadPosition(playheadPosition);&amp;lt;/code&amp;gt; || // position is position of the playhead while the content is being played&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Midroll || &amp;lt;code&amp;gt;mAppSdk.loadMetadata(midrollMetaDataObject);&amp;lt;/code&amp;gt; || // midrollMetadataObject contains the JSON metadata for the midroll ad&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;mAppSdk.setPlayheadPosition(playheadPosition);&amp;lt;/code&amp;gt; || // position is position of the playhead while the midroll ad is being played&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;mAppSdk.stop();&amp;lt;/code&amp;gt; || // Call stop after midroll occurs&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | Content Resumes || &amp;lt;code&amp;gt;mAppSdk.loadMetadata(contentMetaDataObject);&amp;lt;/code&amp;gt; || // contentMetadataObject contains the JSON metadata for the content being played&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;mAppSdk.setPlayheadPosition(playheadPosition);&amp;lt;/code&amp;gt; || // position is position of the playhead while the content is being played&lt;br /&gt;
|-&lt;br /&gt;
|  rowspan=&amp;quot;1&amp;quot; | End of Stream || &amp;lt;code&amp;gt;mAppSdk.end();&amp;lt;/code&amp;gt; || // Call end() at the end of content&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Postroll || &amp;lt;code&amp;gt;mAppSdk.loadMetadata(postrollMetaDataObject);&amp;lt;/code&amp;gt; || // postrollMetadataObject contains the JSON metadata for the postroll ad&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;mAppSdk.setPlayheadPosition(playheadPosition);&amp;lt;/code&amp;gt; || // position is position of the playhead while the postroll ad is being played&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;mAppSdk.stop();&amp;lt;/code&amp;gt; || // Call stop after postroll occurs&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;Note: Each Ad playhead should reset or begin from 0 at ad start. When content has resumed following an ad break, playhead position must continue from where previous content segment was left off.&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Handling Foreground and Background states ==&lt;br /&gt;
There are a few approaches to managing the Foreground and Background states of an app available to use for state measurement.&lt;br /&gt;
* Utilizing the Androidx LifeCycleObserver (The recommended approach starting sdk version 7.1.0.0+)&lt;br /&gt;
* Utilizing the [[DCR_Video_Android_SDK#The_SdkBgFgDetectionUtility_class|SdkBgFgDetectionUtility]] class&lt;br /&gt;
* Adding a tag to the Manifest XML&lt;br /&gt;
* Manual Management&lt;br /&gt;
=== The LifeCycleObserver ===&lt;br /&gt;
AndroidX replaces the original support library APIs with packages in the androidx namespace, and Android Studio 3.2 and higher provides an automated migration tool. (Select '''Refactor&amp;gt; Migrate to AndroidX''' from the menu bar.)&lt;br /&gt;
&lt;br /&gt;
Starting with version 7.1.0, with AndroidX support, an additional utility is provided in the AppSDK - application background/foreground state detection by the AppSdk leveraging the Android Architecture component &amp;quot;LifeCycleObserver&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
The AppSdk is now capable of detecting the application UI visibility state transitions between background and foreground, without forcing the applications to register for AppSdk's AppSdkApplication class, which is responsible for handling the detection of application background/foreground state transitions at present.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;Please note, that if you already have an app designed that utilizes the depreciated SdkBgFgDetectionUtility Class, the AppSDK will ignore any calls to these methods if it can utilize the LifeCycleObserver.  LifeCycleObserver based auto detection will take precedence. &amp;lt;/blockquote&amp;gt;&lt;br /&gt;
==== Adding the AndroidX dependency ====&lt;br /&gt;
In order to make use of the app background/foreground state transition auto detection feature of AndroidX AppSdk, the app gradle file needs the androidx dependency. The AppSdk API calls - &amp;lt;code&amp;gt;appInForeground()&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;appInBackground()&amp;lt;/code&amp;gt;  will still be respected by AppSdk by executing the old AppSdk flow of handling &amp;quot;app in foreground&amp;quot; and &amp;quot;app in background&amp;quot; states as is.&lt;br /&gt;
&lt;br /&gt;
==== Using the LifeCycle Extension ====&lt;br /&gt;
The following androidx dependency is required in the app gradle file:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
implementation &amp;quot;androidx.lifecycle:lifecycle-extensions:2.1.0&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
If you would like to take advantage of this auto detection feature of AppSdk at the very initial stage (e.g. splash screen or at of app launch time), before the AppSdk is initialized, can do so by calling the following newly introduced AppSdk public api, passing the application context :&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
public static void registerLifeCycleObserver(Context applicationContext)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Log messages for the new auto detection ====&lt;br /&gt;
&lt;br /&gt;
When the AppSdk app successfully registers for the LifeCycleObserver : &amp;lt;code&amp;gt;Registered LifeCycleObserver for App Background/Foreground auto-detection&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* When the app enters the foreground state :&amp;lt;code&amp;gt;App is in foreground, auto detected by AppSDK&amp;lt;/code&amp;gt;&lt;br /&gt;
* When the app enters the background state :&amp;lt;code&amp;gt;App is in background, auto detected by AppSDK&amp;lt;/code&amp;gt;&lt;br /&gt;
* If the client app doesn't have the &amp;quot;androidx&amp;quot; gradle dependency and AppSdk fails to register LifeCycleObserver :&amp;lt;code&amp;gt;AndroidX LifecycleObserver can not be observed. Please use androidx dependency to activate SDK auto-detection of app background/foreground state.&amp;lt;/code&amp;gt;&lt;br /&gt;
* When the appInForeground() is explicitly called while LifeCycleObserver auto detection is active :&amp;lt;code&amp;gt;Ignoring the appInBackground() call, as the App Background/Foreground auto-detection is active. The current state is - foreground&amp;lt;/code&amp;gt;&lt;br /&gt;
* When the appInBackground() is explicitly called while LifeCycleObserver auto detection is active :&amp;lt;code&amp;gt;Ignoring the appInBackground() call, as the App Background/Foreground auto-detection is active. The current state is - background&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== The SdkBgFgDetectionUtility class ===&lt;br /&gt;
Foreground/Background state measurement is a requirement of Nielsen AppSDK implementation which is especially crucial for static measurement. It may be implemented in multiple ways for Android. This includes&lt;br /&gt;
* Enable the Nielsen SDK to measure background/foreground state by makingthe relevant update to the AndroidManifest.&lt;br /&gt;
* Integrate Nielsen’s SdkBgFgDetectionUtility class within your Custom Application Class.&lt;br /&gt;
* Custom implementation of the required methods within your application.&lt;br /&gt;
&lt;br /&gt;
==== ForeGround/Background Measurement via AndroidManifest ====&lt;br /&gt;
The simplest way to measure the app background/foreground state is to add the following application tag to the Manifest XML. Integrating this into the Manifest XML will enable the SDK to measure app state directly. This approach is supported for Android 4.0 and up only; it requires that the application class is not in use for some other purpose.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;application android:name=&amp;quot;com.nielsen.app.sdk.AppSdkApplication&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Using the Android SdkBgFbDetectionUtility Class ====&lt;br /&gt;
For developers who are already using the application class, it is recommended that background/foreground state is implemented using the  [https://engineeringportal.nielsen.com/docs/Android_Background_Foreground SdkBgFgDetectionUtility class].  The  [https://engineeringportal.nielsen.com/docs/Android_Background_Foreground SdkBgFgDetectionUtility class] is compatible with Android 4+ and has been made available to Nielsen clients. (You will need to copy/paste the code provided into a file).&lt;br /&gt;
&lt;br /&gt;
==== Manual Background/ForeGround State Management ====&lt;br /&gt;
In cases where the developer is not able to use the AndroidManifest.xml solution nor the Nielsen provided   [https://engineeringportal.nielsen.com/docs/Android_Background_Foreground SdkBgFgDetectionUtility class] the developer will need to manually identify the change of state through the application and call the respective API (appInForeground() or appInBackground()) to inform the SDK regarding the change of state from background to foreground or foreground to background.&lt;br /&gt;
&lt;br /&gt;
The SDK is informed about app state using the below methods.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
AppLaunchMeasurementManager.appInForeground(getApplicationContext());&lt;br /&gt;
AppLaunchMeasurementManager.appInBackground(getApplicationContext());&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Within the lifecycle of individual activities, onResume() and onPause() are best suited to providing indication of the app state.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Correct measurement of the foreground/background state is crucial to Static App measurement within Nielsen Digital Content Ratings (DCR).&lt;br /&gt;
== Using the NielsenAppSDKJSHandler ==&lt;br /&gt;
There could be a scenario in which a browser page, that is already tagged with the Nielsen BSDK, needs to be loaded via a webview.  In this situation it is recommended to use the '''NielsenAppSDKJSHandler''' which will allow communication between the AppSDK and the BSDK. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''This feature is supported in versions 7.2 and above.'''&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Implementation ===&lt;br /&gt;
* Make sure you have the latest AppSdk.jar from Nielsen&lt;br /&gt;
* Enable the javascript on webview using below lines&lt;br /&gt;
&amp;lt;br&amp;gt; &lt;br /&gt;
 &amp;lt;syntaxhighlight lang=java&amp;gt;&lt;br /&gt;
WebSettings webSetting = webView.getSettings();&lt;br /&gt;
webSetting.setJavaScriptEnabled(true);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* Add  NielsenAppSDKJSHandler instance as javascript interface to webview with name “NielsenAppSDK” like below snippet&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=java&amp;gt;&lt;br /&gt;
webView.addJavascriptInterface(new NielsenAppSDKJSHandler(getApplicationContext()), &amp;quot;NielsenAppSDK&amp;quot;);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
This will enable listening to BSDK api calls within the APPSDK.  Please make sure your Technical Account Manager is aware that you wish to implement this method so a configuration file can be modified on the Nielsen servers; however, there are '''no changes required to the Browser page'''.&lt;br /&gt;
&lt;br /&gt;
==== Example:====&lt;br /&gt;
The below is an example of opening a webview with the NielsenAppSDKJSHandler&lt;br /&gt;
&amp;lt;syntaxhighlight lang=java&amp;gt;&lt;br /&gt;
      WebSettings webSetting = webView.getSettings();&lt;br /&gt;
      webView.getSettings().setDomStorageEnabled(true); &lt;br /&gt;
      webSetting.setJavaScriptEnabled(true);&lt;br /&gt;
      webView.addJavascriptInterface(new NielsenAppSDKJSHandler(getApplicationContext(), &amp;quot;&amp;quot;), &amp;quot;NielsenAppSDK&amp;quot;);&lt;br /&gt;
      String url = &amp;quot;https://nielsen.com.index.htm&amp;quot;;&lt;br /&gt;
      webView.loadUrl(url);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;AndroidManifest.xml&amp;lt;/code&amp;gt; may need the following permissions set:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=java&amp;gt;&lt;br /&gt;
    &amp;lt;uses-permission android:name=&amp;quot;android.permission.INTERNET&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;uses-permission android:name=&amp;quot;android.permission.ACCESS_NETWORK_STATE&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Closing NielsenAppSDKJSHandler ===&lt;br /&gt;
NielsenAppSDKJSHandler should be closed or cleaned up in below scenarios&lt;br /&gt;
* Before WebView is getting destructed&lt;br /&gt;
* Before loading new page&lt;br /&gt;
* Before closing application&lt;br /&gt;
NielsenAppSDKJSHandler provides a public interface with name &amp;quot;close()&amp;quot; and this function should be called on NielsenAppSDKJSHandler's instance in all above scenarios.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=java&amp;gt;&lt;br /&gt;
// get your webview&lt;br /&gt;
WebView webView = findViewById(R.id.webView);&lt;br /&gt;
 &lt;br /&gt;
//Added JS Handler instance as java script interface for ggpm api type&lt;br /&gt;
NielsenAppSDKJSHandler jshandler = new NielsenAppSDKJSHandler(getApplicationContext(), &amp;quot;&amp;quot;);&lt;br /&gt;
webView.addJavascriptInterface(jshandler, &amp;quot;NielsenAppSDK&amp;quot;);&lt;br /&gt;
 &lt;br /&gt;
//Close JS Handler before making webview as null&lt;br /&gt;
jshandler.close();&lt;br /&gt;
webView = null;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Interruptions during playback ==&lt;br /&gt;
As part of integrating Nielsen App SDK with the player application, the Video app developer needs to handle the following possible interruption scenarios:&lt;br /&gt;
* Pause / Play&lt;br /&gt;
* Network Loss (Wi-Fi / Airplane / Cellular)&lt;br /&gt;
* Call Interrupt (SIM or Third party Skype / Hangout call)&lt;br /&gt;
* Alarm Interrupt&lt;br /&gt;
* Content Buffering&lt;br /&gt;
* Device Lock / Unlock &lt;br /&gt;
* App going in the Background/Foreground&lt;br /&gt;
* Channel / Station Change Scenario&lt;br /&gt;
* Unplugging of headphone&lt;br /&gt;
In case of encountering one of the above interruptions, the player application needs to&lt;br /&gt;
* Call [[stop]] immediately (except when content is buffering) and withhold sending playhead position.&lt;br /&gt;
* Start sending pings – &amp;lt;code&amp;gt;'loadMetadata'&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;'playheadPosition'&amp;lt;/code&amp;gt; for the new viewing session, once the playback resumes.&lt;br /&gt;
Please see the [https://engineeringportal.nielsen.com/docs/Digital_Measurement_Interruption_Scenarios Interruption Scenarios Page] for more details&lt;br /&gt;
&lt;br /&gt;
== Pre-Certification Checklists ==&lt;br /&gt;
After the application is ready to be sent for Nielsen Certification, please go through the [[Digital Pre-Certification Checklist App SDK]] and ensure the app behaves as expected, before submitting to Nielsen.&lt;br /&gt;
&lt;br /&gt;
{{Template:Android_Privacy_and_Opt-Out}}&lt;br /&gt;
== Required Privacy Links ==&lt;br /&gt;
Users must either have access to the &amp;quot;About Nielsen Measurement&amp;quot; page, or have similar text available within the native app. Include &amp;quot;About Nielsen Measurement&amp;quot; and &amp;quot;Your Choices&amp;quot; link in the Privacy Policy / EULA or as a button near the link to the app's Privacy Policy.&lt;br /&gt;
&lt;br /&gt;
In addition, the following text must be included in your app store description.&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
'''&amp;quot;Please note: This app features Nielsen’s proprietary measurement software which contributes to market research, like Nielsen’s TV Ratings. Please see https://www.nielsen.com/us/en/legal/privacy-statement/digital-measurement/ for more information&amp;quot;'''&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Sample Applications ==&lt;br /&gt;
The below sample applications have been designed to show the API's functionality and are broken into two distinct categories:&lt;br /&gt;
* '''Basic''' - To show the functionality of the Nielsen  API using a standard no-frills player.&lt;br /&gt;
** [[Android Basic example|Android Studio Example]]&lt;br /&gt;
&lt;br /&gt;
* '''Advanced''' - Nielsen API integrated into a custom video player is bundled with the SDK.&lt;/div&gt;</summary>
		<author><name>ColinBrown</name></author>
	</entry>
	<entry>
		<id>https://nielsentest.mywikis.net/w/index.php?title=Mobile_DAR_Attributes_Requirements&amp;diff=5780</id>
		<title>Mobile DAR Attributes Requirements</title>
		<link rel="alternate" type="text/html" href="https://nielsentest.mywikis.net/w/index.php?title=Mobile_DAR_Attributes_Requirements&amp;diff=5780"/>
		<updated>2022-04-21T05:14:55Z</updated>

		<summary type="html">&lt;p&gt;ColinBrown: /* Additional DAR Tag Parameters for Mobile App Audience Measurement */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Breadcrumb|}} {{Breadcrumb|Digital}} {{Breadcrumb|Digital Ad Ratings}}  {{CurrentBreadcrumb}}&lt;br /&gt;
[[Category:Digital]]&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
The standard Nielsen Digital Ad Rating (DAR) tag only supports cookie based '''web browser''' viewing on PCs, MACs, and tablets/smartphone (web-browser). However, when ads are served to tablets/smartphones via native '''app-store applications''', the cookie based tag does not function correctly. Additional tag attributes are needed in order for audience reach measurement to function. Example tags are detailed later in this document.&lt;br /&gt;
&lt;br /&gt;
One way Nielsen clients can accomplish this is by the use of Nielsen’s native iOS/Android App SDK. Nielsen’s App SDK automatically adds these additional tag attributes to the standard cookie based webbrowser tag before the tag is forwarded on to the Nielsen census collection system. However, there is a significant portion of the publisher mobile app universe where it is either not feasible, or desirable to integrate Nielsen’s native App SDK into 3rd party applications.&lt;br /&gt;
&lt;br /&gt;
The purpose of this document is to detail the tag URL parameters required that are '''additional''' to the standard cookie based web-browser tag.&lt;br /&gt;
&lt;br /&gt;
The most critical additional parameter required is the insertion of the Advertising ID (IFA / IDFA / AdID) from the users device that has been exposed to the Ad creative.&lt;br /&gt;
&lt;br /&gt;
If you are reading this document as an Ad server representative then it is assumed that you have published a specification that mobile app publishers follow to pass the appropriate Advertising ID in the Ad request payload. Typically, your Ad server will then expand a macro or label with that value passed in the Ad request URL, insert into the DAR mobile app tag and redirect to Nielsen collections. See s. See  [[#Appendix A: Example Implementation]], figure 2 for an example tag workflow.&lt;br /&gt;
&lt;br /&gt;
The standard way of triggering a Digital Ad Ratings (DAR) tag on Mobile-App is for the publisher app to trigger (either directly or via Ad server) the tag upon Ad exposure to the user. i.e. a client-side initiated tag. If you wish to implement server-side dispatch of mobile in-app DAR tags then see additional section in this document titled '''server-side tag dispatch'''. Please read the rest of this document before reading the section on server-server.&lt;br /&gt;
&lt;br /&gt;
Once you have completed your integration, you will be required to submit to a short certification. See [[#Appendix B: Implementation, Testing &amp;amp; Certification]]. Certification also grants inclusion to the approved publisher and certified Ad server vendor list.&lt;br /&gt;
&lt;br /&gt;
'''Important Note:''' for 2018, the MRC has mandated a series of changes to audience measurement that will require additional tag events to be communicated to Nielsen so that we may compute duration weighting etc. You are strongly urged to contact your Nielsen client service representative to seek a briefing from Nielsen on the best technical methods for tagging in order to be compliant with these changes.&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
== Standard DAR Tag ==&lt;br /&gt;
The DAR tag is available as a 1x1 pixel. The following pixel/tag parameters must be specified for all DAR tags, 1x1, regardless of implementation type: browser, mobile browser, mobile app or connected device.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
! Tag Parameter&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| CI&lt;br /&gt;
| Client ID: the ID that is associated with the DAR account that processed tag data is associated with. Will always be hardcoded to a Nielsen generated value that comes from the Nielsen campaign management system&lt;br /&gt;
|- style=&amp;quot;background-color:#eff8ef;&amp;quot;&lt;br /&gt;
| AM&lt;br /&gt;
| Ad Server: an ad server participating on the campaign media-plan. This is an internal Nielsen generated value when the ad server is indicated on the campaign during setup&lt;br /&gt;
|-&lt;br /&gt;
| CA&lt;br /&gt;
| Campaign Id: this is the ID associated with your DAR campaign. Unless you are creating and managing the Nielsen campaign via the DAR Tag API, then this parameter value will always be generated from the Nielsen campaign management system. Note: often maps to a media-plan I/O Id&lt;br /&gt;
|- style=&amp;quot;background-color:#eff8ef;&amp;quot;&lt;br /&gt;
| CR&lt;br /&gt;
| Creative Id: DAR does not currently report at the creative level; can be hard coded ad server id or associated with a macro expansion&lt;br /&gt;
|-&lt;br /&gt;
| PC&lt;br /&gt;
| Placement Id: can be generated by the ad server via macro expansion or generated by the Nielsen campaign management system. Note: often maps to one of Ad Unit Id, Line Item Id or Video Ad Id&lt;br /&gt;
|- style=&amp;quot;background-color:#eff8ef;&amp;quot;&lt;br /&gt;
| CE&lt;br /&gt;
| Site Id: the Id that identifies a publisher site that the placement needs to be mapped to. Maps into the Nielsen MarketView database. Note: can be hardcoded to a pre-registered ad server site id in the Nielsen system or a macro expansion where more than one pre-existing site ids have been made known to Nielsen&lt;br /&gt;
|-&lt;br /&gt;
| R&lt;br /&gt;
| Cachebuster (web): timestamp / random number. Generated by ad server&lt;br /&gt;
|- style=&amp;quot;background-color:#eff8ef;&amp;quot;&lt;br /&gt;
| AT&lt;br /&gt;
| Fixed value: “view”&lt;br /&gt;
|-&lt;br /&gt;
| RT&lt;br /&gt;
| Fixed value: “banner”&lt;br /&gt;
|- style=&amp;quot;background-color:#eff8ef;&amp;quot;&lt;br /&gt;
| ST&lt;br /&gt;
| Fixed value: “image”&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;blockquote&amp;gt; Do not URL encode the values&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Additional DAR Tag Parameters for Mobile App Audience Measurement ==&lt;br /&gt;
In this section, the additional URL parameters required beyond the standard cookie based web-browser tag are described in detail.&lt;br /&gt;
&lt;br /&gt;
For each of the tag examples detailed below, we can support both non-secure (http) and secure (https) flavors. The standard cookie based web-browser tag is included below for reference purposes.&lt;br /&gt;
&lt;br /&gt;
'''Important note:''' the values against each value-pair in the following tags are for illustrative purposes only. Values for CA, PC and CE will vary depending on the specific campaign being measured and capabilities of the Ad server for macro/value expansion. For more detail on the core DAR  parameters, please see the '''Nielsen DAR Tag Implementation Guide.'''&lt;br /&gt;
&lt;br /&gt;
'''Web Browser DAR tag (cookie based persons identification)'''&lt;br /&gt;
&amp;lt;code&amp;gt; //secure-gl.imrworldwide.com/cgi-bin/m?ci=nlsnci535&amp;amp;am=3&amp;amp;at=view&amp;amp;rt=banner&amp;amp;st=image&amp;amp;ca=nlsn12452&amp;amp;cr=crtve&amp;amp;pc=&amp;lt;creativeid&amp;gt;_plc0001&amp;amp;ce=&amp;lt;siteid&amp;gt;&amp;amp;r=&amp;lt;timestamp&amp;gt; &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Mobile-App DAR Tag Extension (IFA based persons identification)'''&lt;br /&gt;
&amp;lt;code&amp;gt; //secure-gl.imrworldwide.com/cgi-bin/m?ci=nlsnci535&amp;amp;am=3&amp;amp;at=view&amp;amp;rt=banner&amp;amp;st=image&amp;amp;ca=nlsn12452&amp;amp;cr=crtve&amp;amp;pc=&amp;lt;creativeid&amp;gt;_plc0001&amp;amp;ce=&amp;lt;siteid&amp;gt;&amp;amp;c7=osgrp,IOS&amp;amp;c8=devgrp,PHN&amp;amp;c9=devid,XXXX-XX-XXXXX-XXXX &amp;amp;c10=plt,MBL&amp;amp;c12=apv,&amp;lt;appVersion&amp;gt;&amp;amp;c13=asid,NIELSEN-PROVIDEDID&amp;amp;c14=osver,7.0.4&amp;amp;uoo=1&amp;amp;r=&amp;lt;timestamp&amp;gt; &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Additional DAR Tag Parameters for Mobile !! Description !! Mandatory parameter for mDAR?&lt;br /&gt;
|-&lt;br /&gt;
| &amp;amp;c7 || OS Grouping ||&lt;br /&gt;
|- style=&amp;quot;background-color:#eff8ef;&amp;quot;&lt;br /&gt;
| &amp;amp;c8  || Device Grouping || &amp;lt;center&amp;gt;✔&amp;lt;/center&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;amp;c9 || Advertising ID || &amp;lt;center&amp;gt;✔&amp;lt;/center&amp;gt;&lt;br /&gt;
|- style=&amp;quot;background-color:#eff8ef;&amp;quot;&lt;br /&gt;
| &amp;amp;c10 || Platform || &amp;lt;center&amp;gt;✔&amp;lt;/center&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;amp;c12 || App Version ||&lt;br /&gt;
|- style=&amp;quot;background-color:#eff8ef;&amp;quot;&lt;br /&gt;
| &amp;amp;c13 || AppID (Nielsen assigned App ID) || &amp;lt;center&amp;gt;✔&amp;lt;/center&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;amp;c14 || OS Version ||&lt;br /&gt;
|- style=&amp;quot;background-color:#eff8ef;&amp;quot;&lt;br /&gt;
| &amp;amp;uoo || Opt-out indicator || &amp;lt;center&amp;gt;✔&amp;lt;/center&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;blockquote&amp;gt;'''Note''': Clients are encouraged to make an effort to always fill-in optional parameters.&lt;br /&gt;
&lt;br /&gt;
'''Note''': Do not URL encode the values.&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== C7 - OS Grouping (Optional) ==&lt;br /&gt;
Valid device OS Grouping data values are the following literal values:&lt;br /&gt;
* osgrp,IOS&lt;br /&gt;
* osgrp,DROID&lt;br /&gt;
* osgrp,ANDROID&lt;br /&gt;
&amp;lt;blockquote&amp;gt;'''Note''': If one of the above values cannot be specific, then the parameter should not be included in the call.&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== C8 - Device Grouping (Mandatory)==&lt;br /&gt;
Valid literal values for phone, tablet, portable media player (iPod) and unknown are as follows:&lt;br /&gt;
* devgrp,PHN - Phone&lt;br /&gt;
* devgrp,TAB - Tablet&lt;br /&gt;
* devgrp,PMP - Portable Media Player (iPod)&lt;br /&gt;
* devgrp,UNWN - Unknown/Unclassified&lt;br /&gt;
* devgrp,DSK - Desktop&lt;br /&gt;
* devgrp,STV ←​ CTV/OTT Device&lt;br /&gt;
==== Notes ====&lt;br /&gt;
* Mandatory for accurate measurement, and if unable to pass, Nielsen cannot guarantee the impression will be classified correctly. &lt;br /&gt;
* “​UNWN” will result in Nielsen attempting an introspection of the User Agent in the HTTP request sent against Device Atlas for classification. &lt;br /&gt;
* “STV” is the default value for OTT when the specific device value isn’t passed.&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== C9 - Advertising ID (Mandatory) ==&lt;br /&gt;
This is the advertiser ID for the client’s mobile device. IDFA for iOS, Google Advertising ID for Android:&lt;br /&gt;
* devid,&amp;lt;IDFA&amp;gt;&lt;br /&gt;
* devid,&amp;lt;IFA&amp;gt;&lt;br /&gt;
* devid,&amp;lt;Google Advertising ID&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Notes ====&lt;br /&gt;
For Android devices, the Google Advertiser ID should be used as the default and the Android ID as the second option.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* If C9 is &amp;lt;empty&amp;gt;, upon receiving the ping, the Nielsen collection server will attempt a 302 redirect to the data provider per the regular DAR pixel for browsers.&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
* As of August 1, 2014, Google is enforcing use of the Advertising ID for advertising and user analytics (http://play.google.com/about/developer-content-policy.html).&lt;br /&gt;
&amp;lt;blockquote&amp;gt;'' &amp;quot;Beginning August 1st 2014, all updates and new apps uploaded to the Play Store must use the advertising ID (when available on a device) in lieu of any other device identifiers for any advertising purposes.&amp;quot;&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
* It is preferred that the IDFA or Google Advertising ID be sent as is from the mobile device (“cleartext”). However, if mandated, we will support SHA256 hashed values with no-salt. Passing a hashed value (and/or salting) using any other standard will result in a failed match by the data provider upon receiving the ping. In turn, this results in impressions surfacing in the DAR unmeasurable audience totals. Please contact Nielsen if you anticipate a large percentage of hashed values coming in from your publisher clients.&lt;br /&gt;
&lt;br /&gt;
=== Privacy, Ad Tracking, and Ad Targeting ===&lt;br /&gt;
In newer iterations of the iOS and Android device operating systems, a facility exists allowing users to “opt-out” of “Ad Tracking”. It is Nielsen’s interpretation that this setting is primarily designed to allow users to specify opt-out of Ad Targeting rather than Ad Measurement. DAR&lt;br /&gt;
does not provide Ad Targeting data.&lt;br /&gt;
&lt;br /&gt;
However, it is also Nielsen’s position that the publisher or Ad network should provide a mechanism to also allow a user to opt-out of Ad Measurement. The Nielsen SDK will honor the Nielsen Ad Measurement opt-out settings configurable @ http://www.nielsen.com/us/en/campaigns/privacy-policy-opt-out.html.&lt;br /&gt;
&lt;br /&gt;
However if the integration approach described in this document is being used instead of the Nielsen SDK then '''YOU''' as the publisher or Ad network must provide a capability to opt-out of Ad Measurement as the configuration on www.nielsen.com will not be detectable. You may&lt;br /&gt;
elect to interpret the iOS / Android “Ad Tracking” setting for the purpose of limit Ad measurement or provide a separate discreet mechanism to allow a user to opt-out of Ad measurement.&lt;br /&gt;
&lt;br /&gt;
Please see '''&amp;amp;uoo''' later in this document for implementation details of the optout indicator.&lt;br /&gt;
&lt;br /&gt;
For additional clarification on privacy policy, please contact your Nielsen representative.&lt;br /&gt;
&lt;br /&gt;
== C10 - Platform (Mandatory) ==&lt;br /&gt;
To determine this value, Nielsen suggests that the ad network leverage user agent information to determine if the client device is either a mobile or desktop device.&lt;br /&gt;
&lt;br /&gt;
Valid literal values for mobile and desktop data values are as follows:&lt;br /&gt;
* plt,MBL&lt;br /&gt;
* plt,DSK&lt;br /&gt;
* plt,OTT&lt;br /&gt;
==== Notes ====&lt;br /&gt;
* Mandatory for accurate measurement, and if unable to pass, Nielsen cannot guarantee the impression will be classified correctly. &lt;br /&gt;
* Omitting c10, or a value in c10, will result in Nielsen attempting an introspection of the User Agent in the HTTP request sent against Device Atlas for classification. &lt;br /&gt;
* “OTT” (Connective Devices) is a valid value that is populated by participating vendors (Amazon, Hulu and Roku).  Non-participating vendors will be unmeasurable volumetric metric only.&lt;br /&gt;
&lt;br /&gt;
== C12 - App Version (Optional) ==&lt;br /&gt;
This is the version of the ad network system software or SDK that is implemented in this extension. Although this field is not required, this feature can be useful for troubleshooting purposes following deployment.&lt;br /&gt;
* apv,&amp;lt;N.N&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== C13 - AppID ==&lt;br /&gt;
This Nielsen provided ID is unique to the ad network and is required for certification.&lt;br /&gt;
* asid,&amp;lt;NNNNNNNNN-NNNN-NNNN-NNNN-NNNNNNNNNNNN&amp;gt;&lt;br /&gt;
An App ID will be provided for testing. A separate App ID will be provided for production use. Please request from your Nielsen representative.&lt;br /&gt;
&amp;lt;blockquote&amp;gt;'''Note''': If you are a publisher leveraging the non-SDK solution, you will be provided with a unique App ID for each combination of app and device OS type.&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== C14 - OS Version (Optional) ==&lt;br /&gt;
Operating system version&lt;br /&gt;
* osver,&amp;lt;OS Version&amp;gt;&lt;br /&gt;
Example: for iOS -&amp;gt; 7.0.4&lt;br /&gt;
&lt;br /&gt;
== UOO - Opt Out ==&lt;br /&gt;
Opt-out parameter&lt;br /&gt;
* &amp;lt;Boolean state&amp;gt;&lt;br /&gt;
&amp;lt;Boolean state&amp;gt; is a Boolean representation of whether the user is opting out or not.&lt;br /&gt;
&lt;br /&gt;
The absence of uoo in the tag is interpreted as an implicit opt-in. i.e. not opting out.&lt;br /&gt;
&lt;br /&gt;
The following pairings of opt-out are supported. '''Important:''' you must choose one set of paired values only and inform your Nielsen representative.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Opt-out !! Opt-in&lt;br /&gt;
|-&lt;br /&gt;
| uoo=true || uoo=false&lt;br /&gt;
|-&lt;br /&gt;
| uoo=1 || uoo=0&lt;br /&gt;
|-&lt;br /&gt;
| uoo=yes || uoo=no&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;blockquote&amp;gt;'''Note''':  if your Ad server is not capable os supporting the discrete &amp;amp;uoo parameter then you can set the c9 value to &amp;lt;code&amp;gt;devid,optout&amp;lt;/code&amp;gt; (for example &amp;lt;code&amp;gt;…&amp;amp;c8=PHN&amp;amp;c9=devid,optout&amp;amp;c10=MBL…&amp;lt;/code&amp;gt;)&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Server-Side Tag Dispatch ==&lt;br /&gt;
The standard way of triggering a Digital Ad Ratings (DAR) tag on Mobile-App is for the publisher app to trigger (either directly or via Ad server) the tag upon Ad exposure to the user. i.e. a client-side initiated tag.&lt;br /&gt;
&lt;br /&gt;
It is important to note that MRC/IAB measurement standards stipulate that the Ad exposure event still be initiated and recorded from the client-side, even if the Ad measurement tag (in this case a DAR tag) is physically initiated from the server-side. Evidence may be required (publisher log file or similar) from the MRC/IAB that the user was exposed to the Ad creative on their device.&lt;br /&gt;
&lt;br /&gt;
The following additional changes to the standard mobile-app DAR tag are required to support dispatch the DAR tag from a '''server-side''' publisher ad server:&lt;br /&gt;
&lt;br /&gt;
#'''X-Forwarded-For (XFF) IP:''' The original client IP address must be passed in the X-Forwarded-For (XFF) HTTP header field. When the impression is fired directly from the Ad Server, the XReal-IP will be the Ad Server IP.&lt;br /&gt;
#'''Cachebuster:''' Already present in the DAR tag, this now becomes mandatory. A cachebuster or random number ensures a new call is made to the Ad Server. By including a cachebuster ('r' parameter), the tag will not be cached. The timestamp of when the Ad was served can be used.&lt;br /&gt;
#'''User Agent (UA):''' The HTTP UA from the client device should be used to populate the HTTP UA in the server-server connection/ping.&lt;br /&gt;
#'''TLS:''' the tag received by Nielsen must be TLS v1.2 compliant or greater.&lt;br /&gt;
&lt;br /&gt;
==== Important notes ====&lt;br /&gt;
* the current iteration of server-server tag collection only supports mobile-app (IFA and AAID) and will NOT support cookie based audience measurement.&lt;br /&gt;
* The client’s server-server setup that is going to trigger/send the DAR tag should ​suppress​ any Nielsen cookie returned by the Nielsen collection server as a result of the first DAR tag received. If the Nielsen cookie (returned upon receiving the first DAR tag into secure.imrworldwide.com) is not suppressed then invalid traffic (IVT) filtration will quickly be triggered upon receiving the 2​nd and nth tag.&lt;br /&gt;
&lt;br /&gt;
== Appendix A: Example Implementation ==&lt;br /&gt;
In the below examples, you will see the overall DAR flow (Figure 1) and a detailed illustrative Ad Request / Response model (Figure 2).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div align=&amp;quot;center&amp;quot;&amp;gt;'''Figure 1 – End to End Data Flow'''&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:mDAR_Dataflow.png|center|link=]]&lt;br /&gt;
&lt;br /&gt;
Nielsen certified publishers and platforms will append the new parameters (below) with the appropriate URL safe values passed to Nielsen’s current DAR tag. The current DAR tag should be acquired using the existing processes for each campaign/placement. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&amp;lt;code&amp;gt;'''&amp;amp;c7'''=osgrp,IOS'''&amp;amp;c8'''=devgrp,PHN'''&amp;amp;c9'''=devid,XXXX-XX-XXXXXXXXX'''&amp;amp;c10'''=plt,MBL'''&amp;amp;c12'''=apv,AppVersion'''&amp;amp;c13'''=asid,XXXX-XX-XXXX-XXXX&amp;lt;/code&amp;gt;&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div align=&amp;quot;center&amp;quot;&amp;gt;'''Figure 2 – Illustrative Ad Request / Ad Response'''&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:ad_response.png|center|link=]]&lt;br /&gt;
&lt;br /&gt;
The above is an example of how an Ad server is supporting the build of mobile DAR tags for its publisher clients.&lt;br /&gt;
*Step 2 in Figure 1 is a summary of steps 1 and 2 in Figure 2 above.&lt;br /&gt;
*Steps 3 and 4 in Figure 1 is a summary of steps 3 through 9 in Figure 2 above.&lt;br /&gt;
&lt;br /&gt;
== Appendix B: Implementation, Testing &amp;amp; Certification ==&lt;br /&gt;
Once you have integrated the ping per the above specs, Nielsen requires you to pass through a one-time certification before traffic can be accepted into the production environment.&lt;br /&gt;
&lt;br /&gt;
The overall process is:&lt;br /&gt;
* Valid DAR contract or NDA is in place.&lt;br /&gt;
* Kick-off meeting with Nielsen onboarding team.&lt;br /&gt;
* Confirm meet minimums testing requirements:&lt;br /&gt;
** Host Ad/Tag for in-app delivery&lt;br /&gt;
** Can pass opt-out back to Nielsen&lt;br /&gt;
** Can pass Device ID in cleartext or SHA-256&lt;br /&gt;
* Nielsen provides the mDAR testing form that includes the test App ID and the test tag&lt;br /&gt;
* Identify the live campaigns for initial testing and run the test tag; suggest 5,000-10,000 impressions.&lt;br /&gt;
* Nielsen validates the data received from the test and confirms the initial test successful and provides the production App ID.&lt;br /&gt;
* Ensure contracts are in place for external test campaign with Nielsen Client Service team.&lt;br /&gt;
* Identify another live campaigns for production testing with production tag and app ID.&lt;br /&gt;
* Nielsen validates the data received from the final test and confirms certification for any DAR countries tested.&lt;br /&gt;
==== Goals ====&lt;br /&gt;
* To test in full DAR E2E environment, receive matches from data provider for demographics and correct identification of mobile impressions.&lt;br /&gt;
* To test that all minimum requirements in step 3 are passed to Nielsen with no issues.&lt;br /&gt;
* To test in a full DAR end-to-end environment, receive matches from data providers for demographics and correct identification of mobile impressions.&lt;/div&gt;</summary>
		<author><name>ColinBrown</name></author>
	</entry>
	<entry>
		<id>https://nielsentest.mywikis.net/w/index.php?title=Mobile_DAR_Attributes_Requirements&amp;diff=5779</id>
		<title>Mobile DAR Attributes Requirements</title>
		<link rel="alternate" type="text/html" href="https://nielsentest.mywikis.net/w/index.php?title=Mobile_DAR_Attributes_Requirements&amp;diff=5779"/>
		<updated>2022-04-21T05:14:35Z</updated>

		<summary type="html">&lt;p&gt;ColinBrown: /* Additional DAR Tag Parameters for Mobile App Audience Measurement */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Breadcrumb|}} {{Breadcrumb|Digital}} {{Breadcrumb|Digital Ad Ratings}}  {{CurrentBreadcrumb}}&lt;br /&gt;
[[Category:Digital]]&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
The standard Nielsen Digital Ad Rating (DAR) tag only supports cookie based '''web browser''' viewing on PCs, MACs, and tablets/smartphone (web-browser). However, when ads are served to tablets/smartphones via native '''app-store applications''', the cookie based tag does not function correctly. Additional tag attributes are needed in order for audience reach measurement to function. Example tags are detailed later in this document.&lt;br /&gt;
&lt;br /&gt;
One way Nielsen clients can accomplish this is by the use of Nielsen’s native iOS/Android App SDK. Nielsen’s App SDK automatically adds these additional tag attributes to the standard cookie based webbrowser tag before the tag is forwarded on to the Nielsen census collection system. However, there is a significant portion of the publisher mobile app universe where it is either not feasible, or desirable to integrate Nielsen’s native App SDK into 3rd party applications.&lt;br /&gt;
&lt;br /&gt;
The purpose of this document is to detail the tag URL parameters required that are '''additional''' to the standard cookie based web-browser tag.&lt;br /&gt;
&lt;br /&gt;
The most critical additional parameter required is the insertion of the Advertising ID (IFA / IDFA / AdID) from the users device that has been exposed to the Ad creative.&lt;br /&gt;
&lt;br /&gt;
If you are reading this document as an Ad server representative then it is assumed that you have published a specification that mobile app publishers follow to pass the appropriate Advertising ID in the Ad request payload. Typically, your Ad server will then expand a macro or label with that value passed in the Ad request URL, insert into the DAR mobile app tag and redirect to Nielsen collections. See s. See  [[#Appendix A: Example Implementation]], figure 2 for an example tag workflow.&lt;br /&gt;
&lt;br /&gt;
The standard way of triggering a Digital Ad Ratings (DAR) tag on Mobile-App is for the publisher app to trigger (either directly or via Ad server) the tag upon Ad exposure to the user. i.e. a client-side initiated tag. If you wish to implement server-side dispatch of mobile in-app DAR tags then see additional section in this document titled '''server-side tag dispatch'''. Please read the rest of this document before reading the section on server-server.&lt;br /&gt;
&lt;br /&gt;
Once you have completed your integration, you will be required to submit to a short certification. See [[#Appendix B: Implementation, Testing &amp;amp; Certification]]. Certification also grants inclusion to the approved publisher and certified Ad server vendor list.&lt;br /&gt;
&lt;br /&gt;
'''Important Note:''' for 2018, the MRC has mandated a series of changes to audience measurement that will require additional tag events to be communicated to Nielsen so that we may compute duration weighting etc. You are strongly urged to contact your Nielsen client service representative to seek a briefing from Nielsen on the best technical methods for tagging in order to be compliant with these changes.&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
== Standard DAR Tag ==&lt;br /&gt;
The DAR tag is available as a 1x1 pixel. The following pixel/tag parameters must be specified for all DAR tags, 1x1, regardless of implementation type: browser, mobile browser, mobile app or connected device.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
! Tag Parameter&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| CI&lt;br /&gt;
| Client ID: the ID that is associated with the DAR account that processed tag data is associated with. Will always be hardcoded to a Nielsen generated value that comes from the Nielsen campaign management system&lt;br /&gt;
|- style=&amp;quot;background-color:#eff8ef;&amp;quot;&lt;br /&gt;
| AM&lt;br /&gt;
| Ad Server: an ad server participating on the campaign media-plan. This is an internal Nielsen generated value when the ad server is indicated on the campaign during setup&lt;br /&gt;
|-&lt;br /&gt;
| CA&lt;br /&gt;
| Campaign Id: this is the ID associated with your DAR campaign. Unless you are creating and managing the Nielsen campaign via the DAR Tag API, then this parameter value will always be generated from the Nielsen campaign management system. Note: often maps to a media-plan I/O Id&lt;br /&gt;
|- style=&amp;quot;background-color:#eff8ef;&amp;quot;&lt;br /&gt;
| CR&lt;br /&gt;
| Creative Id: DAR does not currently report at the creative level; can be hard coded ad server id or associated with a macro expansion&lt;br /&gt;
|-&lt;br /&gt;
| PC&lt;br /&gt;
| Placement Id: can be generated by the ad server via macro expansion or generated by the Nielsen campaign management system. Note: often maps to one of Ad Unit Id, Line Item Id or Video Ad Id&lt;br /&gt;
|- style=&amp;quot;background-color:#eff8ef;&amp;quot;&lt;br /&gt;
| CE&lt;br /&gt;
| Site Id: the Id that identifies a publisher site that the placement needs to be mapped to. Maps into the Nielsen MarketView database. Note: can be hardcoded to a pre-registered ad server site id in the Nielsen system or a macro expansion where more than one pre-existing site ids have been made known to Nielsen&lt;br /&gt;
|-&lt;br /&gt;
| R&lt;br /&gt;
| Cachebuster (web): timestamp / random number. Generated by ad server&lt;br /&gt;
|- style=&amp;quot;background-color:#eff8ef;&amp;quot;&lt;br /&gt;
| AT&lt;br /&gt;
| Fixed value: “view”&lt;br /&gt;
|-&lt;br /&gt;
| RT&lt;br /&gt;
| Fixed value: “banner”&lt;br /&gt;
|- style=&amp;quot;background-color:#eff8ef;&amp;quot;&lt;br /&gt;
| ST&lt;br /&gt;
| Fixed value: “image”&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;blockquote&amp;gt; Do not URL encode the values&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Additional DAR Tag Parameters for Mobile App Audience Measurement ==&lt;br /&gt;
In this section, the additional URL parameters required beyond the standard cookie based web-browser tag are described in detail.&lt;br /&gt;
&lt;br /&gt;
For each of the tag examples detailed below, we can support both non-secure (http) and secure (https) flavors. The standard cookie based web-browser tag is included below for reference purposes.&lt;br /&gt;
&lt;br /&gt;
'''Important note:''' the values against each value-pair in the following tags are for illustrative purposes only. Values for CA, PC and CE will vary depending on the specific campaign being measured and capabilities of the Ad server for macro/value expansion. For more detail on the core DAR  parameters, please see the '''Nielsen DAR Tag Implementation Guide.'''&lt;br /&gt;
&lt;br /&gt;
'''Web Browser DAR tag (cookie based persons identification)'''&lt;br /&gt;
&amp;lt;code&amp;gt; //secure-gl.imrworldwide.com/cgi-bin/m?ci=nlsnci535&amp;amp;am=3&amp;amp;at=view&amp;amp;rt=banner&amp;amp;st=image&amp;amp;ca=nlsn12452&amp;amp;cr=crtve&amp;amp;pc=&amp;lt;creativeid&amp;gt;_plc0001&amp;amp;ce=&amp;lt;siteid&amp;gt;&amp;amp;r=&amp;lt;timestamp&amp;gt; &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Mobile-App DAR Tag Extension (IFA based persons identification)'''&lt;br /&gt;
//secure-gl.imrworldwide.com/cgi-bin/m?ci=nlsnci535&amp;amp;am=3&amp;amp;at=view&amp;amp;rt=banner&amp;amp;st=image&amp;amp;ca=nlsn12452&amp;amp;cr=crtve&amp;amp;pc=&amp;lt;creativeid&amp;gt;_plc0001&amp;amp;ce=&amp;lt;siteid&amp;gt;&amp;amp;c7=osgrp,IOS&amp;amp;c8=devgrp,PHN&amp;amp;c9=devid,XXXX-XX-XXXXX-XXXX &amp;amp;c10=plt,MBL&amp;amp;c12=apv,&amp;lt;appVersion&amp;gt;&amp;amp;c13=asid,NIELSEN-PROVIDEDID&amp;amp;c14=osver,7.0.4&amp;amp;uoo=1&amp;amp;r=&amp;lt;timestamp&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Additional DAR Tag Parameters for Mobile !! Description !! Mandatory parameter for mDAR?&lt;br /&gt;
|-&lt;br /&gt;
| &amp;amp;c7 || OS Grouping ||&lt;br /&gt;
|- style=&amp;quot;background-color:#eff8ef;&amp;quot;&lt;br /&gt;
| &amp;amp;c8  || Device Grouping || &amp;lt;center&amp;gt;✔&amp;lt;/center&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;amp;c9 || Advertising ID || &amp;lt;center&amp;gt;✔&amp;lt;/center&amp;gt;&lt;br /&gt;
|- style=&amp;quot;background-color:#eff8ef;&amp;quot;&lt;br /&gt;
| &amp;amp;c10 || Platform || &amp;lt;center&amp;gt;✔&amp;lt;/center&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;amp;c12 || App Version ||&lt;br /&gt;
|- style=&amp;quot;background-color:#eff8ef;&amp;quot;&lt;br /&gt;
| &amp;amp;c13 || AppID (Nielsen assigned App ID) || &amp;lt;center&amp;gt;✔&amp;lt;/center&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;amp;c14 || OS Version ||&lt;br /&gt;
|- style=&amp;quot;background-color:#eff8ef;&amp;quot;&lt;br /&gt;
| &amp;amp;uoo || Opt-out indicator || &amp;lt;center&amp;gt;✔&amp;lt;/center&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;blockquote&amp;gt;'''Note''': Clients are encouraged to make an effort to always fill-in optional parameters.&lt;br /&gt;
&lt;br /&gt;
'''Note''': Do not URL encode the values.&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== C7 - OS Grouping (Optional) ==&lt;br /&gt;
Valid device OS Grouping data values are the following literal values:&lt;br /&gt;
* osgrp,IOS&lt;br /&gt;
* osgrp,DROID&lt;br /&gt;
* osgrp,ANDROID&lt;br /&gt;
&amp;lt;blockquote&amp;gt;'''Note''': If one of the above values cannot be specific, then the parameter should not be included in the call.&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== C8 - Device Grouping (Mandatory)==&lt;br /&gt;
Valid literal values for phone, tablet, portable media player (iPod) and unknown are as follows:&lt;br /&gt;
* devgrp,PHN - Phone&lt;br /&gt;
* devgrp,TAB - Tablet&lt;br /&gt;
* devgrp,PMP - Portable Media Player (iPod)&lt;br /&gt;
* devgrp,UNWN - Unknown/Unclassified&lt;br /&gt;
* devgrp,DSK - Desktop&lt;br /&gt;
* devgrp,STV ←​ CTV/OTT Device&lt;br /&gt;
==== Notes ====&lt;br /&gt;
* Mandatory for accurate measurement, and if unable to pass, Nielsen cannot guarantee the impression will be classified correctly. &lt;br /&gt;
* “​UNWN” will result in Nielsen attempting an introspection of the User Agent in the HTTP request sent against Device Atlas for classification. &lt;br /&gt;
* “STV” is the default value for OTT when the specific device value isn’t passed.&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== C9 - Advertising ID (Mandatory) ==&lt;br /&gt;
This is the advertiser ID for the client’s mobile device. IDFA for iOS, Google Advertising ID for Android:&lt;br /&gt;
* devid,&amp;lt;IDFA&amp;gt;&lt;br /&gt;
* devid,&amp;lt;IFA&amp;gt;&lt;br /&gt;
* devid,&amp;lt;Google Advertising ID&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Notes ====&lt;br /&gt;
For Android devices, the Google Advertiser ID should be used as the default and the Android ID as the second option.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* If C9 is &amp;lt;empty&amp;gt;, upon receiving the ping, the Nielsen collection server will attempt a 302 redirect to the data provider per the regular DAR pixel for browsers.&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
* As of August 1, 2014, Google is enforcing use of the Advertising ID for advertising and user analytics (http://play.google.com/about/developer-content-policy.html).&lt;br /&gt;
&amp;lt;blockquote&amp;gt;'' &amp;quot;Beginning August 1st 2014, all updates and new apps uploaded to the Play Store must use the advertising ID (when available on a device) in lieu of any other device identifiers for any advertising purposes.&amp;quot;&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
* It is preferred that the IDFA or Google Advertising ID be sent as is from the mobile device (“cleartext”). However, if mandated, we will support SHA256 hashed values with no-salt. Passing a hashed value (and/or salting) using any other standard will result in a failed match by the data provider upon receiving the ping. In turn, this results in impressions surfacing in the DAR unmeasurable audience totals. Please contact Nielsen if you anticipate a large percentage of hashed values coming in from your publisher clients.&lt;br /&gt;
&lt;br /&gt;
=== Privacy, Ad Tracking, and Ad Targeting ===&lt;br /&gt;
In newer iterations of the iOS and Android device operating systems, a facility exists allowing users to “opt-out” of “Ad Tracking”. It is Nielsen’s interpretation that this setting is primarily designed to allow users to specify opt-out of Ad Targeting rather than Ad Measurement. DAR&lt;br /&gt;
does not provide Ad Targeting data.&lt;br /&gt;
&lt;br /&gt;
However, it is also Nielsen’s position that the publisher or Ad network should provide a mechanism to also allow a user to opt-out of Ad Measurement. The Nielsen SDK will honor the Nielsen Ad Measurement opt-out settings configurable @ http://www.nielsen.com/us/en/campaigns/privacy-policy-opt-out.html.&lt;br /&gt;
&lt;br /&gt;
However if the integration approach described in this document is being used instead of the Nielsen SDK then '''YOU''' as the publisher or Ad network must provide a capability to opt-out of Ad Measurement as the configuration on www.nielsen.com will not be detectable. You may&lt;br /&gt;
elect to interpret the iOS / Android “Ad Tracking” setting for the purpose of limit Ad measurement or provide a separate discreet mechanism to allow a user to opt-out of Ad measurement.&lt;br /&gt;
&lt;br /&gt;
Please see '''&amp;amp;uoo''' later in this document for implementation details of the optout indicator.&lt;br /&gt;
&lt;br /&gt;
For additional clarification on privacy policy, please contact your Nielsen representative.&lt;br /&gt;
&lt;br /&gt;
== C10 - Platform (Mandatory) ==&lt;br /&gt;
To determine this value, Nielsen suggests that the ad network leverage user agent information to determine if the client device is either a mobile or desktop device.&lt;br /&gt;
&lt;br /&gt;
Valid literal values for mobile and desktop data values are as follows:&lt;br /&gt;
* plt,MBL&lt;br /&gt;
* plt,DSK&lt;br /&gt;
* plt,OTT&lt;br /&gt;
==== Notes ====&lt;br /&gt;
* Mandatory for accurate measurement, and if unable to pass, Nielsen cannot guarantee the impression will be classified correctly. &lt;br /&gt;
* Omitting c10, or a value in c10, will result in Nielsen attempting an introspection of the User Agent in the HTTP request sent against Device Atlas for classification. &lt;br /&gt;
* “OTT” (Connective Devices) is a valid value that is populated by participating vendors (Amazon, Hulu and Roku).  Non-participating vendors will be unmeasurable volumetric metric only.&lt;br /&gt;
&lt;br /&gt;
== C12 - App Version (Optional) ==&lt;br /&gt;
This is the version of the ad network system software or SDK that is implemented in this extension. Although this field is not required, this feature can be useful for troubleshooting purposes following deployment.&lt;br /&gt;
* apv,&amp;lt;N.N&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== C13 - AppID ==&lt;br /&gt;
This Nielsen provided ID is unique to the ad network and is required for certification.&lt;br /&gt;
* asid,&amp;lt;NNNNNNNNN-NNNN-NNNN-NNNN-NNNNNNNNNNNN&amp;gt;&lt;br /&gt;
An App ID will be provided for testing. A separate App ID will be provided for production use. Please request from your Nielsen representative.&lt;br /&gt;
&amp;lt;blockquote&amp;gt;'''Note''': If you are a publisher leveraging the non-SDK solution, you will be provided with a unique App ID for each combination of app and device OS type.&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== C14 - OS Version (Optional) ==&lt;br /&gt;
Operating system version&lt;br /&gt;
* osver,&amp;lt;OS Version&amp;gt;&lt;br /&gt;
Example: for iOS -&amp;gt; 7.0.4&lt;br /&gt;
&lt;br /&gt;
== UOO - Opt Out ==&lt;br /&gt;
Opt-out parameter&lt;br /&gt;
* &amp;lt;Boolean state&amp;gt;&lt;br /&gt;
&amp;lt;Boolean state&amp;gt; is a Boolean representation of whether the user is opting out or not.&lt;br /&gt;
&lt;br /&gt;
The absence of uoo in the tag is interpreted as an implicit opt-in. i.e. not opting out.&lt;br /&gt;
&lt;br /&gt;
The following pairings of opt-out are supported. '''Important:''' you must choose one set of paired values only and inform your Nielsen representative.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Opt-out !! Opt-in&lt;br /&gt;
|-&lt;br /&gt;
| uoo=true || uoo=false&lt;br /&gt;
|-&lt;br /&gt;
| uoo=1 || uoo=0&lt;br /&gt;
|-&lt;br /&gt;
| uoo=yes || uoo=no&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;blockquote&amp;gt;'''Note''':  if your Ad server is not capable os supporting the discrete &amp;amp;uoo parameter then you can set the c9 value to &amp;lt;code&amp;gt;devid,optout&amp;lt;/code&amp;gt; (for example &amp;lt;code&amp;gt;…&amp;amp;c8=PHN&amp;amp;c9=devid,optout&amp;amp;c10=MBL…&amp;lt;/code&amp;gt;)&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Server-Side Tag Dispatch ==&lt;br /&gt;
The standard way of triggering a Digital Ad Ratings (DAR) tag on Mobile-App is for the publisher app to trigger (either directly or via Ad server) the tag upon Ad exposure to the user. i.e. a client-side initiated tag.&lt;br /&gt;
&lt;br /&gt;
It is important to note that MRC/IAB measurement standards stipulate that the Ad exposure event still be initiated and recorded from the client-side, even if the Ad measurement tag (in this case a DAR tag) is physically initiated from the server-side. Evidence may be required (publisher log file or similar) from the MRC/IAB that the user was exposed to the Ad creative on their device.&lt;br /&gt;
&lt;br /&gt;
The following additional changes to the standard mobile-app DAR tag are required to support dispatch the DAR tag from a '''server-side''' publisher ad server:&lt;br /&gt;
&lt;br /&gt;
#'''X-Forwarded-For (XFF) IP:''' The original client IP address must be passed in the X-Forwarded-For (XFF) HTTP header field. When the impression is fired directly from the Ad Server, the XReal-IP will be the Ad Server IP.&lt;br /&gt;
#'''Cachebuster:''' Already present in the DAR tag, this now becomes mandatory. A cachebuster or random number ensures a new call is made to the Ad Server. By including a cachebuster ('r' parameter), the tag will not be cached. The timestamp of when the Ad was served can be used.&lt;br /&gt;
#'''User Agent (UA):''' The HTTP UA from the client device should be used to populate the HTTP UA in the server-server connection/ping.&lt;br /&gt;
#'''TLS:''' the tag received by Nielsen must be TLS v1.2 compliant or greater.&lt;br /&gt;
&lt;br /&gt;
==== Important notes ====&lt;br /&gt;
* the current iteration of server-server tag collection only supports mobile-app (IFA and AAID) and will NOT support cookie based audience measurement.&lt;br /&gt;
* The client’s server-server setup that is going to trigger/send the DAR tag should ​suppress​ any Nielsen cookie returned by the Nielsen collection server as a result of the first DAR tag received. If the Nielsen cookie (returned upon receiving the first DAR tag into secure.imrworldwide.com) is not suppressed then invalid traffic (IVT) filtration will quickly be triggered upon receiving the 2​nd and nth tag.&lt;br /&gt;
&lt;br /&gt;
== Appendix A: Example Implementation ==&lt;br /&gt;
In the below examples, you will see the overall DAR flow (Figure 1) and a detailed illustrative Ad Request / Response model (Figure 2).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div align=&amp;quot;center&amp;quot;&amp;gt;'''Figure 1 – End to End Data Flow'''&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:mDAR_Dataflow.png|center|link=]]&lt;br /&gt;
&lt;br /&gt;
Nielsen certified publishers and platforms will append the new parameters (below) with the appropriate URL safe values passed to Nielsen’s current DAR tag. The current DAR tag should be acquired using the existing processes for each campaign/placement. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&amp;lt;code&amp;gt;'''&amp;amp;c7'''=osgrp,IOS'''&amp;amp;c8'''=devgrp,PHN'''&amp;amp;c9'''=devid,XXXX-XX-XXXXXXXXX'''&amp;amp;c10'''=plt,MBL'''&amp;amp;c12'''=apv,AppVersion'''&amp;amp;c13'''=asid,XXXX-XX-XXXX-XXXX&amp;lt;/code&amp;gt;&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div align=&amp;quot;center&amp;quot;&amp;gt;'''Figure 2 – Illustrative Ad Request / Ad Response'''&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:ad_response.png|center|link=]]&lt;br /&gt;
&lt;br /&gt;
The above is an example of how an Ad server is supporting the build of mobile DAR tags for its publisher clients.&lt;br /&gt;
*Step 2 in Figure 1 is a summary of steps 1 and 2 in Figure 2 above.&lt;br /&gt;
*Steps 3 and 4 in Figure 1 is a summary of steps 3 through 9 in Figure 2 above.&lt;br /&gt;
&lt;br /&gt;
== Appendix B: Implementation, Testing &amp;amp; Certification ==&lt;br /&gt;
Once you have integrated the ping per the above specs, Nielsen requires you to pass through a one-time certification before traffic can be accepted into the production environment.&lt;br /&gt;
&lt;br /&gt;
The overall process is:&lt;br /&gt;
* Valid DAR contract or NDA is in place.&lt;br /&gt;
* Kick-off meeting with Nielsen onboarding team.&lt;br /&gt;
* Confirm meet minimums testing requirements:&lt;br /&gt;
** Host Ad/Tag for in-app delivery&lt;br /&gt;
** Can pass opt-out back to Nielsen&lt;br /&gt;
** Can pass Device ID in cleartext or SHA-256&lt;br /&gt;
* Nielsen provides the mDAR testing form that includes the test App ID and the test tag&lt;br /&gt;
* Identify the live campaigns for initial testing and run the test tag; suggest 5,000-10,000 impressions.&lt;br /&gt;
* Nielsen validates the data received from the test and confirms the initial test successful and provides the production App ID.&lt;br /&gt;
* Ensure contracts are in place for external test campaign with Nielsen Client Service team.&lt;br /&gt;
* Identify another live campaigns for production testing with production tag and app ID.&lt;br /&gt;
* Nielsen validates the data received from the final test and confirms certification for any DAR countries tested.&lt;br /&gt;
==== Goals ====&lt;br /&gt;
* To test in full DAR E2E environment, receive matches from data provider for demographics and correct identification of mobile impressions.&lt;br /&gt;
* To test that all minimum requirements in step 3 are passed to Nielsen with no issues.&lt;br /&gt;
* To test in a full DAR end-to-end environment, receive matches from data providers for demographics and correct identification of mobile impressions.&lt;/div&gt;</summary>
		<author><name>ColinBrown</name></author>
	</entry>
</feed>