1717#import < GoogleMobileAds/GoogleMobileAds.h>
1818#import < UIKit/UIKit.h>
1919
20- @interface AdManagerSCARSnippets : NSObject
21- - (void )loadNative : (NSString *)adUnitID ;
22- - (void )loadBanner : (NSString *)adUnitID ;
23- - (void )loadNativePlusBanner : (NSString *)adUnitID ;
24- @end
2520
2621@implementation AdManagerSCARSnippets
2722
@@ -46,7 +41,8 @@ - (void)loadNative:(NSString *)adUnitID {
4641 return ;
4742 }
4843 NSLog (@" Signal string: %@ " , signal.signalString );
49- // TODO: Fetch the ad response using your generated signal.
44+ // Fetch the ad response using your generated signal.
45+ NSString *adResponseString = [self fetchSignalResponse: signal];
5046 }];
5147 // [END signal_request_native]
5248}
@@ -74,7 +70,8 @@ - (void)loadBanner:(NSString *)adUnitID {
7470 return ;
7571 }
7672 NSLog (@" Signal string: %@ " , signal.signalString );
77- // TODO: Fetch the ad response using your generated signal.
73+ // Fetch the ad response using your generated signal.
74+ NSString *adResponseString = [self fetchSignalResponse: signal];
7875 }];
7976 // [END signal_request_banner]
8077}
@@ -86,12 +83,13 @@ - (void)loadNativePlusBanner:(NSString *)adUnitID {
8683 // denote that the usage of QueryInfo is for Ad Manager S2S.
8784 GADNativeSignalRequest *signalRequest =
8885 [[GADNativeSignalRequest alloc ] initWithSignalType: @" signal_type_ad_manager_s2s" ];
89- signalRequest.requestAgent = @" request_agent " ;
86+ signalRequest.requestAgent = @" REQUEST_AGENT " ;
9087 signalRequest.adUnitID = adUnitID;
9188 signalRequest.adLoaderAdTypes =
9289 [NSSet setWithArray: @[ GADAdLoaderAdTypeNative, GADAdLoaderAdTypeGAMBanner ]];
9390 // Refer to the AdSize class for available ad sizes.
94- signalRequest.adSizes = @[ @(GADCurrentOrientationInlineAdaptiveBannerAdSizeWithWidth (375 )) ];
91+ signalRequest.adSizes =
92+ @[ NSValueFromGADAdSize(GADCurrentOrientationInlineAdaptiveBannerAdSizeWithWidth (375 )) ];
9593
9694 [GADMobileAds generateSignal: signalRequest
9795 completionHandler: ^(GADSignal *_Nullable signal, NSError *_Nullable error) {
@@ -104,9 +102,132 @@ - (void)loadNativePlusBanner:(NSString *)adUnitID {
104102 return ;
105103 }
106104 NSLog (@" Signal string: %@ " , signal.signalString );
107- // TODO: Fetch the ad response using your generated signal.
105+ // Fetch the ad response using your generated signal.
106+ NSString *adResponseString = [self fetchSignalResponse: signal];
108107 }];
109108 // [END signal_request_native_plus_banner]
110109}
111110
111+ - (void )loadNativeWithOptions : (NSString *)adUnitID {
112+ // [START native_ad_options]
113+ // Create a signal request for an ad.
114+ // Specify the "signal_type_ad_manager_s2s" to
115+ // denote that the usage of QueryInfo is for Ad Manager S2S.
116+ GADNativeSignalRequest *signalRequest =
117+ [[GADNativeSignalRequest alloc ] initWithSignalType: @" signal_type_ad_manager_s2s" ];
118+ signalRequest.requestAgent = @" REQUEST_AGENT" ;
119+ signalRequest.adUnitID = adUnitID;
120+
121+ // Enable shared native ad options.
122+ signalRequest.disableImageLoading = NO ;
123+ signalRequest.mediaAspectRatio = GADMediaAspectRatioAny;
124+ signalRequest.shouldRequestMultipleImages = YES ;
125+ signalRequest.preferredAdChoicesPosition = GADAdChoicesPositionTopRightCorner;
126+
127+ // Enable video options.
128+ GADVideoOptions *videoOptions = [[GADVideoOptions alloc ] init ];
129+ videoOptions.startMuted = YES ;
130+ signalRequest.videoOptions = videoOptions;
131+
132+ [GADMobileAds generateSignal: signalRequest
133+ completionHandler: ^(GADSignal *_Nullable signal, NSError *_Nullable error) {
134+ if (error != nil ) {
135+ NSLog (@" Error getting ad info: %@ " , error.localizedDescription );
136+ return ;
137+ }
138+ if (signal == nil ) {
139+ NSLog (@" Unexpected error - query info is nil." );
140+ return ;
141+ }
142+ NSLog (@" Signal string: %@ " , signal.signalString );
143+ // Fetch the ad response using your generated signal.
144+ NSString *adResponseString = [self fetchSignalResponse: signal];
145+ }];
146+ // [END native_ad_options]
147+ }
148+
149+ // [START fetch_response]
150+ // This function emulates a request to your ad server.
151+ - (NSString *)fetchSignalResponse : (GADSignal *)signal {
152+ return @" adResponseString" ;
153+ }
154+ // [END fetch_response]
155+
156+ - (void )renderBannerForAdUnitID : (NSString *)adUnitID
157+ withAdResponseString : (NSString *)adResponseString
158+ inRootViewController : (UIViewController *)rootViewController {
159+ // [START render_banner]
160+ self.adLoader = [[GADAdLoader alloc ] initWithAdUnitID: adUnitID
161+ rootViewController: rootViewController
162+ adTypes: @[ GADAdLoaderAdTypeGAMBanner ]
163+ options: nil ];
164+ self.adLoader .delegate = self;
165+ [self .adLoader loadWithAdResponseString: adResponseString];
166+ // [END render_banner]
167+ }
168+
169+ - (void )renderNativeAdForAdUnitID : (NSString *)adUnitID
170+ withAdResponseString : (NSString *)adResponseString
171+ inRootViewController : (UIViewController *)rootViewController {
172+ // [START render_native]
173+ self.adLoader = [[GADAdLoader alloc ] initWithAdUnitID: adUnitID
174+ rootViewController: rootViewController
175+ adTypes: @[ GADAdLoaderAdTypeNative ]
176+ options: nil ];
177+ self.adLoader .delegate = self;
178+ [self .adLoader loadWithAdResponseString: adResponseString];
179+ // [END render_native]
180+ }
181+
182+ - (void )renderNativePlusBannerForAdUnitID : (NSString *)adUnitID
183+ withAdResponseString : (NSString *)adResponseString
184+ inRootViewController : (UIViewController *)rootViewController {
185+ // [START render_native_plus_banner]
186+ self.adLoader =
187+ [[GADAdLoader alloc ] initWithAdUnitID: adUnitID
188+ rootViewController: rootViewController
189+ adTypes: @[ GADAdLoaderAdTypeNative, GADAdLoaderAdTypeGAMBanner ]
190+ options: nil ];
191+ self.adLoader .delegate = self;
192+ [self .adLoader loadWithAdResponseString: adResponseString];
193+ // [END render_native_plus_banner]
194+ }
195+
196+ - (nonnull NSArray <NSValue *> *)validBannerSizesForAdLoader : (nonnull GADAdLoader *)adLoader {
197+ return @[ NSValueFromGADAdSize(GADCurrentOrientationInlineAdaptiveBannerAdSizeWithWidth (375 )) ];
198+ }
199+
200+ #pragma mark - GADNativeAdLoaderDelegate
201+
202+ - (void )adLoader : (nonnull GADAdLoader *)adLoader
203+ didReceiveGAMBannerView : (nonnull GAMBannerView *)bannerView {
204+ // GAM Banner ad received.
205+ }
206+
207+ - (void )adLoader : (nonnull GADAdLoader *)adLoader
208+ didReceiveNativeAd : (nonnull GADNativeAd *)nativeAd {
209+ // Native ad received.
210+ }
211+
212+ - (void )adLoader : (nonnull GADAdLoader *)adLoader
213+ didFailToReceiveAdWithError : (nonnull NSError *)error {
214+ // Native ad failed to load.
215+ }
216+
217+ @end
218+ @interface AdManagerSCARSnippets : NSObject <GADNativeAdLoaderDelegate, GAMBannerAdLoaderDelegate>
219+ @property (nonatomic , strong ) GADAdLoader *adLoader;
220+
221+ - (void )loadNative : (NSString *)adUnitID ;
222+ - (void )loadBanner : (NSString *)adUnitID ;
223+ - (void )loadNativePlusBanner : (NSString *)adUnitID ;
224+ - (void )renderBannerForAdUnitID : (NSString *)adUnitID
225+ withAdResponseString : (NSString *)adResponseString
226+ inRootViewController : (UIViewController *)rootViewController ;
227+ - (void )renderNativeAdForAdUnitID : (NSString *)adUnitID
228+ withAdResponseString : (NSString *)adResponseString
229+ inRootViewController : (UIViewController *)rootViewController ;
230+ - (void )renderNativePlusBannerForAdUnitID : (NSString *)adUnitID
231+ withAdResponseString : (NSString *)adResponseString
232+ inRootViewController : (UIViewController *)rootViewController ;
112233@end
0 commit comments