在 Android 使用原生廣告範本

想輕鬆整合原生廣告的發佈商,可以善用自訂 Audience Network 原生廣告範本。自訂原生廣告的大小、顏色及字體,以符合您應用程式的外觀與風格。

確保您在開始操作前,已經先行參閱 Audience Network 新手指南Android 新手指南

若要善用本指南,請先了解如何建置原生廣告原生橫額廣告

第 1 步:建置範本

第 2 步:進階自訂

為 Audience Network SDK 執行初始化

Android Audience Network SDK 5.1 版已加入此方法。

若是 5.3.0 或更高版本,您必須初始化 Android 版 Audience Network SDK如欲了解有關初始化 Android 版 Audience Network SDK 的方法,請參閱此文件

在建立廣告物件及載入廣告前,請為 Audience Network SDK 執行初始化。我們建議您在啟動應用程式時執行此動作。

public class YourApplication extends Application {
    ...
    @Override
    public void onCreate() {
        super.onCreate();
        // Initialize the Audience Network SDK
        AudienceNetworkAds.initialize(this);       
    }
    ...
}

第 1 步:建置範本

在動態類別頂端加入下列程式碼,以匯入 Facebook 廣告 SDK:

import com.facebook.ads.*;

建置原生廣告

private NativeAd nativeAd;

public class NativeAdActivity extends Activity {
  @Override
  public void onCreate(Bundle savedInstanceState) {
    ...

    // Instantiate an NativeAd object. 
    // NOTE: the placement ID will eventually identify this as your App, you can ignore it for
    // now, while you are testing and replace it later when you have signed up.
    // While you are using this temporary code you will only get test ads and if you release
    // your code like this to the Google Play your users will not receive ads (you will get a no fill error).
    nativeAd = new NativeAd(this, "YOUR_PLACEMENT_ID");
    NativeAdListener nativeAdListener = new NativeAdListener() {
        ...
    };
    
    // Initiate a request to load an ad.
    nativeAd.loadAd(
            nativeAd.buildLoadAdConfig()
                    .withAdListener(nativeAdListener)
                    .withMediaCacheFlag(NativeAdBase.MediaCacheFlag.ALL)
                    .build());
  }
}        

如果您想廣告在載入後儘快顯示,可以在 AdListeneronAdLoaded() 方法中顯示自訂範本,並將之加入您的容器。

private NativeAd nativeAd;
...
  NativeAdListener nativeAdListener = new NativeAdListener() {
    ...
    @Override
    public void onAdLoaded(Ad ad) {
      // Render the Native Ad Template
      View adView = NativeAdView.render(MainActivity.this, nativeAd);
      LinearLayout nativeAdContainer = (LinearLayout) findViewById(R.id.native_ad_container);
      // Add the Native Ad View to your ad container. 
      // The recommended dimensions for the ad container are:
      // Width: 280dp - 500dp
      // Height: 250dp - 500dp
      // The template, however, will adapt to the supplied dimensions.
      nativeAdContainer.addView(adView, new LayoutParams(MATCH_PARENT, 800));  
    }
   ...
  }

如果廣告在 loaded 後沒有立即顯示,開發人員就需要檢查相應廣告是否已經無效。成功載入後,廣告的有效期為 60 mins。如果您顯示的廣告屬於 invalidated 狀態,便不會得到收取款項的 paid 狀態。請查看程式碼範例,以了解延遲顯示廣告的場景

執行程式碼後,您應該就可以看到下列畫面:




建置原生橫額廣告

private NativeBannerAd mNativeBannerAd;
...

  @Override
  public void onCreate(Bundle savedInstanceState) {
    ...

    // Instantiate an NativeBannerAd object. 
    // NOTE: the placement ID will eventually identify this as your App, you can ignore it for
    // now, while you are testing and replace it later when you have signed up.
    // While you are using this temporary code you will only get test ads and if you release
    // your code like this to the Google Play your users will not receive ads (you will get a no fill error).
    mNativeBannerAd = new NativeBannerAd(this, "YOUR_PLACEMENT_ID");
    NativeAdListener nativeAdListener = new NativeAdListener() {
        ...
    };
    
    // Initiate a request to load an ad.
    mNativeBannerAd.loadAd(
            mNativeBannerAd.buildLoadAdConfig()
                    .withAdListener(nativeAdListener)
                    .build());
  }
}        

如果您想廣告在載入後儘快顯示,可以在 AdListeneronAdLoaded() 方法中顯示自訂範本,並將之加入您的容器。

@Override
public void onAdLoaded(Ad ad) {
  // Render the Native Banner Ad Template
  View adView = NativeBannerAdView.render(MainActivity.this, mNativeBannerAd, NativeBannerAdView.Type.HEIGHT_100);
  LinearLayout nativeBannerAdContainer = (LinearLayout) findViewById(R.id.native_banner_ad_container);
  // Add the Native Banner Ad View to your ad container
  nativeBannerAdContainer.addView(adView);  
}

如果廣告在 loaded 後沒有立即顯示,開發人員就需要檢查相應廣告是否已經無效。成功載入後,廣告的有效期為 60 mins。如果您顯示的廣告屬於 invalidated 狀態,便不會得到收取款項的 paid 狀態。請查看程式碼範例,以了解延遲顯示廣告的場景

執行程式碼後,您應該就可以看到下列畫面:



自訂原生橫額廣告格式共有 3 種範本:

範本檢視類型 高度 闊度 包含屬性

NativeBannerAdView.Type .HEIGHT_50

50dp

彈性闊度

圖示、標題、背景資料及 CTA 按鈕

NativeBannerAdView.Type .HEIGHT_100

100dp

彈性闊度

圖示、標題、背景資料及 CTA 按鈕

NativeBannerAdView.Type .HEIGHT_120

120dp

彈性闊度

圖示、標題、背景資料、說明及呼籲字句按鈕

第 2 步:進階自訂

若使用原生自訂範本,您就可以自訂下列素材:

  • 高度
  • 闊度
  • 背景顏色
  • 標題顏色
  • 標題字體
  • 說明顏色
  • 說明字體
  • 按鈕顏色
  • 按鈕標題顏色
  • 按鈕標題字體
  • 按鈕邊框顏色

如果您想自訂某些素材,建議採用符合您應用程式版面與主題的設計。

您需要建立屬性物件,並提供已載入的原生廣告或原生橫額廣告以顯示這些素材:

如果您要使用 16 進制顏色,請使用 Color.parseColor()

原生廣告範例。

建立 NativeAdViewAttributes 物件並在 NativeAdView.render() 以引數形式提供:

@Override
public void onAdLoaded(Ad ad) {
  // Set the Native Ad attributes
  NativeAdViewAttributes viewAttributes = new NativeAdViewAttributes()
    .setBackgroundColor(Color.BLACK)
    .setTitleTextColor(Color.WHITE)
    .setDescriptionTextColor(Color.LTGRAY)
    .setButtonColor(Color.WHITE)
    .setButtonTextColor(Color.BLACK);
  
  View adView = NativeAdView.render(MainActivity.this, nativeAd, viewAttributes);

  LinearLayout nativeAdContainer = (LinearLayout) findViewById(R.id.native_ad_container);
  // Add the Native Ad View to your ad container
  nativeAdContainer.addView(adView, new LayoutParams(MATCH_PARENT, 800));
}

以上程式碼將顯示廣告,如下所示:




原生橫額廣告範例。

建立 NativeAdViewAttributes 物件並在 NativeBannerAdView.render() 以引數形式提供:

@Override
public void onAdLoaded(Ad ad) {
  // Set the NativeAd attributes
  NativeAdViewAttributes viewAttributes = new NativeAdViewAttributes()
    .setBackgroundColor(Color.BLACK)
    .setTitleTextColor(Color.WHITE)
    .setDescriptionTextColor(Color.LTGRAY)
    .setButtonColor(Color.WHITE)
    .setButtonTextColor(Color.BLACK);   
  
  View adView = NativeBannerAdView.render(MainActivity.this, nativeAd, NativeBannerAdView.Type.HEIGHT_100, viewAttributes);

  LinearLayout nativeBannerAdContainer = (LinearLayout) findViewById(R.id.native_banner_ad_container);
  // Add the Native Banner Ad View to your ad container
  nativeBannerAdContainer.addView(adView);  
}

以上程式碼將顯示廣告,如下所示:

後續步驟