-
- All Implemented Interfaces:
-
com.ai.osmos.tracking.tracker.AdTrackerInterface
public final class PersistentAdTracker extends BaseAdTracker
Enhanced Ad Tracker that provides persistent impression tracking using WorkManager.
This class acts as a drop-in replacement for AdTracker, adding reliability features:
Persistent tracking across app restarts
Network-aware retry mechanisms
Battery-optimized background execution
Graceful fallback when WorkManager is unavailable
Now extends BaseAdTracker to eliminate code duplication.
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description public classPersistentAdTracker.Companion
-
Constructor Summary
Constructors Constructor Description PersistentAdTracker(Context context, AdTracker fallbackTracker, Config config)
-
Method Summary
Modifier and Type Method Description UnittrackImpression(String uclid, String cliUbid, Integer position)Tracks an ad impression with persistent retry capability. final UnittrackImpression(String uclid, String cliUbid)Legacy method for backward compatibility with existing AdTracker interface. UnittrackAdClick(String uclid, String cliUbid)Tracks when the user clicks on an ad with persistent retry capability. UnitvideoActionClick(String uclid, String cliUbid, VideoActionType actionType, Float videoViewSec)Tracks video-related actions with persistent retry capability. UnitvideoProgressEvent(String uclid, String cliUbid, Float videoViewSec, Float videoDurationSec)Tracks video progress events with persistent retry capability. UnitsetErrorCallback(ErrorCallback callback)Sets error callback on both this tracker and the fallback tracker. final UnitcancelAllPendingWork()Cancels all pending tracking work. final UnitcancelAllPendingImpressions()Cancels all pending impression tracking work. final UnitgetPendingTrackingCount(Function1<Integer, Unit> callback)Gets the count of all pending tracking jobs. final UnitgetPendingImpressionCount(Function1<Integer, Unit> callback)Gets the count of pending impression tracking jobs. -
-
Method Detail
-
trackImpression
Unit trackImpression(String uclid, String cliUbid, Integer position)
Tracks an ad impression with persistent retry capability.
This method provides enhanced reliability compared to immediate tracking:
Uses WorkManager for background persistence if available
Falls back to immediate tracking if WorkManager is not available
- Parameters:
uclid- Unique creative IDcliUbid- Client-side user identifierposition- Ad position in the view (default: 1)
-
trackImpression
final Unit trackImpression(String uclid, String cliUbid)
Legacy method for backward compatibility with existing AdTracker interface. Maintains the same signature as the original AdTracker.trackImpression method.
-
trackAdClick
Unit trackAdClick(String uclid, String cliUbid)
Tracks when the user clicks on an ad with persistent retry capability.
This method provides enhanced reliability compared to immediate tracking:
Uses WorkManager for background persistence if available
Falls back to immediate tracking if WorkManager is not available
Ensures ad clicks are tracked even during network failures
-
videoActionClick
Unit videoActionClick(String uclid, String cliUbid, VideoActionType actionType, Float videoViewSec)
Tracks video-related actions with persistent retry capability.
This method provides enhanced reliability for video action tracking:
Uses WorkManager for background persistence if available
Falls back to immediate tracking if WorkManager is not available
Ensures video actions (mute/unmute, fullscreen, etc.) are tracked reliably
-
videoProgressEvent
Unit videoProgressEvent(String uclid, String cliUbid, Float videoViewSec, Float videoDurationSec)
Tracks video progress events with persistent retry capability.
This method provides enhanced reliability for video progress tracking:
Uses WorkManager for background persistence if available
Falls back to immediate tracking if WorkManager is not available
Ensures video progress events are tracked reliably for analytics
-
setErrorCallback
Unit setErrorCallback(ErrorCallback callback)
Sets error callback on both this tracker and the fallback tracker.
-
cancelAllPendingWork
final Unit cancelAllPendingWork()
Cancels all pending tracking work.
This method is useful for:
App shutdown cleanup
Configuration changes that require work cancellation
Testing scenarios
-
cancelAllPendingImpressions
final Unit cancelAllPendingImpressions()
Cancels all pending impression tracking work.
This method is useful for:
App shutdown cleanup
Configuration changes that require work cancellation
Testing scenarios
-
getPendingTrackingCount
final Unit getPendingTrackingCount(Function1<Integer, Unit> callback)
Gets the count of all pending tracking jobs.
This method provides insight into the work queue status and can be used for:
Monitoring and debugging
Analytics and reporting
Performance optimization
- Parameters:
callback- Called with the count of pending jobs (impressions, clicks, video actions, video progress)
-
getPendingImpressionCount
final Unit getPendingImpressionCount(Function1<Integer, Unit> callback)
Gets the count of pending impression tracking jobs.
This method provides insight into the work queue status and can be used for:
Monitoring and debugging
Analytics and reporting
Performance optimization
- Parameters:
callback- Called with the count of pending jobs
-
-
-
-