Skip to content

Commit bbb34d2

Browse files
Nicholas Ventimigliacopybara-github
authored andcommitted
Added snippets for server to server requests.
PiperOrigin-RevId: 805096286
1 parent 90e2ffa commit bbb34d2

File tree

6 files changed

+449
-92
lines changed

6 files changed

+449
-92
lines changed

Objective-C/advanced/APIDemo/APIDemo/Snippets/AdManagerSCARSnippets.m

Lines changed: 131 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -17,11 +17,6 @@
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

Objective-C/advanced/APIDemo/APIDemo/Snippets/AdMobSCARSnippets.m

Lines changed: 88 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -17,9 +17,16 @@
1717
#import <GoogleMobileAds/GoogleMobileAds.h>
1818
#import <UIKit/UIKit.h>
1919

20-
@interface AdMobSCARSnippets : NSObject
20+
@interface AdMobSCARSnippets : NSObject <GADNativeAdLoaderDelegate>
21+
@property(nonatomic, strong) GADAdLoader *adLoader;
22+
2123
- (void)loadNative:(NSString *)adUnitID;
2224
- (void)loadBanner:(NSString *)adUnitID;
25+
- (void)renderBannerForAdUnitID:(NSString *)adUnitID
26+
withAdResponseString:(NSString *)adResponseString;
27+
- (void)renderNativeAdForAdUnitID:(NSString *)adUnitID
28+
withAdResponseString:(NSString *)adResponseString
29+
inRootViewController:(UIViewController *)rootViewController;
2330
@end
2431

2532
@implementation AdMobSCARSnippets
@@ -43,7 +50,8 @@ - (void)loadNative:(NSString *)adUnitID {
4350
return;
4451
}
4552
NSLog(@"Signal string: %@", signal.signalString);
46-
// TODO: Fetch the ad response using your generated signal.
53+
// Fetch the ad response using your generated signal.
54+
NSString *adResponseString = [self fetchSignalResponse:signal];
4755
}];
4856
// [END signal_request_native]
4957
}
@@ -66,13 +74,89 @@ - (void)loadBanner:(NSString *)adUnitID {
6674
return;
6775
}
6876
if (signal == nil) {
69-
NSLog(@"Unexpected error - Signal is nil.");
77+
NSLog(@"Unexpected error - signal is nil.");
7078
return;
7179
}
7280
NSLog(@"Signal string: %@", signal.signalString);
73-
// TODO: Fetch the ad response using your generated signal.
81+
// Fetch the ad response using your generated signal.
82+
NSString *adResponseString = [self fetchSignalResponse:signal];
7483
}];
7584
// [END signal_request_banner]
7685
}
7786

87+
- (void)loadNativeWithOptions:(NSString *)adUnitID {
88+
// [START native_ad_options]
89+
// Create a signal request for an ad.
90+
GADNativeSignalRequest *signalRequest =
91+
[[GADNativeSignalRequest alloc] initWithSignalType:@"SIGNAL_TYPE"];
92+
signalRequest.requestAgent = @"REQUEST_AGENT";
93+
signalRequest.adUnitID = adUnitID;
94+
95+
// Enable shared native ad options.
96+
signalRequest.disableImageLoading = NO;
97+
signalRequest.mediaAspectRatio = GADMediaAspectRatioAny;
98+
signalRequest.shouldRequestMultipleImages = YES;
99+
signalRequest.preferredAdChoicesPosition = GADAdChoicesPositionTopRightCorner;
100+
101+
// Enable video options.
102+
GADVideoOptions *videoOptions = [[GADVideoOptions alloc] init];
103+
videoOptions.startMuted = YES;
104+
signalRequest.videoOptions = videoOptions;
105+
106+
[GADMobileAds generateSignal:signalRequest
107+
completionHandler:^(GADSignal *_Nullable signal, NSError *_Nullable error) {
108+
if (error != nil) {
109+
NSLog(@"Error getting ad info: %@", error.localizedDescription);
110+
return;
111+
}
112+
if (signal == nil) {
113+
NSLog(@"Unexpected error - signal is nil.");
114+
return;
115+
}
116+
NSLog(@"Signal string: %@", signal.signalString);
117+
// Fetch the ad response using your generated signal.
118+
NSString *adResponseString = [self fetchSignalResponse:signal];
119+
}];
120+
// [END native_ad_options]
121+
}
122+
123+
// [START fetch_response]
124+
// This function emulates a request to your ad server.
125+
- (NSString *)fetchSignalResponse:(GADSignal *)signal {
126+
return @"adResponseString";
127+
}
128+
// [END fetch_response]
129+
130+
- (void)renderBannerForAdUnitID:(NSString *)adUnitID
131+
withAdResponseString:(NSString *)adResponseString {
132+
// [START render_banner]
133+
GADBannerView *bannerView = [[GADBannerView alloc] initWithAdSize:GADAdSizeBanner];
134+
bannerView.adUnitID = adUnitID;
135+
[bannerView loadWithAdResponseString:adResponseString];
136+
// [END render_banner]
137+
}
138+
139+
- (void)renderNativeAdForAdUnitID:(NSString *)adUnitID
140+
withAdResponseString:(NSString *)adResponseString
141+
inRootViewController:(UIViewController *)rootViewController {
142+
// [START render_native]
143+
self.adLoader = [[GADAdLoader alloc] initWithAdUnitID:adUnitID
144+
rootViewController:rootViewController
145+
adTypes:@[ GADAdLoaderAdTypeNative ]
146+
options:nil];
147+
self.adLoader.delegate = self;
148+
[self.adLoader loadWithAdResponseString:adResponseString];
149+
// [END render_native]
150+
}
151+
152+
#pragma mark - GADNativeAdLoaderDelegate
153+
154+
- (void)adLoader:(GADAdLoader *)adLoader didReceiveNativeAd:(GADNativeAd *)nativeAd {
155+
// Native ad received.
156+
}
157+
158+
- (void)adLoader:(GADAdLoader *)adLoader didFailToReceiveAdWithError:(NSError *)error {
159+
// Native ad failed to load.
160+
}
161+
78162
@end

Objective-C/advanced/APIDemo/APIDemo/Snippets/BannerSnippets.m

Lines changed: 17 additions & 55 deletions
Original file line numberDiff line numberDiff line change
@@ -17,9 +17,7 @@
1717
#import <UIKit/UIKit.h>
1818
#import <GoogleMobileAds/GoogleMobileAds.h>
1919

20-
static NSString *const kTestAdUnitID = @"ca-app-pub-3940256099942544/2435281174";
21-
22-
@interface BannerSnippets : UIViewController <GADBannerViewDelegate>
20+
@interface BannerSnippets : UIViewController
2321

2422
@property(nonatomic, strong) GADBannerView *bannerView;
2523

@@ -50,9 +48,6 @@ - (void)setUpBannerViewProgrammatically {
5048
// [START create_admob_banner_view]
5149
// Initialize the banner view.
5250
GADBannerView *bannerView = [[GADBannerView alloc] init];
53-
// [START set_delegate]
54-
bannerView.delegate = self;
55-
// [END set_delegate]
5651
UIView *view = self.view;
5752

5853
bannerView.translatesAutoresizingMaskIntoConstraints = NO;
@@ -76,59 +71,26 @@ - (void)loadInlineAdaptiveBanner {
7671
GADBannerView *bannerView = self.bannerView;
7772
UIView *view = self.view;
7873

79-
// [START set_inline_adaptive_ad_size]
74+
// [START get_width]
75+
CGFloat totalWidth = CGRectGetWidth(view.bounds);
8076
// Make sure the ad fits inside the readable area.
81-
CGFloat adWidth = CGRectGetWidth(UIEdgeInsetsInsetRect(view.bounds, view.safeAreaInsets));
82-
bannerView.adSize = GADCurrentOrientationInlineAdaptiveBannerAdSizeWithWidth(adWidth);
83-
// [END set_inline_adaptive_ad_size]
84-
85-
// Test ad unit ID for inline adaptive banners.
86-
bannerView.adUnitID = kTestAdUnitID;
87-
[bannerView loadRequest:[GADRequest request]];
88-
}
77+
UIEdgeInsets insets = view.safeAreaInsets;
78+
CGFloat adWidth = totalWidth - insets.left - insets.right;
79+
// [END get_width]
8980

90-
- (void)createCustomAdSize:(GADBannerView *)bannerView {
91-
// [START create_custom_ad_size]
92-
bannerView.adSize = GADAdSizeFromCGSize(CGSizeMake(250, 250));
93-
// [END create_custom_ad_size]
94-
}
81+
// View is not laid out yet, return early.
82+
if (adWidth <= 0) {
83+
return;
84+
}
9585

96-
- (void)loadBannerAd {
97-
// [START load_ad]
98-
// [START ad_size]
99-
// Request a large anchored adaptive banner with a width of 375.
100-
self.bannerView.adSize = GADLargeAnchoredAdaptiveBannerAdSizeWithWidth(375);
101-
// [END ad_size]
86+
// [START set_adaptive_ad_size]
87+
GADAdSize adSize = GADLandscapeAnchoredAdaptiveBannerAdSizeWithWidth(adWidth);
88+
bannerView.adSize = adSize;
89+
// [END set_adaptive_ad_size]
10290

103-
[self.bannerView loadRequest:[GADRequest request]];
104-
// [END load_ad]
105-
}
106-
107-
// [START ad_events]
108-
- (void)bannerViewDidReceiveAd:(GADBannerView *)bannerView {
109-
NSLog(@"bannerViewDidReceiveAd");
110-
}
111-
112-
- (void)bannerView:(GADBannerView *)bannerView didFailToReceiveAdWithError:(NSError *)error {
113-
NSLog(@"bannerView:didFailToReceiveAdWithError: %@", error.localizedDescription);
114-
}
115-
116-
- (void)bannerViewDidRecordImpression:(GADBannerView *)bannerView {
117-
NSLog(@"bannerViewDidRecordImpression");
118-
}
119-
120-
- (void)bannerViewWillPresentScreen:(GADBannerView *)bannerView {
121-
NSLog(@"bannerViewWillPresentScreen");
122-
}
123-
124-
- (void)bannerViewWillDismissScreen:(GADBannerView *)bannerView {
125-
NSLog(@"bannerViewWillDismissScreen");
126-
}
127-
128-
- (void)bannerViewDidDismissScreen:(GADBannerView *)bannerView {
129-
NSLog(@"bannerViewDidDismissScreen");
91+
// Test ad unit ID for inline adaptive banners.
92+
bannerView.adUnitID = @"ca-app-pub-3940256099942544/2435281174";
93+
[bannerView loadRequest:[GADRequest request]];
13094
}
13195

132-
// [END ad_events]
133-
13496
@end

0 commit comments

Comments
 (0)