本頁面將說明目前和新一代行動廣告 SDK 之間,在載入及顯示橫幅廣告時的差異。
Next Gen Mobile Ads 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) } } Javaimport 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); } } |
Next Gen |
如要載入橫幅廣告,請按照下列步驟操作:
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 } }, ) } } Javaimport 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; } }); } } |
查看橫幅廣告重新整理回呼
Next Gen Mobile Ads SDK 包含自動橫幅廣告刷新事件的監聽器:
目前 |
Mobile Ads 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. } } JavaadView.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. } }); |
Next Gen |
在載入的橫幅廣告上設定重新整理回呼,以便監聽廣告重新整理事件。 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. } }); |