lpw
2024-09-25 f76fcb126b14e9c98fc80fbb9dd10a7f79875f03
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
//
//  GADMediatedUnifiedNativeAd.h
//  Google Mobile Ads SDK
//
//  Copyright 2017 Google LLC. All rights reserved.
//
 
#import <Foundation/Foundation.h>
#import <GoogleMobileAds/GADNativeAdAssetIdentifiers.h>
#import <GoogleMobileAds/GADNativeAdImage.h>
 
/// Provides methods used for constructing native ads. The adapter must return an object conforming
/// to this protocol for native ad requests.
@protocol GADMediatedUnifiedNativeAd <NSObject>
 
/// Headline.
@property(nonatomic, readonly, copy, nullable) NSString *headline;
 
/// Array of GADNativeAdImage objects.
@property(nonatomic, readonly, nullable) NSArray<GADNativeAdImage *> *images;
 
/// Description.
@property(nonatomic, readonly, copy, nullable) NSString *body;
 
/// Icon image.
@property(nonatomic, readonly, nullable) GADNativeAdImage *icon;
 
/// Text that encourages user to take some action with the ad. For example "Install".
@property(nonatomic, readonly, copy, nullable) NSString *callToAction;
 
/// 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;
 
/// Returns a dictionary of asset names and object pairs for assets that are not handled by
/// properties of the GADMediatedUnifiedNativeAd.
@property(nonatomic, readonly, copy, nullable) NSDictionary<NSString *, id> *extraAssets;
 
@optional
 
/// AdChoices view.
@property(nonatomic, readonly, nullable) UIView *adChoicesView;
 
/// Media view.
@property(nonatomic, readonly, nullable) UIView *mediaView;
 
/// Indicates whether the ad has video content.
@property(nonatomic, readonly) BOOL hasVideoContent;
 
/// Media content aspect ratio (width/height) or 0 if there's no media content.
@property(nonatomic, readonly) CGFloat mediaContentAspectRatio;
 
/// The video's duration in seconds or 0 if there's no video or the duration is unknown.
@property(nonatomic, readonly) NSTimeInterval duration;
 
/// The video's current playback time in seconds or 0 if there's no video or the current playback
/// time is unknown.
@property(nonatomic, readonly) NSTimeInterval currentTime;
 
/// 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.
- (void)didRenderInView:(nonnull UIView *)view
       clickableAssetViews:
           (nonnull NSDictionary<GADNativeAssetIdentifier, UIView *> *)clickableAssetViews
    nonclickableAssetViews:
        (nonnull NSDictionary<GADNativeAssetIdentifier, UIView *> *)nonclickableAssetViews
            viewController:(nonnull UIViewController *)viewController;
 
/// Tells the receiver that an impression is recorded. This method is called only once per mediated
/// native ad.
- (void)didRecordImpression;
 
/// 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.
- (void)didRecordClickOnAssetWithName:(nonnull GADNativeAssetIdentifier)assetName
                                 view:(nonnull UIView *)view
                       viewController:(nonnull UIViewController *)viewController;
 
/// 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.
- (void)didUntrackView:(nullable UIView *)view;
 
@end