Tells the receiver that it has been rendered in |view| with clickable asset views and
nonclickable asset views. viewController should be used to present modal views for the ad.
Tells the receiver that a user click is recorded on the asset named |assetName|. Full screen
actions should be presented from viewController. This method is called only if
-[GADMAdNetworkAdapter handlesUserClicks] returns NO.
Tells the receiver that it has untracked |view|. This method is called when the mediated native
ad is no longer rendered in the provided view and the delegate should stop tracking the view’s
impressions and clicks. The method may also be called with a nil view when the view in which the
mediated native ad has rendered is deallocated.
[[["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\u003e\u003ccode\u003eGADMediatedUnifiedNativeAd\u003c/code\u003e protocol provides methods for constructing native ads within mediation adapters.\u003c/p\u003e\n"],["\u003cp\u003eAdapters must return an object conforming to this protocol when serving native ad requests.\u003c/p\u003e\n"],["\u003cp\u003eIt includes properties for standard native ad elements like headlines, images, body text, icons, call-to-actions, and more.\u003c/p\u003e\n"],["\u003cp\u003eThe protocol also offers optional methods for handling ad rendering, impressions, clicks, and view tracking.\u003c/p\u003e\n"],["\u003cp\u003eDevelopers can access additional, custom assets via the \u003ccode\u003eextraAssets\u003c/code\u003e property.\u003c/p\u003e\n"]]],[],null,["# GoogleMobileAds Framework Reference\n\nGADMediatedUnifiedNativeAd\n==========================\n\n @protocol GADMediatedUnifiedNativeAd \u003cNSObject\u003e\n\nProvides methods used for constructing native ads. The adapter must return an object conforming\nto this protocol for native ad requests.\n- `\n ``\n ``\n `\n\n ### [headline](#/c:objc(pl)GADMediatedUnifiedNativeAd(py)headline)\n\n `\n ` \n Headline. \n\n #### Declaration\n\n Swift \n\n var headline: String? { get }\n\n Objective-C \n\n @property (nonatomic, copy, readonly, nullable) NSString *headline;\n\n- `\n ``\n ``\n `\n\n ### [images](#/c:objc(pl)GADMediatedUnifiedNativeAd(py)images)\n\n `\n ` \n Array of GADNativeAdImage objects. \n\n #### Declaration\n\n Swift \n\n var images: [NativeAdImage]? { get }\n\n Objective-C \n\n @property (nonatomic, readonly, nullable) NSArray\u003c../Classes/GADNativeAdImage.html *\u003e *images;\n\n- `\n ``\n ``\n `\n\n ### [body](#/c:objc(pl)GADMediatedUnifiedNativeAd(py)body)\n\n `\n ` \n Description. \n\n #### Declaration\n\n Swift \n\n var body: String? { get }\n\n Objective-C \n\n @property (nonatomic, copy, readonly, nullable) NSString *body;\n\n- `\n ``\n ``\n `\n\n ### [icon](#/c:objc(pl)GADMediatedUnifiedNativeAd(py)icon)\n\n `\n ` \n Icon image. \n\n #### Declaration\n\n Swift \n\n var icon: NativeAdImage? { get }\n\n Objective-C \n\n @property (nonatomic, readonly, nullable) ../Classes/GADNativeAdImage.html *icon;\n\n- `\n ``\n ``\n `\n\n ### [callToAction](#/c:objc(pl)GADMediatedUnifiedNativeAd(py)callToAction)\n\n `\n ` \n Text that encourages user to take some action with the ad. For example \"Install\". \n\n #### Declaration\n\n Swift \n\n var callToAction: String? { get }\n\n Objective-C \n\n @property (nonatomic, copy, readonly, nullable) NSString *callToAction;\n\n- `\n ``\n ``\n `\n\n ### [starRating](#/c:objc(pl)GADMediatedUnifiedNativeAd(py)starRating)\n\n `\n ` \n App store rating (0 to 5). \n\n #### Declaration\n\n Swift \n\n @NSCopying var starRating: NSDecimalNumber? { get }\n\n Objective-C \n\n @property (nonatomic, copy, readonly, nullable) NSDecimalNumber *starRating;\n\n- `\n ``\n ``\n `\n\n ### [store](#/c:objc(pl)GADMediatedUnifiedNativeAd(py)store)\n\n `\n ` \n The app store name. For example, \"App Store\". \n\n #### Declaration\n\n Swift \n\n var store: String? { get }\n\n Objective-C \n\n @property (nonatomic, copy, readonly, nullable) NSString *store;\n\n- `\n ``\n ``\n `\n\n ### [price](#/c:objc(pl)GADMediatedUnifiedNativeAd(py)price)\n\n `\n ` \n String representation of the app's price. \n\n #### Declaration\n\n Swift \n\n var price: String? { get }\n\n Objective-C \n\n @property (nonatomic, copy, readonly, nullable) NSString *price;\n\n- `\n ``\n ``\n `\n\n ### [advertiser](#/c:objc(pl)GADMediatedUnifiedNativeAd(py)advertiser)\n\n `\n ` \n Identifies the advertiser. For example, the advertiser's name or visible URL. \n\n #### Declaration\n\n Swift \n\n var advertiser: String? { get }\n\n Objective-C \n\n @property (nonatomic, copy, readonly, nullable) NSString *advertiser;\n\n- `\n ``\n ``\n `\n\n ### [extraAssets](#/c:objc(pl)GADMediatedUnifiedNativeAd(py)extraAssets)\n\n `\n ` \n Returns a dictionary of asset names and object pairs for assets that are not handled by\n properties of the GADMediatedUnifiedNativeAd. \n\n #### Declaration\n\n Swift \n\n var extraAssets: [String : Any]? { get }\n\n Objective-C \n\n @property (nonatomic, copy, readonly, nullable) NSDictionary\u003cNSString *, id\u003e *extraAssets;\n\n- `\n ``\n ``\n `\n\n ### [adChoicesView](#/c:objc(pl)GADMediatedUnifiedNativeAd(py)adChoicesView)\n\n `\n ` \n AdChoices view. \n\n #### Declaration\n\n Swift \n\n optional var adChoicesView: UIView? { get }\n\n Objective-C \n\n @optional\n @property (nonatomic, readonly, nullable) UIView *adChoicesView;\n\n- `\n ``\n ``\n `\n\n ### [mediaView](#/c:objc(pl)GADMediatedUnifiedNativeAd(py)mediaView)\n\n `\n ` \n Media view. \n\n #### Declaration\n\n Swift \n\n optional var mediaView: UIView? { get }\n\n Objective-C \n\n @optional\n @property (nonatomic, readonly, nullable) UIView *mediaView;\n\n- `\n ``\n ``\n `\n\n ### [hasVideoContent](#/c:objc(pl)GADMediatedUnifiedNativeAd(py)hasVideoContent)\n\n `\n ` \n Indicates whether the ad has video content. \n\n #### Declaration\n\n Swift \n\n optional var hasVideoContent: Bool { get }\n\n Objective-C \n\n @optional\n @property (nonatomic, readonly) BOOL hasVideoContent;\n\n- `\n ``\n ``\n `\n\n ### [mediaContentAspectRatio](#/c:objc(pl)GADMediatedUnifiedNativeAd(py)mediaContentAspectRatio)\n\n `\n ` \n Media content aspect ratio (width/height) or 0 if there's no media content. \n\n #### Declaration\n\n Swift \n\n optional var mediaContentAspectRatio: CGFloat { get }\n\n Objective-C \n\n @optional\n @property (nonatomic, readonly) CGFloat mediaContentAspectRatio;\n\n- `\n ``\n ``\n `\n\n ### [duration](#/c:objc(pl)GADMediatedUnifiedNativeAd(py)duration)\n\n `\n ` \n The video's duration in seconds or 0 if there's no video or the duration is unknown. \n\n #### Declaration\n\n Swift \n\n optional var duration: TimeInterval { get }\n\n Objective-C \n\n @optional\n @property (nonatomic, readonly) NSTimeInterval duration;\n\n- `\n ``\n ``\n `\n\n ### [currentTime](#/c:objc(pl)GADMediatedUnifiedNativeAd(py)currentTime)\n\n `\n ` \n The video's current playback time in seconds or 0 if there's no video or the current playback\n time is unknown. \n\n #### Declaration\n\n Swift \n\n optional var currentTime: TimeInterval { get }\n\n Objective-C \n\n @optional\n @property (nonatomic, readonly) NSTimeInterval currentTime;\n\n- `\n ``\n ``\n `\n\n ### [-didRenderInView:clickableAssetViews:nonclickableAssetViews:viewController:](#/c:objc(pl)GADMediatedUnifiedNativeAd(im)didRenderInView:clickableAssetViews:nonclickableAssetViews:viewController:)\n\n `\n ` \n Tells the receiver that it has been rendered in \\|view\\| with clickable asset views and\n nonclickable asset views. viewController should be used to present modal views for the ad. \n\n #### Declaration\n\n Swift \n\n optional func didRender(in view: UIView, clickableAssetViews: [../Type-Definitions.html#/c:GADNativeAdAssetIdentifiers.h@T@GADNativeAssetIdentifier : UIView], nonclickableAssetViews: [../Type-Definitions.html#/c:GADNativeAdAssetIdentifiers.h@T@GADNativeAssetIdentifier : UIView], viewController: UIViewController)\n\n Objective-C \n\n - (void)didRenderInView:(nonnull UIView *)view\n clickableAssetViews:\n (nonnull NSDictionary\u003c../Type-Definitions.html#/c:GADNativeAdAssetIdentifiers.h@T@GADNativeAssetIdentifier, UIView *\u003e *)\n clickableAssetViews\n nonclickableAssetViews:\n (nonnull NSDictionary\u003c../Type-Definitions.html#/c:GADNativeAdAssetIdentifiers.h@T@GADNativeAssetIdentifier, UIView *\u003e *)\n nonclickableAssetViews\n viewController:(nonnull UIViewController *)viewController;\n\n- `\n ``\n ``\n `\n\n ### [-didRecordImpression](#/c:objc(pl)GADMediatedUnifiedNativeAd(im)didRecordImpression)\n\n `\n ` \n Tells the receiver that an impression is recorded. This method is called only once per mediated\n native ad. \n\n #### Declaration\n\n Swift \n\n optional func didRecordImpression()\n\n Objective-C \n\n - (void)didRecordImpression;\n\n- `\n ``\n ``\n `\n\n ### [-didRecordClickOnAssetWithName:view:viewController:](#/c:objc(pl)GADMediatedUnifiedNativeAd(im)didRecordClickOnAssetWithName:view:viewController:)\n\n `\n ` \n Tells the receiver that a user click is recorded on the asset named \\|assetName\\|. Full screen\n actions should be presented from viewController. This method is called only if\n -\\[GADMAdNetworkAdapter handlesUserClicks\\] returns NO. \n\n #### Declaration\n\n Swift \n\n optional func didRecordClickOnAsset(with assetName: ../Type-Definitions.html#/c:GADNativeAdAssetIdentifiers.h@T@GADNativeAssetIdentifier, view: UIView, viewController: UIViewController)\n\n Objective-C \n\n - (void)\n didRecordClickOnAssetWithName:(nonnull ../Type-Definitions.html#/c:GADNativeAdAssetIdentifiers.h@T@GADNativeAssetIdentifier)assetName\n view:(nonnull UIView *)view\n viewController:(nonnull UIViewController *)viewController;\n\n- `\n ``\n ``\n `\n\n ### [-didUntrackView:](#/c:objc(pl)GADMediatedUnifiedNativeAd(im)didUntrackView:)\n\n `\n ` \n Tells the receiver that it has untracked \\|view\\|. This method is called when the mediated native\n ad is no longer rendered in the provided view and the delegate should stop tracking the view's\n impressions and clicks. The method may also be called with a nil view when the view in which the\n mediated native ad has rendered is deallocated. \n\n #### Declaration\n\n Swift \n\n optional func didUntrackView(_ view: UIView?)\n\n Objective-C \n\n - (void)didUntrackView:(nullable UIView *)view;"]]