Package 

Class PersistentAdTracker

  • 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.

    • Constructor Detail

    • 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 ID
        cliUbid - Client-side user identifier
        position - 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

      • 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