Defines an interface for a class that tracks video content progress and
exposes a key value observable property |currentTime|.
The SDK provides an implementation for tracking AVPlayer-based playback
in the IMAAVPlayerContentPlayhead.
Publishers can supply their own implementation by implementing this
interface and this way support any other video playback implementation
they might have.
[[["Easy to understand","easyToUnderstand","thumb-up"],["Solved my problem","solvedMyProblem","thumb-up"],["Other","otherUp","thumb-up"]],[["Missing the information I need","missingTheInformationINeed","thumb-down"],["Too complicated / too many steps","tooComplicatedTooManySteps","thumb-down"],["Out of date","outOfDate","thumb-down"],["Samples / code issue","samplesCodeIssue","thumb-down"],["Other","otherDown","thumb-down"]],["Last updated 2025-08-20 UTC."],[[["\u003cp\u003eThis documentation outlines the various protocols available globally for the IMA SDK on iOS.\u003c/p\u003e\n"],["\u003cp\u003eThese protocols define communication interfaces for ad playback, loading, and management.\u003c/p\u003e\n"],["\u003cp\u003eDevelopers can utilize these protocols to integrate and customize ad experiences in their apps.\u003c/p\u003e\n"],["\u003cp\u003eKey protocols include \u003ccode\u003eIMAAdsLoaderDelegate\u003c/code\u003e, \u003ccode\u003eIMAAdsManagerDelegate\u003c/code\u003e, and \u003ccode\u003eIMAVideoDisplayDelegate\u003c/code\u003e, among others.\u003c/p\u003e\n"],["\u003cp\u003eEach protocol is detailed with its purpose, declaration in Swift and Objective-C, and relevant functionalities.\u003c/p\u003e\n"]]],["The core content details globally available protocols for ad management and video playback. Key protocols include: `IMAAVPlayerVideoDisplayDelegate` for callbacks, `IMAAdPlaybackInfo` for ad player properties, `IMAAdsLoaderDelegate` and `IMAAdsManagerDelegate` for state changes, `IMALinkOpenerDelegate` for link status, and `IMACompanionDelegate` for companion ad events. Additional protocols manage video progress (`IMAContentPlayhead`), secure signals (`IMASecureSignalsAdapter`), stream management (`IMAStreamManagerDelegate`), and video display (`IMAVideoDisplayDelegate` and `IMAVideoDisplay`).\n"],null,["# GoogleInteractiveMediaAds Framework Reference\n\nProtocols\n=========\n\nThe following protocols are available globally.\n- `\n ``\n ``\n `\n\n ### [IMAAVPlayerVideoDisplayDelegate](/ad-manager/dynamic-ad-insertion/sdk/ios/reference/Protocols/IMAAVPlayerVideoDisplayDelegate)\n\n `\n ` \n A callback protocol for IMAAVPlayerVideoDisplayDelegate. \n\n #### Declaration\n\n Swift \n\n protocol IMAAVPlayerVideoDisplayDelegate : NSObjectProtocol\n\n Objective-C \n\n @protocol IMAAVPlayerVideoDisplayDelegate \u003cNSObject\u003e\n\n- `\n ``\n ``\n `\n\n ### [IMAAdPlaybackInfo](/ad-manager/dynamic-ad-insertion/sdk/ios/reference/Protocols/IMAAdPlaybackInfo)\n\n `\n ` \n Groups various properties of the ad player. \n\n #### Declaration\n\n Swift \n\n protocol IMAAdPlaybackInfo : NSObjectProtocol\n\n Objective-C \n\n @protocol IMAAdPlaybackInfo \u003cNSObject\u003e\n\n[IMAAdsLoaderDelegate\n--------------------](#/IMAAdsLoaderDelegate)\n\n- `\n ``\n ``\n `\n\n ### [IMAAdsLoaderDelegate](/ad-manager/dynamic-ad-insertion/sdk/ios/reference/Protocols/IMAAdsLoaderDelegate)\n\n `\n ` \n Delegate object that receives state change callbacks from IMAAdsLoader. \n\n #### Declaration\n\n Swift \n\n protocol IMAAdsLoaderDelegate\n\n Objective-C \n\n @protocol IMAAdsLoaderDelegate\n\n[IMAAdsManagerDelegate\n---------------------](#/IMAAdsManagerDelegate)\n\n- `\n ``\n ``\n `\n\n ### [IMAAdsManagerDelegate](/ad-manager/dynamic-ad-insertion/sdk/ios/reference/Protocols/IMAAdsManagerDelegate)\n\n `\n ` \n A callback protocol for IMAAdsManager. \n\n #### Declaration\n\n Swift \n\n protocol IMAAdsManagerDelegate\n\n Objective-C \n\n @protocol IMAAdsManagerDelegate\n\n[IMALinkOpenerDelegate\n---------------------](#/IMALinkOpenerDelegate)\n\n- `\n ``\n ``\n `\n\n ### [IMALinkOpenerDelegate](/ad-manager/dynamic-ad-insertion/sdk/ios/reference/Protocols/IMALinkOpenerDelegate)\n\n `\n ` \n Signals that a link has been opened/closed.\n For an external app (Mobile Safari/App deep link), the delegate is only notified\n before opening. \n\n #### Declaration\n\n Swift \n\n protocol IMALinkOpenerDelegate : NSObjectProtocol\n\n Objective-C \n\n @protocol IMALinkOpenerDelegate \u003cNSObject\u003e\n\n[IMACompanionDelegate\n--------------------](#/IMACompanionDelegate)\n\n- `\n ``\n ``\n `\n\n ### [IMACompanionDelegate](/ad-manager/dynamic-ad-insertion/sdk/ios/reference/Protocols/IMACompanionDelegate)\n\n `\n ` \n Delegate to receive events from the companion ad slot. \n\n #### Declaration\n\n Swift \n\n protocol IMACompanionDelegate : NSObjectProtocol\n\n Objective-C \n\n @protocol IMACompanionDelegate \u003cNSObject\u003e\n\n- `\n ``\n ``\n `\n\n ### [IMAContentPlayhead](/ad-manager/dynamic-ad-insertion/sdk/ios/reference/Protocols/IMAContentPlayhead)\n\n `\n ` \n Defines an interface for a class that tracks video content progress and\n exposes a key value observable property \\|currentTime\\|.\n The SDK provides an implementation for tracking AVPlayer-based playback\n in the IMAAVPlayerContentPlayhead.\n Publishers can supply their own implementation by implementing this\n interface and this way support any other video playback implementation\n they might have. \n\n #### Declaration\n\n Swift \n\n protocol IMAContentPlayhead\n\n Objective-C \n\n @protocol IMAContentPlayhead\n\n- `\n ``\n ``\n `\n\n ### [IMASecureSignalsAdapter](/ad-manager/dynamic-ad-insertion/sdk/ios/reference/Protocols/IMASecureSignalsAdapter)\n\n `\n ` \n Adapter that provides secure signal(3rd party signal only) to the IMA SDK to be included in an\n - auction. \n\n #### Declaration\n\n Swift \n\n protocol IMASecureSignalsAdapter : NSObjectProtocol\n\n Objective-C \n\n @protocol IMASecureSignalsAdapter \u003cNSObject\u003e\n\n[IMAStreamManagerDelegate\n------------------------](#/IMAStreamManagerDelegate)\n\n- `\n ``\n ``\n `\n\n ### [IMAStreamManagerDelegate](/ad-manager/dynamic-ad-insertion/sdk/ios/reference/Protocols/IMAStreamManagerDelegate)\n\n `\n ` \n A callback protocol for IMAStreamManager. \n\n #### Declaration\n\n Swift \n\n protocol IMAStreamManagerDelegate\n\n Objective-C \n\n @protocol IMAStreamManagerDelegate\n\n- `\n ``\n ``\n `\n\n ### [IMAVideoDisplayDelegate](/ad-manager/dynamic-ad-insertion/sdk/ios/reference/Protocols/IMAVideoDisplayDelegate)\n\n `\n ` \n Delegate object that receives state change callbacks from IMAVideoDisplay. \n\n #### Declaration\n\n Swift \n\n protocol IMAVideoDisplayDelegate : NSObjectProtocol\n\n Objective-C \n\n @protocol IMAVideoDisplayDelegate \u003cNSObject\u003e\n\n- `\n ``\n ``\n `\n\n ### [IMAVideoDisplay](/ad-manager/dynamic-ad-insertion/sdk/ios/reference/Protocols/IMAVideoDisplay)\n\n `\n ` \n Declares a simple video display class used for ad playback. \n\n #### Declaration\n\n Swift \n\n protocol IMAVideoDisplay : /ad-manager/dynamic-ad-insertion/sdk/ios/reference/Protocols/IMAAdPlaybackInfo\n\n Objective-C \n\n @protocol IMAVideoDisplay \u003c/ad-manager/dynamic-ad-insertion/sdk/ios/reference/Protocols/IMAAdPlaybackInfo\u003e"]]