Skip to content

Commit fbc66ac

Browse files
Kola EmiolaKola Emiola
Kola Emiola
authored and
Kola Emiola
committed
DAND-41-Fix: modify ComScoreIntegration.java for v6
1 parent d16ba1b commit fbc66ac

File tree

1 file changed

+87
-67
lines changed

1 file changed

+87
-67
lines changed

src/main/java/com/segment/analytics/android/integrations/comscore/ComScoreIntegration.java

Lines changed: 87 additions & 67 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
package com.segment.analytics.android.integrations.comscore;
22

33
import static com.segment.analytics.internal.Utils.isNullOrEmpty;
4-
4+
import com.comscore.streaming.AdvertisementMetadata;
5+
import com.comscore.streaming.ContentMetadata;
56
import com.comscore.streaming.StreamingAnalytics;
6-
77
import com.segment.analytics.Properties;
88
import com.segment.analytics.ValueMap;
99
import com.segment.analytics.integrations.IdentifyPayload;
@@ -20,17 +20,17 @@
2020
public class ComScoreIntegration extends Integration<Void> {
2121
@SuppressWarnings("WeakerAccess")
2222
public static final Factory FACTORY =
23-
new Factory() {
24-
@Override
25-
public Integration<?> create(ValueMap settings, com.segment.analytics.Analytics analytics) {
26-
return new ComScoreIntegration(analytics, settings);
27-
}
28-
29-
@Override
30-
public String key() {
31-
return COMSCORE_KEY;
32-
}
33-
};
23+
new Factory() {
24+
@Override
25+
public Integration<?> create(ValueMap settings, com.segment.analytics.Analytics analytics) {
26+
return new ComScoreIntegration(analytics, settings);
27+
}
28+
29+
@Override
30+
public String key() {
31+
return COMSCORE_KEY;
32+
}
33+
};
3434

3535
private final static String COMSCORE_KEY = "comScore";
3636
private final static String PARTNER_ID = "24186693";
@@ -46,26 +46,27 @@ public String key() {
4646
}
4747

4848
ComScoreIntegration(
49-
com.segment.analytics.Analytics analytics,
50-
ValueMap destinationSettings,
51-
ComScoreAnalytics comScoreAnalytics) {
49+
com.segment.analytics.Analytics analytics,
50+
ValueMap destinationSettings,
51+
ComScoreAnalytics comScoreAnalytics) {
5252

5353
this.comScoreAnalytics = comScoreAnalytics;
5454
this.settings = new Settings(destinationSettings);
5555
this.logger = analytics.logger(COMSCORE_KEY);
5656

5757
comScoreAnalytics.start(analytics.getApplication(), PARTNER_ID, settings.toPublisherConfiguration());
58+
settings.analyticsConfig();
5859
}
5960

6061
/**
6162
* Store a value for {@param k} in {@param asset} by checking {@param comScoreOptions} first and
6263
* falling back to {@param properties}. Uses {@code "*null"} it not found in either.
6364
*/
6465
private void setNullIfNotProvided(
65-
Map<String, String> asset,
66-
Map<String, ?> comScoreOptions,
67-
Map<String, ?> stringProperties,
68-
String key) {
66+
Map<String, String> asset,
67+
Map<String, ?> comScoreOptions,
68+
Map<String, ?> stringProperties,
69+
String key) {
6970
String option = getStringOrDefaultValue(comScoreOptions, key, null);
7071
if (option != null) {
7172
asset.put(key, option);
@@ -81,7 +82,7 @@ private void setNullIfNotProvided(
8182
}
8283

8384
private Map<String, String> mapSpecialKeys(
84-
Properties properties, Map<String, String> mapper) {
85+
Properties properties, Map<String, String> mapper) {
8586
Map<String, String> asset = new LinkedHashMap<>(mapper.size());
8687

8788
// Map special keys and preserve only the special keys.
@@ -98,9 +99,9 @@ private Map<String, String> mapSpecialKeys(
9899
}
99100

100101
private Map<String, String> buildPlaybackAsset(
101-
Properties properties,
102-
Map<String, ?> options,
103-
Map<String, String> mapper) {
102+
Properties properties,
103+
Map<String, ?> options,
104+
Map<String, String> mapper) {
104105

105106
Map<String, String> asset = mapSpecialKeys(properties, mapper);
106107

@@ -118,9 +119,9 @@ private Map<String, String> buildPlaybackAsset(
118119
}
119120

120121
private Map<String, String> buildContentAsset(
121-
Properties properties,
122-
Map<String, ?> options,
123-
Map<String, String> mapper) {
122+
Properties properties,
123+
Map<String, ?> options,
124+
Map<String, String> mapper) {
124125

125126
Map<String, String> asset = mapSpecialKeys(properties, mapper);
126127

@@ -157,9 +158,9 @@ private Map<String, String> buildContentAsset(
157158
}
158159

159160
private Map<String, String> buildAdAsset(
160-
Properties properties,
161-
Map<String, ?> options,
162-
Map<String, String> mapper) {
161+
Properties properties,
162+
Map<String, ?> options,
163+
Map<String, String> mapper) {
163164

164165
Map<String, String> asset = mapSpecialKeys(properties, mapper);
165166

@@ -185,6 +186,7 @@ private Map<String, String> buildAdAsset(
185186
default:
186187
asset.put("ns_st_ad", "1");
187188
}
189+
188190
setNullIfNotProvided(asset, options, properties, "c3");
189191
setNullIfNotProvided(asset, options, properties, "c4");
190192
setNullIfNotProvided(asset, options, properties, "c6");
@@ -199,7 +201,7 @@ private Map<String, String> buildAdAsset(
199201
* have a String representation.
200202
*/
201203
private String getStringOrDefaultValue(
202-
Map<String, ?> m, String key, String defaultValue) {
204+
Map<String, ?> m, String key, String defaultValue) {
203205
Object value = m.get(key);
204206
if (value instanceof String) {
205207
return (String) value;
@@ -212,7 +214,7 @@ private String getStringOrDefaultValue(
212214
}
213215

214216
private void trackVideoPlayback(
215-
TrackPayload track, Properties properties, Map<String, Object> comScoreOptions) {
217+
TrackPayload track, Properties properties, Map<String, Object> comScoreOptions) {
216218
String name = track.event();
217219
long playbackPosition = properties.getLong("playbackPosition", 0);
218220

@@ -221,61 +223,66 @@ private void trackVideoPlayback(
221223
playbackMapper.put("sound", "ns_st_vo");
222224

223225
Map<String, String> playbackAsset =
224-
buildPlaybackAsset(properties, comScoreOptions, playbackMapper);
226+
buildPlaybackAsset(properties, comScoreOptions, playbackMapper);
225227

226228
if (name.equals("Video Playback Started")) {
227229
streamingAnalytics = comScoreAnalytics.createStreamingAnalytics();
228230
streamingAnalytics.createPlaybackSession();
229-
streamingAnalytics.setLabels(playbackAsset);
231+
streamingAnalytics.getConfiguration().addLabels(playbackAsset);
230232

231233
// The label ns_st_ci must be set through a setAsset call
232234
Map<String, String> contentIdMapper = new LinkedHashMap<>();
233235
contentIdMapper.put("assetId", "ns_st_ci");
234236

235237
Map<String, String> contentIdAsset = mapSpecialKeys(properties, contentIdMapper);
236-
streamingAnalytics.getPlaybackSession().setAsset(contentIdAsset);
238+
239+
streamingAnalytics.setMetadata(getContentMetadata(contentIdAsset));
237240
return;
238241
}
239242

240243
if (streamingAnalytics == null) {
241244
logger.verbose(
242-
"streamingAnalytics instance not initialized correctly. Please call Video Playback Started to initialize.");
245+
"streamingAnalytics instance not initialized correctly. Please call Video Playback Started to initialize.");
243246
return;
244247
}
245-
246-
streamingAnalytics.setLabels(playbackAsset);
248+
streamingAnalytics.getConfiguration().addLabels(playbackAsset);
247249

248250
switch (name) {
249251
case "Video Playback Paused":
250252
case "Video Playback Interrupted":
251-
streamingAnalytics.notifyPause(playbackPosition);
253+
streamingAnalytics.notifyPause();
252254
logger.verbose("streamingAnalytics.notifyPause(%s)", playbackPosition);
253255
break;
254256
case "Video Playback Buffer Started":
255-
streamingAnalytics.notifyBufferStart(playbackPosition);
257+
streamingAnalytics.startFromPosition(playbackPosition);
258+
streamingAnalytics.notifyBufferStart();
256259
logger.verbose("streamingAnalytics.notifyBufferStart(%s)", playbackPosition);
257260
break;
258261
case "Video Playback Buffer Completed":
259-
streamingAnalytics.notifyBufferStop(playbackPosition);
262+
streamingAnalytics.startFromPosition(playbackPosition);
263+
streamingAnalytics.notifyBufferStop();
260264
logger.verbose("streamingAnalytics.notifyBufferStop(%s)", playbackPosition);
261265
break;
262266
case "Video Playback Seek Started":
263-
streamingAnalytics.notifySeekStart(playbackPosition);
267+
streamingAnalytics.notifySeekStart();
264268
logger.verbose("streamingAnalytics.notifySeekStart(%s)", playbackPosition);
265269
break;
266270
case "Video Playback Seek Completed":
267-
streamingAnalytics.notifyPlay(playbackPosition);
271+
streamingAnalytics.startFromPosition(playbackPosition);
272+
streamingAnalytics.notifyPlay();
268273
logger.verbose("streamingAnalytics.notifyEnd(%s)", playbackPosition);
269274
break;
270275
case "Video Playback Resumed":
271-
streamingAnalytics.notifyPlay(playbackPosition);
276+
streamingAnalytics.startFromPosition(playbackPosition);
277+
streamingAnalytics.notifyPlay();
272278
logger.verbose("streamingAnalytics.notifyPlay(%s)", playbackPosition);
273279
break;
274280
}
275281
}
276282

283+
277284
private void trackVideoContent(
278-
TrackPayload track, Properties properties, Map<String, Object> comScoreOptions) {
285+
TrackPayload track, Properties properties, Map<String, Object> comScoreOptions) {
279286
String name = track.event();
280287
long playbackPosition = properties.getLong("playbackPosition", 0);
281288

@@ -291,19 +298,20 @@ private void trackVideoContent(
291298
contentMapper.put("podId", "ns_st_pn");
292299

293300
Map<String, String> contentAsset =
294-
buildContentAsset(properties, comScoreOptions, contentMapper);
301+
buildContentAsset(properties, comScoreOptions, contentMapper);
295302

296303
if (streamingAnalytics == null) {
297304
logger.verbose(
298-
"streamingAnalytics instance not initialized correctly. Please call Video Playback Started to initialize.");
305+
"streamingAnalytics instance not initialized correctly. Please call Video Playback Started to initialize.");
299306
return;
300307
}
301308

302309
switch (name) {
303310
case "Video Content Started":
304-
streamingAnalytics.getPlaybackSession().setAsset(contentAsset);
305-
logger.verbose("streamingAnalytics.getPlaybackSession().setAsset(%s)", contentAsset);
306-
streamingAnalytics.notifyPlay(playbackPosition);
311+
streamingAnalytics.setMetadata(getContentMetadata(contentAsset));
312+
logger.verbose("streamingAnalytics.setMetadata(%s)", contentAsset);
313+
streamingAnalytics.startFromPosition(playbackPosition);
314+
streamingAnalytics.notifyPlay();
307315
logger.verbose("streamingAnalytics.notifyPlay(%s)", playbackPosition);
308316
break;
309317

@@ -312,25 +320,25 @@ private void trackVideoContent(
312320
// we need to call setAsset with the content metadata. If ns_st_ad is not present, that means the last
313321
// observed event was related to content, in which case a setAsset call should not be made (because asset
314322
// did not change).
315-
if (streamingAnalytics.getPlaybackSession().getAsset().containsLabel("ns_st_ad")) {
316-
streamingAnalytics.getPlaybackSession().setAsset(contentAsset);
317-
logger.verbose("streamingAnalytics.getPlaybackSession().setAsset(%s)", contentAsset);
323+
if(streamingAnalytics.getConfiguration().containsLabel("ns_st_ad")) {
324+
streamingAnalytics.setMetadata(getContentMetadata(contentAsset));
325+
logger.verbose("streamingAnalytics.setMetadata(%s)", contentAsset);
318326
}
319327

320-
streamingAnalytics.notifyPlay(playbackPosition);
328+
streamingAnalytics.startFromPosition(playbackPosition);
329+
streamingAnalytics.notifyPlay();
321330
logger.verbose("streamingAnalytics.notifyEnd(%s)", playbackPosition);
322-
323331
break;
324332

325333
case "Video Content Completed":
326-
streamingAnalytics.notifyEnd(playbackPosition);
334+
streamingAnalytics.notifyEnd();
327335
logger.verbose("streamingAnalytics.notifyEnd(%s)", playbackPosition);
328336
break;
329337
}
330338
}
331339

332340
public void trackVideoAd(
333-
TrackPayload track, Properties properties, Map<String, Object> comScoreOptions) {
341+
TrackPayload track, Properties properties, Map<String, Object> comScoreOptions) {
334342
String name = track.event();
335343
long playbackPosition = properties.getLong("playbackPosition", 0);
336344

@@ -343,7 +351,7 @@ public void trackVideoAd(
343351

344352
if (streamingAnalytics == null) {
345353
logger.verbose(
346-
"streamingAnalytics instance not initialized correctly. Please call Video Playback Started to initialize.");
354+
"streamingAnalytics instance not initialized correctly. Please call Video Playback Started to initialize.");
347355
return;
348356
}
349357

@@ -352,29 +360,41 @@ public void trackVideoAd(
352360
// The ID for content is not available on Ad Start events, however it will be available on the current
353361
// StreamingAnalytics's asset. This is because ns_st_ci will have already been set on Content Started
354362
// calls (if this is a mid or post-roll), or on Video Playback Started (if this is a pre-roll).
355-
String contentId = streamingAnalytics.getPlaybackSession().getAsset().getLabel("ns_st_ci");
356-
363+
String contentId = streamingAnalytics.getConfiguration().getLabel("ns_st_ci");
357364
if (!isNullOrEmpty(contentId)) {
358365
adAsset.put("ns_st_ci", contentId);
359366
}
360367

361-
streamingAnalytics.getPlaybackSession().setAsset(adAsset);
362-
logger.verbose("streamingAnalytics.getPlaybackSession().setAsset(%s)", adAsset);
363-
streamingAnalytics.notifyPlay(playbackPosition);
368+
streamingAnalytics.setMetadata(getAdvertisementMetadata(adAsset));
369+
logger.verbose("streamingAnalytics.setMetadata(%s)", adAsset);
370+
streamingAnalytics.startFromPosition(playbackPosition);
371+
streamingAnalytics.notifyPlay();
364372
logger.verbose("streamingAnalytics.notifyPlay(%s)", playbackPosition);
365373
break;
366374

367375
case "Video Ad Playing":
368-
streamingAnalytics.notifyPlay(playbackPosition);
376+
streamingAnalytics.startFromPosition(playbackPosition);
377+
streamingAnalytics.notifyPlay();
369378
logger.verbose("streamingAnalytics.notifyPlay(%s)", playbackPosition);
370379
break;
371380

372381
case "Video Ad Completed":
373-
streamingAnalytics.notifyEnd(playbackPosition);
382+
streamingAnalytics.notifyEnd();
374383
logger.verbose("streamingAnalytics.notifyEnd(%s)", playbackPosition);
375384
break;
376385
}
377386
}
387+
private ContentMetadata getContentMetadata(Map<String, String> asset){
388+
return new ContentMetadata.Builder()
389+
.customLabels(asset)
390+
.build();
391+
}
392+
393+
private AdvertisementMetadata getAdvertisementMetadata(Map<String, String> adAsset){
394+
return new AdvertisementMetadata.Builder()
395+
.customLabels(adAsset)
396+
.build();
397+
}
378398

379399
@Override
380400
public void track(TrackPayload track) {
@@ -430,8 +450,8 @@ public void screen(ScreenPayload screen) {
430450
String name = screen.name();
431451
String category = screen.category();
432452
HashMap<String, String> properties =
433-
(HashMap<String, String>) //
434-
screen.properties().toStringMap();
453+
(HashMap<String, String>) //
454+
screen.properties().toStringMap();
435455
properties.put("name", name);
436456
properties.put("category", category);
437457
comScoreAnalytics.notifyViewEvent(properties);

0 commit comments

Comments
 (0)