-
Notifications
You must be signed in to change notification settings - Fork 423
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
DuckPlayer Launch Experiment for iOS #3328
Conversation
@@ -110,8 +123,9 @@ final class DuckPlayer: DuckPlayerProtocol { | |||
static let featureNameKey = "featureName" | |||
} | |||
|
|||
private(set) var settings: DuckPlayerSettingsProtocol |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Renamed the protocol to DuckPlayerSettings
, which makes more sense
UserValues( | ||
duckPlayerMode: settings.mode, | ||
let experiment = DuckPlayerLaunchExperiment() | ||
let isEnabled = experiment.isEnrolled && experiment.isExperimentCohort && featureFlagger.isFeatureOn(.duckPlayer) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
These values are the ones passed to the FE, so account for experiment group and feature flag
let currentDate = dateProvider.currentDate | ||
let calendar = Calendar.current | ||
let dayDifference = calendar.dateComponents([.day], from: enrollmentDate, to: currentDate).day ?? 0 | ||
let weekDifference = (dayDifference / 7) + 1 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Week "0" is not a thing. We expect it to be 1 or 2, but Day "0" is OK
|
||
|
||
// Handle custom events | ||
func handleEvent(event: DuckPlayerNavigationEvent, url: URL?, navigationAction: WKNavigationAction?) { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The idea here is to handle 'Custom' events that are unrelated to DuckPlayer as a feature but not with presentation.-
@@ -175,7 +175,6 @@ extension MainViewController { | |||
|
|||
private func fireBrokenSiteReportShown() { | |||
let parameters = [ | |||
PrivacyDashboardEvents.Parameters.variant: PixelExperiment.privacyDashboardVariant.rawValue, |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
There was a bunch of old PixelExperiment stuff that was not cleaned up before 🤷
# Conflicts: # Core/UserDefaultsPropertyWrapper.swift
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Code is OK for experiment.
# By Christopher Brind (4) and others # Via Alessandro Boron (1) and others * main: (27 commits) Bump C-S-S to 6.14.1 (#3331) DuckPlayer Launch Experiment for iOS (#3328) defer loading the tab switcher button until view did load (#3326) Release 7.136.0-3 (#3324) Release PR: Check for the negative attribution case (#3311) fix tab switcher crashes (speculative fix) (#3319) Onboarding highlights feature flag setup (#3308) Release 7.136.0-2 (#3320) Attempt to fix dissapearing privacy icon (#3317) Fix bookmarks toolbar behaviour with Sync Promo on iOS 15 (#3313) Bump BSK with C-S-S to 6.14.0 (#3314) ensure no atb or app version sent with pixel (#3315) Fix #3298: Add support for Xcode 16 (#3299) Fix Keychain Debug view controller segue (#3310) Release 7.136.0-1 (#3309) Fix an issue that causes the fire dialog to show multiple times for the same website after dismissing it (#3305) [DuckPlayer] 28. Open in Youtube -> Youtube App (#3290) usage segmentation (#3263) Fix wrong URL displayed for auth dialog (#3307) iOS Integration of BSK Onboarding (#3282) ... # Conflicts: # DuckDuckGo.xcodeproj/project.pbxproj # DuckDuckGo.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved
Task/Issue URL: https://app.asana.com/0/1204099484721401/1208091265812750/f
Tech Design URL: https://app.asana.com/0/1204099484721401/1207989846862252/f
Description:
We're running a launch experiment to try measure retention impact with DuckPlayer launch. This is a pixel experiment, consisting in a few pixels sent in these scenarios:
Steps to test this PR:
Code includes tests covering the correct pixel firing on different dates/weeks, etc.
Setup
pr-releases/release-993
https://www.jsonblob.com/api/1276215786342309888
duckplayer.experiment
(No category)Control Group
control
(let cohort: Cohort = .control
)control
, state isdisabled
and date matches today's dateyoutube.page
pixel referer isyoutube
Example Pixels:
duckplayer.experiment.youtube.page.view
pixel is fired againblack sabbath
using the URL BarExample pixels
black sabbath war pigs
and confirm only one pixel is fired in the consolePixel fired duckplayer.experiment.search ["day": "0", "variant": "control", "enrollment": "20240905"]
serp
Example Pixel
number of the beast
experiment.search
pixel is fired and referrer isother
Example Pixel
Experiment Group
experiment
(let cohort: Cohort = .experiment
)Example Pixel for experimen view
Other