Skip to content

Commit cb817bd

Browse files
Nicholas Ventimigliacopybara-github
authored andcommitted
Added snippets for server to server requests.
PiperOrigin-RevId: 888257194
1 parent 9798cd0 commit cb817bd

4 files changed

Lines changed: 877 additions & 0 deletions

File tree

Lines changed: 265 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,265 @@
1+
// Copyright 2026 Google LLC
2+
//
3+
// Licensed under the Apache License, Version 2.0 (the "License");
4+
// you may not use this file except in compliance with the License.
5+
// You may obtain a copy of the License at
6+
//
7+
// https://www.apache.org/licenses/LICENSE-2.0
8+
//
9+
// Unless required by applicable law or agreed to in writing, software
10+
// distributed under the License is distributed on an "AS IS" BASIS,
11+
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12+
// See the License for the specific language governing permissions and
13+
// limitations under the License.
14+
15+
package com.google.android.gms.snippets;
16+
17+
import android.content.Context;
18+
import android.os.Bundle;
19+
import android.util.Log;
20+
import androidx.annotation.NonNull;
21+
import com.google.ads.mediation.admob.AdMobAdapter;
22+
import com.google.android.gms.ads.AdFormat;
23+
import com.google.android.gms.ads.AdLoader;
24+
import com.google.android.gms.ads.AdSize;
25+
import com.google.android.gms.ads.admanager.AdManagerAdRequest;
26+
import com.google.android.gms.ads.admanager.AdManagerAdView;
27+
import com.google.android.gms.ads.formats.OnAdManagerAdViewLoadedListener;
28+
import com.google.android.gms.ads.nativead.NativeAd;
29+
import com.google.android.gms.ads.nativead.NativeAdOptions;
30+
import com.google.android.gms.ads.query.QueryInfo;
31+
import com.google.android.gms.ads.query.QueryInfoGenerationCallback;
32+
33+
/** Java code snippets for the developer guide. */
34+
public class AdManagerSCARSnippets {
35+
36+
private static final String TAG = "AdManagerSCARSnippets";
37+
38+
public void loadNative(Context context, String adUnitId) {
39+
// [START signal_request_native]
40+
// Specify the "query_info_type" as "signal_type_ad_manager_s2s" to
41+
// denote that the usage of QueryInfo is for Ad Manager S2S.
42+
Bundle extras = new Bundle();
43+
extras.putString("query_info_type", "signal_type_ad_manager_s2s");
44+
45+
// Create an ad request for signal generation.
46+
AdManagerAdRequest adRequest =
47+
new AdManagerAdRequest.Builder().addNetworkExtrasBundle(AdMobAdapter.class, extras).build();
48+
49+
// Generate signals with the ad request.
50+
QueryInfo.generate(
51+
context,
52+
AdFormat.NATIVE,
53+
adRequest,
54+
adUnitId,
55+
new QueryInfoGenerationCallback() {
56+
@Override
57+
public void onSuccess(@NonNull final QueryInfo queryInfo) {
58+
Log.d(TAG, "QueryInfo string: " + queryInfo.getQuery());
59+
// Fetch the ad response using your generated query info.
60+
String adResponseString = fetchAdResponseString(queryInfo);
61+
renderNative(context, adUnitId, adResponseString);
62+
}
63+
64+
@Override
65+
public void onFailure(@NonNull String error) {
66+
Log.e(TAG, "QueryInfo failed with error: " + error);
67+
// TODO: Handle error.
68+
}
69+
});
70+
// [END signal_request_native]
71+
}
72+
73+
public void loadBanner(Context context, String adUnitId) {
74+
// [START signal_request_banner]
75+
// Specify the "query_info_type" as "signal_type_ad_manager_s2s" to
76+
// denote that the usage of QueryInfo is for Ad Manager S2S.
77+
Bundle extras = new Bundle();
78+
extras.putString("query_info_type", "signal_type_ad_manager_s2s");
79+
80+
// Set the adaptive banner size.
81+
// Refer to the AdSize class for available ad sizes.
82+
AdSize size = AdSize.getCurrentOrientationInlineAdaptiveBannerAdSize(context, 320);
83+
extras.putInt("adaptive_banner_w", size.getWidth());
84+
extras.putInt("adaptive_banner_h", size.getHeight());
85+
86+
// Create an ad request for signal generation.
87+
AdManagerAdRequest adRequest =
88+
new AdManagerAdRequest.Builder().addNetworkExtrasBundle(AdMobAdapter.class, extras).build();
89+
90+
// Generate signals with the ad request.
91+
QueryInfo.generate(
92+
context,
93+
AdFormat.BANNER,
94+
adRequest,
95+
adUnitId,
96+
new QueryInfoGenerationCallback() {
97+
@Override
98+
public void onSuccess(@NonNull final QueryInfo queryInfo) {
99+
Log.d(TAG, "QueryInfo string: " + queryInfo.getQuery());
100+
// Fetch the ad response using your generated query info.
101+
String adResponseString = fetchAdResponseString(queryInfo);
102+
renderBanner(context, adUnitId, adResponseString);
103+
}
104+
105+
@Override
106+
public void onFailure(@NonNull String error) {
107+
Log.e(TAG, "QueryInfo failed with error: " + error);
108+
// TODO: Handle error.
109+
}
110+
});
111+
// [END signal_request_banner]
112+
}
113+
114+
public void loadNativePlusBanner(Context context, String adUnitId) {
115+
// [START signal_request_native_plus_banner]
116+
// Specify the "query_info_type" as "signal_type_ad_manager_s2s" to
117+
// denote that the usage of QueryInfo is for Ad Manager S2S.
118+
Bundle extras = new Bundle();
119+
extras.putString("query_info_type", "signal_type_ad_manager_s2s");
120+
121+
// Set the adaptive banner size.
122+
// Refer to the AdSize class for available ad sizes.
123+
AdSize size = AdSize.getCurrentOrientationInlineAdaptiveBannerAdSize(context, 320);
124+
extras.putInt("adaptive_banner_w", size.getWidth());
125+
extras.putInt("adaptive_banner_h", size.getHeight());
126+
127+
// Create an ad request for signal generation.
128+
AdManagerAdRequest adRequest =
129+
new AdManagerAdRequest.Builder()
130+
.addNetworkExtrasBundle(AdMobAdapter.class, extras)
131+
.setRequestAgent("REQUEST_AGENT")
132+
.build();
133+
134+
// Generate signals with the ad request.
135+
QueryInfo.generate(
136+
context,
137+
AdFormat.NATIVE,
138+
adRequest,
139+
adUnitId,
140+
new QueryInfoGenerationCallback() {
141+
@Override
142+
public void onSuccess(@NonNull final QueryInfo queryInfo) {
143+
Log.d(TAG, "QueryInfo string: " + queryInfo.getQuery());
144+
// Fetch the ad response using your generated query info.
145+
String adResponseString = fetchAdResponseString(queryInfo);
146+
renderNativePlusBanner(context, adUnitId, adResponseString);
147+
}
148+
149+
@Override
150+
public void onFailure(@NonNull String error) {
151+
Log.e(TAG, "QueryInfo failed with error: " + error);
152+
// TODO: Handle error.
153+
}
154+
});
155+
// [END signal_request_native_plus_banner]
156+
}
157+
158+
public void loadNativeWithOptions(Context context, String adUnitId) {
159+
// [START native_ad_options]
160+
Bundle extras = new Bundle();
161+
// Specify the "query_info_type" as "signal_type_ad_manager_s2s" to
162+
// denote that the usage of QueryInfo is for Ad Manager S2S.
163+
extras.putString("query_info_type", "signal_type_ad_manager_s2s");
164+
// Provide native media aspect ratio through extras bundle.
165+
extras.putInt(
166+
"gad_native_media_aspect_ratio", NativeAdOptions.NATIVE_MEDIA_ASPECT_RATIO_LANDSCAPE);
167+
168+
// Create an ad request for signal generation.
169+
AdManagerAdRequest adRequest =
170+
new AdManagerAdRequest.Builder().addNetworkExtrasBundle(AdMobAdapter.class, extras).build();
171+
172+
// Generate signals with the ad request.
173+
QueryInfo.generate(
174+
context,
175+
AdFormat.NATIVE,
176+
adRequest,
177+
adUnitId,
178+
new QueryInfoGenerationCallback() {
179+
@Override
180+
public void onSuccess(@NonNull final QueryInfo queryInfo) {
181+
Log.d(TAG, "QueryInfo string: " + queryInfo.getQuery());
182+
// Fetch the ad response using your generated query info.
183+
String adResponseString = fetchAdResponseString(queryInfo);
184+
renderNative(context, adUnitId, adResponseString);
185+
}
186+
187+
@Override
188+
public void onFailure(@NonNull String error) {
189+
Log.e(TAG, "QueryInfo failed with error: " + error);
190+
// TODO: Handle error.
191+
}
192+
});
193+
// [END native_ad_options]
194+
}
195+
196+
// [START fetch_response]
197+
// Emulates a request to your ad server.
198+
private String fetchAdResponseString(QueryInfo queryInfo) {
199+
// This value is generated dynamically at runtime from your ad server.
200+
return "Ad response";
201+
}
202+
203+
// [END fetch_response]
204+
205+
public void renderNative(Context context, String adUnitId, String adResponseString) {
206+
// [START render_native]
207+
AdManagerAdRequest adRequest =
208+
new AdManagerAdRequest.Builder().setAdString(adResponseString).build();
209+
210+
AdLoader adLoader =
211+
new AdLoader.Builder(context, adUnitId)
212+
.forNativeAd(
213+
new NativeAd.OnNativeAdLoadedListener() {
214+
@Override
215+
public void onNativeAdLoaded(NativeAd nativeAd) {
216+
Log.d(TAG, "Native ad rendered.");
217+
// TODO: Show the ad.
218+
}
219+
})
220+
.build();
221+
adLoader.loadAd(adRequest);
222+
// [END render_native]
223+
}
224+
225+
public void renderBanner(Context context, String adUnitId, String adResponseString) {
226+
// [START render_banner]
227+
AdManagerAdRequest adRequest =
228+
new AdManagerAdRequest.Builder().setAdString(adResponseString).build();
229+
230+
AdManagerAdView adView = new AdManagerAdView(context);
231+
adView.setAdUnitId(adUnitId);
232+
adView.setAdSizes(AdSize.BANNER);
233+
adView.loadAd(adRequest);
234+
// [END render_banner]
235+
}
236+
237+
public void renderNativePlusBanner(Context context, String adUnitId, String adResponseString) {
238+
// [START render_native_plus_banner]
239+
AdManagerAdRequest adRequest =
240+
new AdManagerAdRequest.Builder().setAdString(adResponseString).build();
241+
242+
AdLoader adLoader =
243+
new AdLoader.Builder(context, adUnitId)
244+
.forNativeAd(
245+
new NativeAd.OnNativeAdLoadedListener() {
246+
@Override
247+
public void onNativeAdLoaded(@NonNull NativeAd nativeAd) {
248+
Log.d(TAG, "Native ad rendered.");
249+
// TODO: Show the ad.
250+
}
251+
})
252+
.forAdManagerAdView(
253+
new OnAdManagerAdViewLoadedListener() {
254+
@Override
255+
public void onAdManagerAdViewLoaded(@NonNull AdManagerAdView adManagerAdView) {
256+
Log.d(TAG, "Banner ad rendered.");
257+
// TODO: Show the ad.
258+
}
259+
},
260+
AdSize.BANNER)
261+
.build();
262+
adLoader.loadAd(adRequest);
263+
// [END render_native_plus_banner]
264+
}
265+
}

0 commit comments

Comments
 (0)