From df9bb5593b03e1e509ba3548187c8fa47d43ef10 Mon Sep 17 00:00:00 2001 From: Nicholas Ventimiglia Date: Tue, 9 Sep 2025 15:55:21 -0700 Subject: [PATCH] Added snippets for server to server requests. PiperOrigin-RevId: 805096286 --- .../gms/snippets/AdManagerSCARSnippets.java | 150 +++++++++++++++++ .../gms/snippets/AdmobSCARSnippets.java | 134 ++++++++++++++++ .../gms/snippets/AdManagerSCARSnippets.kt | 151 ++++++++++++++++++ .../android/gms/snippets/AdmobSCARSnippets.kt | 133 +++++++++++++++ 4 files changed, 568 insertions(+) create mode 100644 java/advanced/APIDemo/app/src/main/java/com/google/android/gms/snippets/AdManagerSCARSnippets.java create mode 100644 java/advanced/APIDemo/app/src/main/java/com/google/android/gms/snippets/AdmobSCARSnippets.java create mode 100644 kotlin/advanced/APIDemo/app/src/main/java/com/google/android/gms/snippets/AdManagerSCARSnippets.kt create mode 100644 kotlin/advanced/APIDemo/app/src/main/java/com/google/android/gms/snippets/AdmobSCARSnippets.kt diff --git a/java/advanced/APIDemo/app/src/main/java/com/google/android/gms/snippets/AdManagerSCARSnippets.java b/java/advanced/APIDemo/app/src/main/java/com/google/android/gms/snippets/AdManagerSCARSnippets.java new file mode 100644 index 000000000..1566edfed --- /dev/null +++ b/java/advanced/APIDemo/app/src/main/java/com/google/android/gms/snippets/AdManagerSCARSnippets.java @@ -0,0 +1,150 @@ +// Copyright 2025 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// https://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package com.google.android.gms.snippets; + +import android.content.Context; +import android.os.Bundle; +import android.util.Log; +import androidx.annotation.NonNull; +import com.google.ads.mediation.admob.AdMobAdapter; +import com.google.android.gms.ads.AdFormat; +import com.google.android.gms.ads.AdSize; +import com.google.android.gms.ads.admanager.AdManagerAdRequest; +import com.google.android.gms.ads.query.QueryInfo; +import com.google.android.gms.ads.query.QueryInfoGenerationCallback; + +/** Java code snippets for the developer guide. */ +public class AdManagerSCARSnippets { + + private static final String TAG = "AdManagerSCARSnippets"; + + public void loadNative(Context applicationContext, String adUnitID) { + // [START signal_request_native] + // Specify the "query_info_type" as "requester_type_8" to + // denote that the usage of QueryInfo is for Ad Manager S2S. + Bundle extras = new Bundle(); + extras.putString("query_info_type", "requester_type_8"); + + // Create a signal request for an ad. + AdManagerAdRequest signalRequest = + new AdManagerAdRequest.Builder() + .addNetworkExtrasBundle(AdMobAdapter.class, extras) + .setRequestAgent("request_agent") + .build(); + + // Generate and send the signal request. + QueryInfo.generate( + applicationContext, + AdFormat.NATIVE, + signalRequest, + adUnitID, + new QueryInfoGenerationCallback() { + @Override + public void onSuccess(@NonNull final QueryInfo queryInfo) { + Log.d(TAG, "QueryInfo string: " + queryInfo.getQuery()); + // TODO: Fetch the ad response using your generated query info. + } + + @Override + public void onFailure(@NonNull String error) { + Log.d(TAG, "QueryInfo failed with error: " + error); + // TODO: Handle error. + } + }); + // [END signal_request_native] + } + + public void loadBanner(Context applicationContext, String adUnitID) { + // [START signal_request_banner] + // Specify the "query_info_type" as "requester_type_8" to + // denote that the usage of QueryInfo is for Ad Manager S2S. + Bundle extras = new Bundle(); + extras.putString("query_info_type", "requester_type_8"); + + // Set the adaptive banner size. + AdSize size = AdSize.getCurrentOrientationInlineAdaptiveBannerAdSize(applicationContext, 320); + extras.putInt("adaptive_banner_w", size.getWidth()); + extras.putInt("adaptive_banner_h", size.getHeight()); + + // Create a signal request for an ad. + AdManagerAdRequest signalRequest = + new AdManagerAdRequest.Builder() + .addNetworkExtrasBundle(AdMobAdapter.class, extras) + .setRequestAgent("request_agent") + .build(); + + // Generate and send the signal request. + QueryInfo.generate( + applicationContext, + AdFormat.BANNER, + signalRequest, + adUnitID, + new QueryInfoGenerationCallback() { + @Override + public void onSuccess(@NonNull final QueryInfo queryInfo) { + Log.d(TAG, "QueryInfo string: " + queryInfo.getQuery()); + // TODO: Fetch the ad response using your generated query info. + } + + @Override + public void onFailure(@NonNull String error) { + Log.d(TAG, "QueryInfo failed with error: " + error); + // TODO: Handle error. + } + }); + // [END signal_request_banner] + } + + public void loadNativePlusBanner(Context applicationContext, String adUnitID) { + // [START signal_request_native_plus_banner] + // Specify the "query_info_type" as "requester_type_8" to + // denote that the usage of QueryInfo is for Ad Manager S2S. + Bundle extras = new Bundle(); + extras.putString("query_info_type", "requester_type_8"); + + // Set the adaptive banner size. + AdSize size = AdSize.getCurrentOrientationInlineAdaptiveBannerAdSize(applicationContext, 320); + extras.putInt("adaptive_banner_w", size.getWidth()); + extras.putInt("adaptive_banner_h", size.getHeight()); + + // Create a signal request for an ad. + AdManagerAdRequest signalRequest = + new AdManagerAdRequest.Builder() + .addNetworkExtrasBundle(AdMobAdapter.class, extras) + .setRequestAgent("request_agent") + .build(); + + // Generate and send the signal request. + QueryInfo.generate( + applicationContext, + AdFormat.NATIVE, + signalRequest, + adUnitID, + new QueryInfoGenerationCallback() { + @Override + public void onSuccess(@NonNull final QueryInfo queryInfo) { + Log.d(TAG, "QueryInfo string: " + queryInfo.getQuery()); + // TODO: Fetch the ad response using your generated query info. + } + + @Override + public void onFailure(@NonNull String error) { + Log.d(TAG, "QueryInfo failed with error: " + error); + // TODO: Handle error. + } + }); + // [END signal_request_native_plus_banner] + } +} diff --git a/java/advanced/APIDemo/app/src/main/java/com/google/android/gms/snippets/AdmobSCARSnippets.java b/java/advanced/APIDemo/app/src/main/java/com/google/android/gms/snippets/AdmobSCARSnippets.java new file mode 100644 index 000000000..04923c956 --- /dev/null +++ b/java/advanced/APIDemo/app/src/main/java/com/google/android/gms/snippets/AdmobSCARSnippets.java @@ -0,0 +1,134 @@ +// Copyright 2025 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// https://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package com.google.android.gms.snippets; + +import android.content.Context; +import android.os.Bundle; +import android.util.Log; +import androidx.annotation.NonNull; +import com.google.ads.mediation.admob.AdMobAdapter; +import com.google.android.gms.ads.AdFormat; +import com.google.android.gms.ads.AdSize; +import com.google.android.gms.ads.admanager.AdManagerAdRequest; +import com.google.android.gms.ads.query.QueryInfo; +import com.google.android.gms.ads.query.QueryInfoGenerationCallback; + +/** Java code snippets for the developer guide. */ +public class AdmobSCARSnippets { + + private static final String TAG = "AdmobSCARSnippets"; + + public void loadNative(Context applicationContext, String adUnitID) { + // [START signal_request_native] + // Create a signal request for an ad. + AdManagerAdRequest signalRequest = + new AdManagerAdRequest.Builder().setRequestAgent("request_agent").build(); + + // Generate and send the signal request. + QueryInfo.generate( + applicationContext, + AdFormat.NATIVE, + signalRequest, + adUnitID, + new QueryInfoGenerationCallback() { + @Override + public void onSuccess(@NonNull final QueryInfo queryInfo) { + Log.d(TAG, "QueryInfo string: " + queryInfo.getQuery()); + // TODO: Fetch the ad response using your generated query info. + } + + @Override + public void onFailure(@NonNull String error) { + Log.d(TAG, "QueryInfo failed with error: " + error); + // TODO: Handle error. + } + }); + // [END signal_request_native] + } + + public void loadBanner(Context applicationContext, String adUnitID) { + // [START signal_request_banner] + // Set the adaptive banner size. + AdSize size = AdSize.getCurrentOrientationInlineAdaptiveBannerAdSize(applicationContext, 320); + Bundle extras = new Bundle(); + extras.putInt("adaptive_banner_w", size.getWidth()); + extras.putInt("adaptive_banner_h", size.getHeight()); + + // Create a signal request for an ad. + AdManagerAdRequest signalRequest = + new AdManagerAdRequest.Builder() + .addNetworkExtrasBundle(AdMobAdapter.class, extras) + .setRequestAgent("request_agent") + .build(); + + // Generate and send the signal request. + QueryInfo.generate( + applicationContext, + AdFormat.BANNER, + signalRequest, + adUnitID, + new QueryInfoGenerationCallback() { + @Override + public void onSuccess(@NonNull final QueryInfo queryInfo) { + Log.d(TAG, "QueryInfo string: " + queryInfo.getQuery()); + // TODO: Fetch the ad response using your generated query info. + } + + @Override + public void onFailure(@NonNull String error) { + Log.d(TAG, "QueryInfo failed with error: " + error); + // TODO: Handle error. + } + }); + // [END signal_request_banner] + } + + public void loadNativePlusBanner(Context applicationContext, String adUnitID) { + // [START signal_request_native_plus_banner] + // Set the adaptive banner size. + AdSize size = AdSize.getCurrentOrientationInlineAdaptiveBannerAdSize(applicationContext, 320); + Bundle extras = new Bundle(); + extras.putInt("adaptive_banner_w", size.getWidth()); + extras.putInt("adaptive_banner_h", size.getHeight()); + + // Create a signal request for an ad. + AdManagerAdRequest signalRequest = + new AdManagerAdRequest.Builder() + .addNetworkExtrasBundle(AdMobAdapter.class, extras) + .setRequestAgent("request_agent") + .build(); + + // Generate and send the signal request. + QueryInfo.generate( + applicationContext, + AdFormat.NATIVE, + signalRequest, + adUnitID, + new QueryInfoGenerationCallback() { + @Override + public void onSuccess(@NonNull final QueryInfo queryInfo) { + Log.d(TAG, "QueryInfo string: " + queryInfo.getQuery()); + // TODO: Fetch the ad response using your generated query info. + } + + @Override + public void onFailure(@NonNull String error) { + Log.d(TAG, "QueryInfo failed with error: " + error); + // TODO: Handle error. + } + }); + // [END signal_request_native_plus_banner] + } +} diff --git a/kotlin/advanced/APIDemo/app/src/main/java/com/google/android/gms/snippets/AdManagerSCARSnippets.kt b/kotlin/advanced/APIDemo/app/src/main/java/com/google/android/gms/snippets/AdManagerSCARSnippets.kt new file mode 100644 index 000000000..76fcde102 --- /dev/null +++ b/kotlin/advanced/APIDemo/app/src/main/java/com/google/android/gms/snippets/AdManagerSCARSnippets.kt @@ -0,0 +1,151 @@ +// Copyright 2025 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// https://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +package com.google.android.gms.snippets + +import android.content.Context +import android.os.Bundle +import android.util.Log +import com.google.ads.mediation.admob.AdMobAdapter +import com.google.android.gms.ads.AdFormat +import com.google.android.gms.ads.AdSize +import com.google.android.gms.ads.admanager.AdManagerAdRequest +import com.google.android.gms.ads.query.QueryInfo +import com.google.android.gms.ads.query.QueryInfoGenerationCallback + +/** Kotlin code snippets for the developer guide. */ +class AdManagerSCARSnippets { + + fun loadNative(applicationContext: Context, adUnitID: String) { + // [START signal_request_native] + // Specify the "query_info_type" as "requester_type_8" to + // denote that the usage of QueryInfo is for Ad Manager S2S. + val extras = Bundle() + extras.putString("query_info_type", "requester_type_8") + + // Create a signal request for an ad. + val signalRequest: AdManagerAdRequest = + AdManagerAdRequest.Builder() + .addNetworkExtrasBundle(AdMobAdapter::class.java, extras) + .setRequestAgent("request_agent") + .build() + + // Generate and send the signal request. + QueryInfo.generate( + applicationContext, + AdFormat.NATIVE, + signalRequest, + adUnitID, + object : QueryInfoGenerationCallback() { + override fun onSuccess(queryInfo: QueryInfo) { + Log.d(TAG, "QueryInfo string: " + queryInfo.getQuery()) + // TODO: Fetch the ad response using your generated query info. + } + + override fun onFailure(error: String) { + Log.d(TAG, "QueryInfo failed with error: $error") + // TODO: Handle error. + } + }, + ) + // [END signal_request_native] + } + + fun loadBanner(applicationContext: Context, adUnitID: String) { + // [START signal_request_banner] + + // Specify the "query_info_type" as "requester_type_8" to + // denote that the usage of QueryInfo is for Ad Manager S2S. + val extras = Bundle() + extras.putString("query_info_type", "requester_type_8") + + // Set the adaptive banner size. + val size: AdSize = + AdSize.getCurrentOrientationInlineAdaptiveBannerAdSize(applicationContext, 320) + extras.putInt("adaptive_banner_w", size.width) + extras.putInt("adaptive_banner_h", size.height) + + // Create a signal request for an ad. + val signalRequest: AdManagerAdRequest = + AdManagerAdRequest.Builder() + .addNetworkExtrasBundle(AdMobAdapter::class.java, extras) + .setRequestAgent("request_agent") + .build() + + // Generate and send the signal request. + QueryInfo.generate( + applicationContext, + AdFormat.BANNER, + signalRequest, + adUnitID, + object : QueryInfoGenerationCallback() { + override fun onSuccess(queryInfo: QueryInfo) { + Log.d(TAG, "QueryInfo string: " + queryInfo.getQuery()) + // TODO: Fetch the ad response using your generated query info. + } + + override fun onFailure(error: String) { + Log.d(TAG, "QueryInfo failed with error: $error") + // TODO: Handle error. + } + }, + ) + // [END signal_request_banner] + } + + fun loadNativePlusBanner(applicationContext: Context, adUnitID: String) { + // [START signal_request_native_plus_banner] + + // Specify the "query_info_type" as "requester_type_8" to + // denote that the usage of QueryInfo is for Ad Manager S2S. + val extras = Bundle() + extras.putString("query_info_type", "requester_type_8") + + // Set the adaptive banner size. + val size: AdSize = + AdSize.getCurrentOrientationInlineAdaptiveBannerAdSize(applicationContext, 320) + extras.putInt("adaptive_banner_w", size.getWidth()) + extras.putInt("adaptive_banner_h", size.getHeight()) + + // Create a signal request for an ad. + val signalRequest: AdManagerAdRequest = + AdManagerAdRequest.Builder() + .addNetworkExtrasBundle(AdMobAdapter::class.java, extras) + .setRequestAgent("request_agent") + .build() + + // Generate and send the signal request. + QueryInfo.generate( + applicationContext, + AdFormat.NATIVE, + signalRequest, + adUnitID, + object : QueryInfoGenerationCallback() { + override fun onSuccess(queryInfo: QueryInfo) { + Log.d(TAG, "QueryInfo string: " + queryInfo.getQuery()) + // TODO: Fetch the ad response using your generated query info. + } + + override fun onFailure(error: String) { + Log.d(TAG, "QueryInfo failed with error: $error") + // TODO: Handle error. + } + }, + ) + // [END signal_request_native_plus_banner] + } + + companion object { + private const val TAG = "AdManagerSCARSnippets" + } +} diff --git a/kotlin/advanced/APIDemo/app/src/main/java/com/google/android/gms/snippets/AdmobSCARSnippets.kt b/kotlin/advanced/APIDemo/app/src/main/java/com/google/android/gms/snippets/AdmobSCARSnippets.kt new file mode 100644 index 000000000..935657ca2 --- /dev/null +++ b/kotlin/advanced/APIDemo/app/src/main/java/com/google/android/gms/snippets/AdmobSCARSnippets.kt @@ -0,0 +1,133 @@ +// Copyright 2025 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// https://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +package com.google.android.gms.snippets + +import android.content.Context +import android.os.Bundle +import android.util.Log +import com.google.ads.mediation.admob.AdMobAdapter +import com.google.android.gms.ads.AdFormat +import com.google.android.gms.ads.AdSize +import com.google.android.gms.ads.admanager.AdManagerAdRequest +import com.google.android.gms.ads.query.QueryInfo +import com.google.android.gms.ads.query.QueryInfoGenerationCallback + +/** Kotlin code snippets for the developer guide. */ +class AdmobSCARSnippets { + + fun loadNative(applicationContext: Context, adUnitID: String) { + // [START signal_request_native] + // Create a signal request for an ad. + val signalRequest: AdManagerAdRequest = + AdManagerAdRequest.Builder().setRequestAgent("request_agent").build() + + // Generate and send the signal request. + QueryInfo.generate( + applicationContext, + AdFormat.NATIVE, + signalRequest, + adUnitID, + object : QueryInfoGenerationCallback() { + override fun onSuccess(queryInfo: QueryInfo) { + Log.d(TAG, "QueryInfo string: " + queryInfo.getQuery()) + // TODO: Fetch the ad response using your generated query info. + } + + override fun onFailure(error: String) { + Log.d(TAG, "QueryInfo failed with error: $error") + // TODO: Handle error. + } + }, + ) + // [END signal_request_native] + } + + fun loadBanner(applicationContext: Context, adUnitID: String) { + // [START signal_request_banner] + // Set the adaptive banner size. + val size: AdSize = + AdSize.getCurrentOrientationInlineAdaptiveBannerAdSize(applicationContext, 320) + val extras = Bundle() + extras.putInt("adaptive_banner_w", size.width) + extras.putInt("adaptive_banner_h", size.height) + + // Create a signal request for an ad. + val signalRequest: AdManagerAdRequest = + AdManagerAdRequest.Builder() + .setRequestAgent("request_agent") + .addNetworkExtrasBundle(AdMobAdapter::class.java, extras) + .build() + + // Generate and send the signal request. + QueryInfo.generate( + applicationContext, + AdFormat.BANNER, + signalRequest, + adUnitID, + object : QueryInfoGenerationCallback() { + override fun onSuccess(queryInfo: QueryInfo) { + Log.d(TAG, "QueryInfo string: " + queryInfo.getQuery()) + // TODO: Fetch the ad response using your generated query info. + } + + override fun onFailure(error: String) { + Log.d(TAG, "QueryInfo failed with error: $error") + // TODO: Handle error. + } + }, + ) + // [END signal_request_banner] + } + + fun loadNativePlusBanner(applicationContext: Context, adUnitID: String) { + // [START signal_request_native_plus_banner] + // Set the adaptive banner size. + val size: AdSize = + AdSize.getCurrentOrientationInlineAdaptiveBannerAdSize(applicationContext, 320) + val extras = Bundle() + extras.putInt("adaptive_banner_w", size.width) + extras.putInt("adaptive_banner_h", size.height) + + // Create a signal request for an ad. + val signalRequest: AdManagerAdRequest = + AdManagerAdRequest.Builder() + .setRequestAgent("request_agent") + .addNetworkExtrasBundle(AdMobAdapter::class.java, extras) + .build() + + // Generate and send the signal request. + QueryInfo.generate( + applicationContext, + AdFormat.NATIVE, + signalRequest, + adUnitID, + object : QueryInfoGenerationCallback() { + override fun onSuccess(queryInfo: QueryInfo) { + Log.d(TAG, "QueryInfo string: " + queryInfo.getQuery()) + // TODO: Fetch the ad response using your generated query info. + } + + override fun onFailure(error: String) { + Log.d(TAG, "QueryInfo failed with error: $error") + // TODO: Handle error. + } + }, + ) + // [END signal_request_native_plus_banner] + } + + companion object { + private const val TAG = "AdmobSCARSnippets" + } +}