Add EventTrackingBehavior for GDPR-compliant event control#422
Merged
Conversation
Introduces an `EventTrackingBehavior` enum (`ALL`, `SUPERWALL_ONLY`, `NONE`) and a `SuperwallOptions.eventTrackingBehavior` property, plus a runtime `Superwall.instance.eventTrackingBehavior` setter. Deprecates `isExternalDataCollectionEnabled`, mapping `false` to `SUPERWALL_ONLY` (preserving `NONE`) and `true` to `ALL`. - EventsQueue caches the behavior, clears its buffer when opting out, and discards events on flush when set to `NONE`. - The runtime setter updates the queue, forwards the behavior to the paywall web view, and skips the config-attributes event when opting out to `NONE`. - The web paywall is informed of the behavior on webview load via an `event_tracking_behavior` message. - The config payload emits both `event_tracking_behavior` and the legacy `is_external_data_collection_enabled` boolean. Mirrors the iOS SDK change (Superwall-iOS #479). Android has no MMP install-attribution, so that part of the iOS change is out of scope. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Changes in this pull request
Ports the iOS
EventTrackingBehaviorfeature (Superwall-iOS #479) to Android.Adds a three-way
EventTrackingBehaviorenum for controlling which events reach the Superwall servers, with both a configure-time option and a runtime setter:EventTrackingBehaviorenum:ALL(default),SUPERWALL_ONLY,NONE. Wire values ("all","superwallOnly","none") match iOS so the same web paywall handles them.SuperwallOptions.eventTrackingBehavior— set the initial behavior when configuring.Superwall.instance.eventTrackingBehavior— change it at runtime (e.g. after a GDPR consent flow). The setter updates the events queue, forwards the behavior to the paywall web view, and skips the config-attributes event when opting out toNONE.SuperwallOptions.isExternalDataCollectionEnabled— setting it tofalsemaps toSUPERWALL_ONLY(preservingNONE);truemaps toALL. The getter reflectseventTrackingBehavior == ALL.EventsQueuecaches the behavior, clears its buffer when opting out, gates enqueues (SUPERWALL_ONLYsuppresses trigger fires, attribute updates, and user-initiated tracking), and discards events on flush when set toNONE.event_tracking_behaviormessage.event_tracking_behaviorstring and the legacyis_external_data_collection_enabledboolean (true only forALL), so backends still reading the old field don't treat opted-out clients as the default.Checklist
CHANGELOG.mdfor any breaking changes, enhancements, or bug fixes.ktlintin the main directory and fixed any issues.🤖 Generated with Claude Code