Digital Measurement Testing
From Engineering Client Portal
Monitoring Tools
HTTP traffic-monitoring tool, such as Charles or Fiddler are required.
- Charles: http://www.charlesproxy.com
- Fiddler: http://www.telerik.com/fiddler
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.
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
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
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 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
- 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
- Watch any video content for at least three minutes and V/D pings – view and duration pings will be visible.