이 페이지에서는 현재 SDK와 Google 모바일 광고 SDK (베타) 간의 배너 광고 로드 및 표시의 차이점을 설명합니다.
Google 모바일 광고 SDK (베타)에서는 배너 광고 객체 (BannerAd
)와 View
간의 명확한 분리가 도입되었습니다. 이 변경사항의 주요 영향은 광고가 로드될 때까지 배너 광고 뷰를 사용할 수 없다는 것입니다.
배너 뷰 컨테이너가 정의된 뷰 계층 구조가 있다고 가정해 보겠습니다.
<FrameLayout
android:id="@+id/banner_view_container"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:layout_alignParentBottom="true" />
현재 |
배너 광고를 로드하려면 다음 단계를 따르세요.
Kotlinimport com.google.android.gms.ads.AdView class MainActivity : AppCompatActivity() { private lateinit var binding: ActivityMainBinding private lateinit var adView: AdView override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) binding = ActivityMainBinding.inflate(layoutInflater) setContentView(binding.root) // Step 1 - Create an AdView object with ad unit ID and size. adView = AdView(this) adView.adUnitId = "AD_UNIT_ID" adView.setAdSize( AdSize.getCurrentOrientationAnchoredAdaptiveBannerAdSize(this, 320) ) // Step 2 - Add the AdView to view hierarchy. binding.bannerViewContainer.addView(adView) // Step 3 - Load the ad. val adRequest = AdRequest.Builder().build() adView.loadAd(adRequest) } } 자바import com.google.android.gms.ads.AdRequest; import com.google.android.gms.ads.AdSize; import com.google.android.gms.ads.AdView; public class MainActivity extends AppCompatActivity { private ActivityMainBinding binding; private AdView adView; protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); binding = ActivityMainBinding.inflate(getLayoutInflater()); setContentView(binding.getRoot()); // Step 1 - Create an AdView object with ad unit ID and size. adView = new AdView(this); adView.setAdUnitId("AD_UNIT_ID"); adView.setAdSize(AdSize.getCurrentOrientationAnchoredAdaptiveBannerAdSize(this, 320)); // Step 2 - Add the AdView to view hierarchy. binding.bannerViewContainer.addView(adView); // Step 3 - Load the ad. AdRequest adRequest = new AdRequest.Builder().build(); adView.loadAd(adRequest); } } |
Google 모바일 광고 SDK (베타) |
배너 광고를 로드하려면 다음 단계를 따르세요.
Kotlinimport com.google.android.libraries.ads.mobile.sdk.banner.AdSize import com.google.android.libraries.ads.mobile.sdk.banner.BannerAd import com.google.android.libraries.ads.mobile.sdk.banner.BannerAdEventCallback import com.google.android.libraries.ads.mobile.sdk.banner.BannerAdRefreshCallback import com.google.android.libraries.ads.mobile.sdk.banner.BannerAdRequest import com.google.android.libraries.ads.mobile.sdk.common.AdLoadCallback import com.google.android.libraries.ads.mobile.sdk.common.LoadAdError class MainActivity : AppCompatActivity() { private var bannerAd: BannerAd? = null private lateinit var binding: ActivityMainBinding private lateinit var adSize: AdSize private lateinit var bannerViewContainer: FrameLayout override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) binding = ActivityMainBinding.inflate(layoutInflater) setContentView(binding.root) // Give the banner container a placeholder height to avoid a sudden layout // shifts when the ad loads. adSize = AdSize.getCurrentOrientationAnchoredAdaptiveBannerAdSize(this, 320) bannerViewContainer = binding.bannerViewContainer val bannerLayoutParams = bannerViewContainer.layoutParams bannerLayoutParams.height = adSize.getHeightInPixels(requireContext()) bannerViewContainer.layoutParams = bannerLayoutParams // Step 1 - Create a BannerAdRequest object with ad unit ID and size. val adRequest = BannerAdRequest.Builder("AD_UNIT_ID", adSize).build() // Step 2 - Load the ad. BannerAd.load( adRequest, object : AdLoadCallback<BannerAd> { override fun onAdLoaded(ad: BannerAd) { // Assign the loaded ad to the BannerAd object. bannerAd = ad // Step 3 - Call BannerAd.getView() to get the View and add it // to view hierarchy on the UI thread. activity?.runOnUiThread { binding.bannerViewContainer.addView(ad.getView(requireActivity())) } } override fun onAdFailedToLoad(loadAdError: LoadAdError) { bannerAd = null } }, ) } } 자바import com.google.android.libraries.ads.mobile.sdk.banner.AdSize; import com.google.android.libraries.ads.mobile.sdk.banner.BannerAd; import com.google.android.libraries.ads.mobile.sdk.banner.BannerAdRefreshCallback; import com.google.android.libraries.ads.mobile.sdk.banner.BannerAdRequest; import com.google.android.libraries.ads.mobile.sdk.common.AdLoadCallback; import com.google.android.libraries.ads.mobile.sdk.common.LoadAdError; public class MainActivity extends AppCompatActivity { private BannerAd bannerAd; private ActivityMainBinding binding; private AdSize adSize; private FrameLayout bannerViewContainer; protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); binding = ActivityMainBinding.inflate(getLayoutInflater()); setContentView(binding.getRoot()); // Give the banner container a placeholder height to avoid a sudden layout // shifts when the ad loads. adSize = AdSize.getCurrentOrientationAnchoredAdaptiveBannerAdSize(this, 320); bannerViewContainer = binding.bannerViewContainer; LayoutParams bannerLayoutParams = bannerViewContainer.getLayoutParams(); bannerLayoutParams.height = adSize.getHeightInPixels(this); bannerViewContainer.setLayoutParams(bannerLayoutParams); // Step 1 - Create a BannerAdRequest object with ad unit ID and size. BannerAdRequest adRequest = new BannerAdRequest.Builder("AD_UNIT_ID", adSize).build(); // Step 2 - Load the ad. BannerAd.load( adRequest, new AdLoadCallback<BannerAd>() { @Override public void onAdLoaded(@NonNull BannerAd ad) { // Assign the loaded ad to the BannerAd object. bannerAd = ad; // Step 3 - Call BannerAd.getView() to get the View and add it // to view hierarchy on the UI thread. runOnUiThread( () -> binding.bannerViewContainer.addView(ad.getView(MainActivity.this))); } @Override public void onAdFailedToLoad(@NonNull LoadAdError adError) { bannerAd = null; } }); } } |
배너 새로고침 콜백 검토
Google 모바일 광고 SDK (베타)에는 자동 배너 광고 새로고침을 위한 리스너가 포함되어 있습니다.
현재 |
모바일 광고 SDK는 KotlinadView.adListener = object : AdListener() { override fun onAdLoaded() { // Called when an ad has loaded. } override fun onAdFailedToLoad(loadAdError : LoadAdError) { // Called when ad fails to load. } } 자바adView.setAdListener( new AdListener() { @Override public void onAdLoaded() { // Called when an ad has loaded. } @Override public void onAdFailedToLoad(@NonNull LoadAdError loadAdError) { // Called when ad fails to load. } }); |
Google 모바일 광고 SDK (베타) |
로드된 배너 광고에서 새로고침 콜백을 설정하여 광고 새로고침 이벤트를 수신합니다. KotlinBannerAd.load( BannerAdRequest.Builder("AD_UNIT_ID", adSize).build(), object : AdLoadCallback<BannerAd> { override fun onAdLoaded(ad: BannerAd) { // Called when an ad has loaded. ad.adEventCallback = object : BannerAdEventCallback { } ad.bannerAdRefreshCallback = object : BannerAdRefreshCallback { // Set the ad refresh callbacks. override fun onAdRefreshed() { // Called when the ad refreshes. } override fun onAdFailedToRefresh(loadAdError: LoadAdError) { // Called when the ad fails to refresh. } } bannerAd = ad } override fun onAdFailedToLoad(loadAdError: LoadAdError) { // Called when ad fails to load. } } ) JavaBannerAd.load( new BannerAdRequest.Builder("AD_UNIT_ID", adSize).build(), new AdLoadCallback<BannerAd>() { @Override public void onAdLoaded(@NonNull BannerAd ad) { // Called when an ad has loaded. ad.setAdEventCallback(new BannerAdEventCallback() {}); ad.setBannerAdRefreshCallback( // Set the ad refresh callbacks. new BannerAdRefreshCallback() { @Override public void onAdRefreshed() { // Called when the ad refreshes. } @Override public void onAdFailedToRefresh(@NonNull LoadAdError adError) { // Called when the ad fails to refresh. } }); bannerAd = ad; } @Override public void onAdFailedToLoad(@NonNull LoadAdError adError) { // Called when ad fails to load. } }); |