//
|
// GADNativeAd.h
|
// Google Mobile Ads SDK
|
//
|
// Copyright 2017 Google LLC. All rights reserved.
|
//
|
|
#import <Foundation/Foundation.h>
|
#import <GoogleMobileAds/GADAdChoicesView.h>
|
#import <GoogleMobileAds/GADAdLoaderDelegate.h>
|
#import <GoogleMobileAds/GADAdValue.h>
|
#import <GoogleMobileAds/GADMediaContent.h>
|
#import <GoogleMobileAds/GADMediaView.h>
|
#import <GoogleMobileAds/GADMuteThisAdReason.h>
|
#import <GoogleMobileAds/GADNativeAdAssetIdentifiers.h>
|
#import <GoogleMobileAds/GADNativeAdDelegate.h>
|
#import <GoogleMobileAds/GADNativeAdImage.h>
|
#import <GoogleMobileAds/GADResponseInfo.h>
|
#import <GoogleMobileAds/GADVideoController.h>
|
#import <UIKit/UIKit.h>
|
|
/// Native ad. To request this ad type, pass GADAdLoaderAdTypeNative
|
/// (see GADAdLoaderAdTypes.h) to the |adTypes| parameter in GADAdLoader's initializer method. If
|
/// you request this ad type, your delegate must conform to the GADNativeAdLoaderDelegate
|
/// protocol.
|
@interface GADNativeAd : NSObject
|
|
#pragma mark - Must be displayed if available
|
|
/// Headline.
|
@property(nonatomic, readonly, copy, nullable) NSString *headline;
|
|
#pragma mark - Recommended to display
|
|
/// Text that encourages user to take some action with the ad. For example "Install".
|
@property(nonatomic, readonly, copy, nullable) NSString *callToAction;
|
/// Icon image.
|
@property(nonatomic, readonly, strong, nullable) GADNativeAdImage *icon;
|
/// Description.
|
@property(nonatomic, readonly, copy, nullable) NSString *body;
|
/// Array of GADNativeAdImage objects.
|
@property(nonatomic, readonly, strong, nullable) NSArray<GADNativeAdImage *> *images;
|
/// App store rating (0 to 5).
|
@property(nonatomic, readonly, copy, nullable) NSDecimalNumber *starRating;
|
/// The app store name. For example, "App Store".
|
@property(nonatomic, readonly, copy, nullable) NSString *store;
|
/// String representation of the app's price.
|
@property(nonatomic, readonly, copy, nullable) NSString *price;
|
/// Identifies the advertiser. For example, the advertiser’s name or visible URL.
|
@property(nonatomic, readonly, copy, nullable) NSString *advertiser;
|
/// Media content. Set the associated media view's mediaContent property to this object to display
|
/// this content.
|
@property(nonatomic, readonly, nonnull) GADMediaContent *mediaContent;
|
|
#pragma mark - Other properties
|
|
/// Optional delegate to receive state change notifications.
|
@property(nonatomic, weak, nullable) id<GADNativeAdDelegate> delegate;
|
|
/// Reference to a root view controller that is used by the ad to present full screen content after
|
/// the user interacts with the ad. The root view controller is most commonly the view controller
|
/// displaying the ad.
|
@property(nonatomic, weak, nullable) UIViewController *rootViewController;
|
|
/// Dictionary of assets which aren't processed by the receiver.
|
@property(nonatomic, readonly, copy, nullable) NSDictionary<NSString *, id> *extraAssets;
|
|
/// Information about the ad response that returned the ad.
|
@property(nonatomic, readonly, nonnull) GADResponseInfo *responseInfo;
|
|
/// Called when the ad is estimated to have earned money. Available for allowlisted accounts only.
|
@property(nonatomic, nullable, copy) GADPaidEventHandler paidEventHandler;
|
|
/// Indicates whether custom Mute This Ad is available for the native ad.
|
@property(nonatomic, readonly, getter=isCustomMuteThisAdAvailable) BOOL customMuteThisAdAvailable;
|
|
/// An array of Mute This Ad reasons used to render customized mute ad survey. Use this array to
|
/// implement your own Mute This Ad feature only when customMuteThisAdAvailable is YES.
|
@property(nonatomic, readonly, nullable) NSArray<GADMuteThisAdReason *> *muteThisAdReasons;
|
|
/// Registers ad view, clickable asset views, and nonclickable asset views with this native ad.
|
/// Media view shouldn't be registered as clickable.
|
/// @param clickableAssetViews Dictionary of asset views that are clickable, keyed by asset IDs.
|
/// @param nonclickableAssetViews Dictionary of asset views that are not clickable, keyed by asset
|
/// IDs.
|
- (void)registerAdView:(nonnull UIView *)adView
|
clickableAssetViews:
|
(nonnull NSDictionary<GADNativeAssetIdentifier, UIView *> *)clickableAssetViews
|
nonclickableAssetViews:
|
(nonnull NSDictionary<GADNativeAssetIdentifier, UIView *> *)nonclickableAssetViews;
|
|
/// Unregisters ad view from this native ad. The corresponding asset views will also be
|
/// unregistered.
|
- (void)unregisterAdView;
|
|
/// Reports the mute event with the mute reason selected by user. Use nil if no reason was selected.
|
/// Call this method only if customMuteThisAdAvailable is YES.
|
- (void)muteThisAdWithReason:(nullable GADMuteThisAdReason *)reason;
|
|
@end
|
|
#pragma mark - Protocol and constants
|
|
/// The delegate of a GADAdLoader object implements this protocol to receive GADNativeAd ads.
|
@protocol GADNativeAdLoaderDelegate <GADAdLoaderDelegate>
|
/// Called when a native ad is received.
|
- (void)adLoader:(nonnull GADAdLoader *)adLoader didReceiveNativeAd:(nonnull GADNativeAd *)nativeAd;
|
@end
|
|
#pragma mark - Unified Native Ad View
|
|
/// Base class for native ad views. Your native ad view must be a subclass of this class and must
|
/// call superclass methods for all overridden methods.
|
@interface GADNativeAdView : UIView
|
|
/// This property must point to the native ad object rendered by this ad view.
|
@property(nonatomic, strong, nullable) GADNativeAd *nativeAd;
|
|
/// Weak reference to your ad view's headline asset view.
|
@property(nonatomic, weak, nullable) IBOutlet UIView *headlineView;
|
/// Weak reference to your ad view's call to action asset view.
|
@property(nonatomic, weak, nullable) IBOutlet UIView *callToActionView;
|
/// Weak reference to your ad view's icon asset view.
|
@property(nonatomic, weak, nullable) IBOutlet UIView *iconView;
|
/// Weak reference to your ad view's body asset view.
|
@property(nonatomic, weak, nullable) IBOutlet UIView *bodyView;
|
/// Weak reference to your ad view's store asset view.
|
@property(nonatomic, weak, nullable) IBOutlet UIView *storeView;
|
/// Weak reference to your ad view's price asset view.
|
@property(nonatomic, weak, nullable) IBOutlet UIView *priceView;
|
/// Weak reference to your ad view's image asset view.
|
@property(nonatomic, weak, nullable) IBOutlet UIView *imageView;
|
/// Weak reference to your ad view's star rating asset view.
|
@property(nonatomic, weak, nullable) IBOutlet UIView *starRatingView;
|
/// Weak reference to your ad view's advertiser asset view.
|
@property(nonatomic, weak, nullable) IBOutlet UIView *advertiserView;
|
/// Weak reference to your ad view's media asset view.
|
@property(nonatomic, weak, nullable) IBOutlet GADMediaView *mediaView;
|
/// Weak reference to your ad view's AdChoices view. Must set adChoicesView before setting
|
/// nativeAd, otherwise AdChoices will be rendered according to the preferredAdChoicesPosition
|
/// defined in GADNativeAdViewAdOptions.
|
@property(nonatomic, weak, nullable) IBOutlet GADAdChoicesView *adChoicesView;
|
|
@end
|