この記事では、次の手順でFacebookの Audience Network SDK に表示されるネイティブ広告アセットを取得するプロセスについて説明します。
適切な SDK がインストールされていることを確認する
Mobile SDK と Xandr-FAN-Demand パッケージをインストールする必要があります。 リリースの詳細については、リリース ページを参照してください。 プロジェクトの 依存関係 セクションで、 build.gradle 次の 2 行を追加します。
dependencies {
implementation 'com.appnexus.opensdk:appnexus-sdk:[8,9)'
implementation 'com.appnexus.opensdk.csr:appnexus-facebook-csr:[8,9)'
}
Facebookの Audience Network SDK を初期化する
アプリのライフサイクルの早い段階で、次のように初期化 Audience Network します。
AudienceNetworkAds.buildInitSettings(this).withInitListener(new AudienceNetworkAds.InitListener() {
@Override
public void onInitialized(AudienceNetworkAds.InitResult initResult) {
// do something, load ad or else
}
}).initialize();
注:
カスタム ネイティブ ビューでAudience Networkネイティブ広告を正常に実装するには、メインアセットの MediaView を含める必要があります。
ネイティブ バナー広告レイアウトを作成する
アプリのアクティビティ レイアウト activity_main.xml で、ネイティブ広告のコンテナーを追加します。 このコンテナーの型 com.facebook.ads.NativeAdLayoutは である必要があります。これは、 の上のラッパーです FrameLayout。 このラッパーは、Mobile SDK が広告の上にネイティブ Ad Reporting Flow をレンダリングできるようにする追加の機能を提供します。
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="https://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
...
<com.facebook.ads.NativeAdLayout
android:id="@+id/native_banner_ad_container"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true" />
...
</RelativeLayout>
ネイティブ バナー広告のカスタム レイアウトを設定するためのFacebookによって提供されるサンプル コードを表示するには、ここをクリックします。
ネイティブ広告リクエストを作成し、広告を読み込む
注:
応答を受け取るまで、要求への参照を保持します。
から返される応答の種類を確認します NativeAdRequest。 応答の種類が の場合は、 FBNativeBannerAdResponse最初の応答を に FBNativeBannerAdResponse キャストし、 メソッドを inflateAndRegisterFB 呼び出します。 その他のネイティブ広告の種類については、 を呼び出します inflateAndRegisterNonFB。
NativeAdRequest request = new NativeAdRequest(MainActivity.this, "17823252");
request.setListener(new NativeAdRequestListener() {
@Override
public void onAdLoaded(NativeAdResponse response) {
Log.d("NativeBanner", "loaded");
MainActivity.this.response = response;
if (response instanceof FBNativeBannerAdResponse) {
FBNativeBannerAdResponse fbResponse = (FBNativeBannerAdResponse) response;
inflateAndRegisterFB(fbResponse);
} else {
inflateAndRegisterNonFB(response);
}
}
@Override
public void onAdFailed(ResultCode errorcode) {
Log.d("NativeBanner", "failed");
}
});
request.loadAd();
ネイティブ広告を膨らませて登録する
NativeAdRequest を作成して広告を読み込むプロセスでは、応答で返されるネイティブ広告オブジェクトに応じて、次のいずれかの方法が使用されます。
inflateAndRegisterFBinflateAndRegisterNonFB
これらのメソッドは、登録プロセスを除いて関数内で同じです。 応答で返されるオブジェクトが である場合、 FBNativeBannerAdResponse 応答は メソッドを registerView 呼び出して広告を登録します。 オブジェクトでない場合、 FBNativeBannerAdResponse 応答はを呼び出 NativeAdSDK.registerTracking して広告を登録します。
inflateAndRegisterFB 例
[アクションの呼び出し] ボタンの [アクションの呼び出し] テキストを取得して表示します。
Button nativeAdCallToAction = adView.findViewById(R.id.native_ad_call_to_action);
nativeAdCallToAction.setText(fbResponse.getCallToAction());
ボタンテキストが取得されたら、ネイティブ広告を登録して、クリックアクションとインプレッショントラッキングを有効にすることができます。
fbResponse.registerView(adView, nativeAdIconView, clickableViews, new NativeAdEventListener() {
@Override
public void onAdWasClicked() {
}
@Override
public void onAdWillLeaveApplication() {
}
@Override
public void onAdWasClicked(String clickUrl, String fallbackURL) {
}
});
inflateAndRegisterNonFB 例
[アクションの呼び出し] ボタンに表示するアクション呼び出しテキストを取得し、そのテキストを表示します。
Button nativeAdCallToAction = adView.findViewById(R.id.native_ad_call_to_action);
nativeAdCallToAction.setText(response.getCallToAction());
ボタンテキストが取得されたら、ネイティブ広告を登録して、クリックアクションとインプレッショントラッキングを有効にすることができます。
NativeAdSDK.registerTracking(response, adView, clickableViews, new NativeAdEventListener() {
@Override
public void onAdWasClicked() {
}
@Override
public void onAdWillLeaveApplication() {
}
@Override
public void onAdWasClicked(String clickUrl, String fallbackURL) {
}
});
元のネイティブ オブジェクトにアクセスする
パブリッシャーは、 メソッドを使用して元のネイティブ オブジェクトに getNativeElements アクセスできます。
nativeAdCallToAction.setText(fbResponse.getCallToAction());
nativeAdSocialContext.setText(((NativeAdBase)
response.getNativeElements().get(NativeAdResponse.NATIVE_ELEMENT_OBJECT)).getAdSocialContext());
ビューの登録を解除する
アプリが広告の表示を終了したら、ビューの登録を解除する必要があります。
if (this.response != null) {
if (this.response instanceof FBNativeBannerAdResponse) {
FBNativeBannerAdResponse fbresponse = (FBNativeBannerAdResponse) response;
fbresponse.unregisterView();
this.response = null;
} else {
NativeAdSDK.unRegisterTracking(nativeAdView);
}
}
アプリの例
Xandr では、Github リポジトリに サンプル アプリ が用意されています。