SRGSSR / pillarbox-documentation

Technical cross-platform documentation for Pillarbox
3 stars 0 forks source link

comScore analytics open questions #25

Closed defagos closed 12 months ago

defagos commented 1 year ago

As a Pillarbox developer I need to have some comScore-related questions answered so that I can provide a compliant implementation.

Acceptance criteria

Tasks

General questions

  1. βœ… 🍎 What are the exact consequences if AdSupport.framework is not linked? How is privacy affected if we link against it?
  2. βœ… 🍎 Can you confirm that no events are sent if the device is offline? Is there a way to disable this behavior for test purposes?

Page view questions

  1. βœ… Do we still need special character formatting? The web portal does not apply these formatting rules anymore. Most precisely, if the answer is (at least partially) yes:
    • Should we use lowercase only?
    • Is special character replacement required?
    • Are requirements described in comScore integration guide, section 2.4, sufficient, and actually what we need to implement? (i.e. use ns_category and provide just a name, not a full path built client-side)
  2. βœ… Do we need to be able to send arbitrary labels in page view events? Or should we restrict to only those mentioned in specifications we have?
  3. βœ… Can / should we count again a view when it is again revealed by returning from a view pushed after it?
  4. βœ… How should screens arranged in a split view be measured? Are two page views acceptable or should we ensure only the parent screen is measured?
  5. βœ… What about page views in background for a CarPlay / Android Auto experience?
  6. βœ… Is it ok if we simply provide the page title in c8?

Streaming questions

  1. βœ… Is it correct that this buffer / seek start / stop events are important to ensure that the comScore state machine has correct behaviors (e.g. no heartbeats when the player is stuck buffering)? Official documentation never mentions it.
  2. βœ… When should a user experience be reported? What does user experience exactly mean? What are the recommendations? (e.g. should a UX be reported if playback has been paused but can be resumed?). Are calls to notifyUxActive and notifyUxInactive reference counted?
  3. βœ… Should we still use a threshold for the DVR timeshift value we send, below which the value is rounded to 0? If yes to what purpose? Does it make internal calculations better or worse somehow?
  4. βœ… How is the DVR live edge offset ns_st_ldo taken into account in measurements? Is there a problem if DVR playback starts at the live edge with a non-zero value?
  5. βœ… 🍎 Can you confirm that no events are sent if a play is followed by an end less than ~5 afterwards? Is there a way to reduce this value for test purposes?
  6. βœ… What should we do for video in background? Can we still measure it? It is namely difficult to detect whether the video is playing in the foreground with an attached view or not, so could we just track video in general without any problems?

Resources

Some resources might be outdated:

defagos commented 1 year ago

General questions

Question 1

🍎 What are the exact consequences if AdSupport.framework is not linked? How is privacy affected if we link against it?

comScore collects the IDFA, otherwise only the IDFV. The IDFA is not used to track the user between different vendors.

Question 2

🍎 Can you confirm that no events are sent if the device is offline? Is there a way to disable this behavior for test purposes?

Not possible at the moment. The SDK will buffer the events that could not be sent.

Page view questions

Question 1

Do we still need special character formatting? The web portal does not apply these formatting rules anymore. Most precisely, if the answer is (at least partially) yes:

  • Should we use lowercase only?
  • Is special character replacement required?
  • Are requirements described in comScore integration guide, section 2.4, sufficient, and actually what we need to implement? (i.e. use ns_category and provide just a name, not a full path built client-side)

There are implementation guides that we will receive (guide and intake form). The GD should have this documentation. No special handling or encoding should be required for special characters, the SDK takes care of that.

Question 2

Do we need to be able to send arbitrary labels in page view events? Or should we restrict to only those mentioned in specifications we have?

The expected labels are provided in the specification, other labels would be ignored anyway, so no arbitrary labels needed anymore.

Question 3

Can / should we count again a view when it is again revealed by returning from a view pushed after it?

For apps what Mediapulse measures is foreground time. This means not every page view is actually needed to get correct measurements for Mediapulse. A single page view at the beginning would suffice but Mediapulse observed that data is more accurate if we record each and every page view following user interaction. So more is better.

Question 4

How should screens arranged in a split view be measured? Are two page views acceptable or should we ensure only the parent screen is measured?

In a single app a split screen should not be a problem since it should not affect the foreground time. So measuring two page views is not an issue.

Question 5

What about page views in background for a CarPlay / Android Auto experience?

From a regulatory perspective we are allowed to measure the app when in foreground. It would in fact be better to not track a car UX from a comScore perspective.

Question 6

Is it ok if we simply provide the page title in c8?

c8 is fine.

Streaming questions

Question 1

Is it correct that this buffer / seek start / stop events are important to ensure that the comScore state machine has correct behaviors (e.g. no heartbeats when the player is stuck buffering)? Official documentation never mentions it.

Yes, but also for heartbeats. There are effects in internal state, time measurements.

Question 2

When should a user experience be reported? What does user experience exactly mean? What are the recommendations? (e.g. should a UX be reported if playback has been paused but can be resumed?). Are calls to notifyUxActive and notifyUxInactive reference counted?

We should not use these methods in Mediapulse context. Useful only for app background usage which Mediapulse is not interested in.

Question 3

Should we still use a threshold for the DVR timeshift value we send, below which the value is rounded to 0? If yes to what purpose? Does it make internal calculations better or worse somehow?

If we are able to provide accurate positions near the live edge then yes, no rounding is needed.

Question 4

How is the DVR live edge offset ns_st_ldo taken into account in measurements? Is there a problem if DVR playback starts at the live edge with a non-zero value?

Kantar is doing timestamp matching based on the live offset to find which content was played.

Question 5

🍎 Can you confirm that no events are sent if a play is followed by an end less than ~5 afterwards? Is there a way to reduce this value for test purposes?

Probably within the 5 seconds after SDK initialization, not after play.

Question 6

What should we do for video in background? Can we still measure it? It is namely difficult to detect whether the video is playing in the foreground with an attached view or not, so could we just track video in general without any problems?

See remark below: A video should not be tracked if < 50% visible. Depending on the platform we can partially implement this behavior but it is likely we cannot cover all cases (e.g. PiP), see https://github.com/SRGSSR/pillarbox-apple/issues/447.

Additional remarks

defagos commented 12 months ago

We received access to a documentation SharePoint with several documents about Mediapulse integration.

defagos commented 12 months ago

All questions answered and dedicated tasks created. Done.