Digital Measurement Testing

From Engineering Client Portal

Engineering Portal / Digital / US DCR & DTVR / Digital Measurement Testing

Note: Due to the variable and unique nature of each application, there may be additional testing required by Nielsen that is not listed here. These tests are completed to ensure the quality of data collected. Please speak with your account manager if you have any questions.

Monitoring Tools

HTTP traffic-monitoring tool, such as Charles or Fiddler are required.

Step 1: Filter traffic

Filter HTTP traffic with the string "imr" to capture traffic from the SDK as shown in the below figure. This will capture traffic going to Nielsen servers. Now set up the device to proxy to this traffic analyzer.

Note: Instructions may vary from device to device and are available online.

fiddler-web-debugger.png

Step 2: Verify User Agent

Verify that your user agent is not being flagged as bot traffic.

Device Atlas User Agent Tester
Copy your application's user agent string to your clipboard and input it into the Device Atlas User Agent Tester. If your user agent is designated as a bot, you will see a value of "true" associated with the Is Robot property in the user agent search results.

Configuring User Agent
You will need to override the default value set in the user agent header request field if it's flagged as a bot. Request traffic originating from some third party HTTP clients is designated as bot traffic. To change the user agent, change the value of the User Agent Request header as indicated below:

    Request request = new Request.Builder()
    .url("[api endpoint request url string]")
    .header("User-Agent", "Custom User Agent")
    .build();

Step 3: Check Opt-Out

If the opt-out function or app disable feature is previously tested, it has to be ensured that an opt-in is completed on the device before continuing. Terminate the app completely before starting.

Step 4: Hello Ping

The first HTTPS traffic that should be seen is the SDK request for configuration information, called a hello ping. In order to see this ping, Charles / Fiddler has to be configured to capture HTTPS traffic.

https://secure-dcr.imrworldwide.com/cgi-bin/cfg?cfgv=100&longitude=-82.66&latitude=28.05&apid=&apv=3.84.043&apn=com.video.videop layer&sdkv=aa .1.2.3&nuid=7B341CD-5109-B88-B77D-8ADE904717A7&osver=ANDROID.4.2.2&devtypid=LGE-Nexus-4&devid=FFA503E7- 7749-4448-9922-132492ED4E12&fmt=json&adf=&uoo=&sfcode=dcr&ccode=1&dma=&rnd=1527112029

Note: If this ping fails to fire, it is likely that the instance of the SDK failed to initialize. Please see Initialization (iOS SDK API Reference - Initialization and Android SDK API Reference - Initialization) to see how to initialize the SDK.

Step 5: The L Ping

When the app is started after installing for the first time, and app is measuring DCR Static content only, a DCR static app launch known as L ping firing to secure-dcr.imrworldwide.com server in the traffic-monitor should be seen. However, the L ping will be observed again if app goes into background and resumes back after 5 minutes.

http://secure-dcr.imrworldwide.com/cgi-bin/gn?prd=dcr&ci=APRP7&ch=APRP7_NA_defChnAsset&asn=defChnAsset&tl=&c6=vc,NA&c13=asid,XXXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX&c32=segA,&c33=segB,&c34=segC,&c15=apn,MTVR-APT-QA&sup=0&segment2=539&segment1=usa&forward=1&ad=1&cr=L&c9=devid,a69983bc65ad94f9e57109fec68cc847bf59575ee03cadb76b187f4c24eaf793&enc=true&c1=nuid,142a40706f9c03bfea020f7297828534a1f14895d7a8c5303d9b8a19b3337c13&r=&at=launch&rt=text&c16=sdkv ,aa.4.0.0&c27=cln,473&crs=0&si=&lat=28.09&lon=-82.76&c29=plid,XXXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX&c30=bldv,aa.4.0.0.3&st=dcr&c7=osgrp,DROID&c8=devgrp,TAB&c10=plt,MBL&c40=adbid,&c14=osver,ANDROID.4.4.4&c26=1&c35=&c36=cref1,&c37=cref2,&c11=agg,1&c12=apv,apt.4.0.0.3&h33=2&c51=adl,0&c52=noad,0&devtypid=asus-Nexus-7&rnd=1432529128693

If the app is measuring DCR Video Content only, then the hello ping will fire but the L ping will not be observed upon app launch.

Step 6: Static View Ping

For any sections that are tagged for static content, a DCR Static – view ping should be received. The first landing page should always be tagged. An example of this ping is:

http://secure-dcr.imrworldwide.com/cgi-bin/gn?prd=dcr&ci=APRP7&ch=APRP7_NA_defChnAsset&asn=defChnAsset&tl=&c6=vc,NA&c13=asid,XXXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX&c32=segA,&c33=segB,&c34=segC,&c15=apn,MTVR-APT-QA&sup=0&segment2=539&segment1=usa&forward=1&ad=1&cr=V&c9=devid,a69983bc65ad94f9e57109fec68cc847bf59575ee03cadb76b187f4c24eaf793&enc=true&c1=nuid,142a40706f9c03bfea020f7297828534a1f14895d7a8c5303d9b8a19b3337c13&r=&at=view&rt=text&c16=sdkv,a a.4.0.0&c27=cln,0&crs=0&si=&lat=&lon=&c29=plid,XXXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX&c30=bldv,aa.4.0.0.1&st=dcr&c7=osgrp,DROID&c8=devgrp,TAB&c10=plt,MBL&c40=adbid,&c14=osver,ANDROID.4.4.4&c26=1&c35=&c36=cref1,&c37=cref2,&c11=agg,1&c12=apv,apt.4.0.0.2&h33=2&c51=adl,0&c52=noad,0&devtypid=asus-Nexus-7&rnd=1432068181560

Parameter Description Example
ci Client ID – this value should be consistent throughout all of the pings that fire for the implementation. us-123456
asn Section/Asset Name – this value should represent the asset’s name assigned in the metadata. Page-Asset
at Action Type Start
rt This value should be “text” and indicates that this is a DCR tag for static content. text
c13 This value should contain the appid of the application. asid,XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX
c32 Segment A – Client customized metadata CustomSegmentValueA
c33 Segment B – Client customized metadata CustomSegmentValueB
c34 Segment C – Client customized metadata CustomSegmentValueC

Step 7: Video View Ping

Approximately 60 seconds into viewing of the stream, a DCR Video – view ping fire to secure-dcr.imrworldwide.com server indicated by the cr value containing a V in the format of 4_00_99_V1_00000 should be seen.

Parameter Description Example
ci Client ID – this value should be consistent throughout all of the pings that fire for the implementation. us-123456
asn Asset Name – this value should represent asset’s name assigned in the metadata. Video-Asset
tl Episode Title Episode Name – S2 – E1 – LF
c13 This value should contain the appid of the application. asid,XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX
cr Crediting Ping Identifier 4_00_99_V1_00000
rt This Value should be “video” and indicates that this is a DCR tag for video content. video
c10 Platform Indicator plt,DSK or plt,MBL

Note: If this ping fails to fire, a common cause is improper metadata being passed to the SDK. Examples of the proper metadata to be passed in the loadMetadata

Step 8: Video Duration Ping

The first duration ping is fired after 5 minutes of content is viewed. A DCR Video – duration ping fire to secure-dcr.imrworldwide.com indicated by the cr value containing a D in the format of 4_00_99_D1_11111 should be seen. This D ping should fire approximately every 5 minutes after the initial duration ping has fired or when the content switches to an advertisement. The ad length (c51) is the total ad duration viewed in the previous session, and the ad count (c52) is the number of ads viewed in previous segment.

Parameter Description Example
ci Client ID – this value should be consistent throughout all of the pings that fire for the implementation. us-123456
asn Asset Name – this value should represent asset’s name assigned in the metadata. Video-Asset
tl Episode Title Episode Name – S2 – E1 – LF
cr Crediting Ping Identifier 4_00_99_V1_00000
rt This Value should be “video” and indicates that this is a DCR tag for video content. video
c10 Platform Indicator plt,DSK or plt,MBL
c13 This value should contain the appid of the application. asid,XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX
c51 Ad Duration adl,88
c52 Ad Count noad,1

Note: If this ping fails to fire, it may be caused by not passing the setPlayheadPosition API call as expected. The instruction as well as examples can be found in the Developer’s Guide.

Step 9: 5min Duration Ping

View all channels for 5 minutes to ensure all channels fire a duration ping.

Step 10: Pending Duration Ping

Play a stream and move the app to the background. A pending duration ping should fire; crediting the appropriate number of minutes viewed from last ping (i.e. 4_00_99_D1_11100). No other pings should fire after it has been moved to the background. In case SDK does not get a chance to send out the ping while going to background, SDK will send the pending ping on next re-launch.

Step 11: Pending Duration Pings cont.

The same action will occur with any interruption to the stream’s playback (e.g., alarm, incoming call, etc.).

Step 12: Opt-Out Implementation

Test the Opt-Out implementation in four steps.

  • Complete an opt-out in the app through the Nielsen opt-out webview.
  • User opt-out, a goodbye ping is fired off to the Nielsen server. Example Goodbye Ping:

http://secure-dcr.imrworldwide.com/cgi-bin/cfg?cfgv=200&longitude=&latitude=&apid=&apv=01.00.00&apn=Nielsen%2520sample&sdkv=aa.4.0.0&bldv=aa.4.0.0.4&nuid=00b5926fea1807638ebfe6f04af6a455c5d9b2a1ed3e39f550f44daa39d0886d&osver=ANDROID.4.4.4&devtypid=samsung-SAMSUNG-SM-N910A&devid=42ec6a26b000ccd34015ba8625ee29cd283190a8c00f1622f356e900bb5b2a23&enc=true&tz=-14400&fmt=json&adf=&uoo=true&sfcode=dcr&ccode=&dma=539&rnd=1434632964945

  • Watch any content (static or video) for at least three minutes. No pings will be rendered.
  • Opt back in, a hello ping is fired off to the Nielsen server. Example Hello Ping:

http://secure-dcr.imrworldwide.com/cgi-bin/cfg?cfgv=200&longitude=-82.65&latitude=28.05&apid=&apv=01.00.00&apn=Nielsen%2520sample&sdkv=aa.4.0.0&bldv=aa.4.0.0.4&nuid=00b5926fea1807638ebfe6f04af6a455c5d9b2a1ed3e39f550f44daa39d0886d&osver=ANDROID.4.4.4&devtypid=samsung-SAMSUNG-SM-N910A&devid=42ec6a26b000ccd34015ba8625ee29cd283190a8c00f1622f356e900bb5b2a23&enc=true&tz=-14400&fmt=json&adf=&uoo=false&sfcode=dcr&ccode=&dma=539&rnd=1434633027479

  • Watch any video content for at least three minutes and V/D pings – view and duration pings will be visible.