Skip to content

バナー型広告_実装手順

fan-w-suzuki edited this page May 15, 2019 · 27 revisions

事前準備

まだ広告枠作成、SDKダウンロードを行っていない場合、下記リンク先を参照してください。

SDKの組み込み

プロジェクトにSDKを追加していない場合、以下の方法でSDKを追加してください。

広告サイズについて

表示する広告サイズについては以下を参照してください。

広告ビューの配置 バナー型広告

レイアウトファイルで固定配置する場合

ここではレイアウトファイルのみで設定する場合の方法を説明します。
付属の NendSample プロジェクト内の『XmlLayoutActivity』『XmlResourceActivity』と同様です。

該当する画面のレイアウトファイル内に
『net.nend.android.NendAdView』のタグを追加し
『apiKey』と『spotID』の値を挿入してください。

重要

バージョン5.0.0以降のSDKでは必ずレイアウトxmlにて 名前空間(xmlns)を定義して各Attributeへ値をセットしてください。

サンプル1

<net.nend.android.NendAdView
    android:id="@+id/nend"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    nendsdk:NendApiKey="[管理画面より発行された apiKey]"
    nendsdk:NendSpotId="[管理画面より発行された spotID]" />

サンプル2
画面中央最下部への設置例
詳しいレイアウト方法は android ドキュメントをご確認ください。

<LinearLayout
    xmlns:nendsdk="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:gravity="center|bottom">
    <net.nend.android.NendAdView
        android:id="@+id/nend"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        nendsdk:NendApiKey="[管理画面より発行された apiKey]"
        nendsdk:NendSpotId="[管理画面より発行された spotID]" />
</LinearLayout>

サンプル3
Resourceファイルを使用して『apiKey』『spotID』を指定できます。
『apiKey』は@string、『spotID』は@integerで定義してください。

<net.nend.android.NendAdView
    android:id="@+id/nend"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    nendsdk:NendApiKey="@string/リソースファイルに設定したID"
    nendsdk:NendSpotId="@integer/リソースファイルに設定したID" />

プログラムから動的に呼び出す場合

ここではプログラムのみで設定する場合の方法を説明します。 付属の NendSample プロジェクト内の『JavaCallLinearActivity』『NoXmlLinearActivity』 と同様です。
プログラムから動的に呼び出す場合、広告取得のために NendAdView オブジェクトの loadAd()メソッドを呼び出します。

kotlin
class NoXmlLinearActivity : AppCompatActivity() {

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.no_xml_linear)

        val rootLayout = findViewById(R.id.root)

        // 1 NendAdView をインスタンス化
        val nendAdView = NendAdView(this, [発行された spotID], "[発行された apiKey]")
        // 中央下部表示の場合
        rootLayout.gravity = Gravity.CENTER_HORIZONTAL or Gravity.BOTTOM
        // 2 NendAdView をレイアウトに追加
        rootLayout.addView(nendAdView,
                LinearLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT))
        // 3 広告の取得を開始
        nendAdView.loadAd()
    }
}
Java
public class JavaCallLinearActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.javacall_linear);

        LinearLayout rootLayout = findViewById(R.id.root);

        // 1 NendAdView をインスタンス化
        NendAdView nendAdView = new NendAdView(this, [発行された spotID], "[発行された apiKey]");
        // 中央下部表示の場合
        rootLayout.setGravity(Gravity.CENTER_HORIZONTAL | Gravity.BOTTOM);
        // 2 NendAdView をレイアウトに追加
        rootLayout.addView(nendAdView, new LinearLayout.LayoutParams( LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT));
        // 3 広告の取得を開始
        nendAdView.loadAd();
    }
}

イベントリスナ

下記のように、必要に応じて NendAdViewに NendAdListener、または NendAdInformationListener を登録する事で広告のロードやクリックに関する通知を受け取る事ができます。

SDKver3.1.0 からインフォメーションボタンクリック通知メソッドが追加されました。NendAdInformationListener を使用することで通知を受け取れます。インフォメーションボタンクリック通知が必要無い場合は NendAdListener を引き続きお使いいただけます。

(1) NendAdListenerを使用するサンプル
付属の NendSample プロジェクト内の『JavaCallWithListenerActivity』『NoXmlWithListenerActivity』と同様です。

Kotlin
class NoXmlWithListenerActivity : AppCompatActivity(), NendAdListener { // 1) implements

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.no_xml_relative)

        val rootLayout = findViewById(R.id.root)

        val nendAdView = NendAdView(this, [発行された spotID], "[発行された apiKey]")
        // 2) リスナーを登録
        nendAdView.setListener(this)
        // 中央上部表示の場合
        val params = RelativeLayout.LayoutParams(LayoutParams.WRAP_CONTENT,
                LayoutParams.WRAP_CONTENT).apply {
            addRule(RelativeLayout.CENTER_HORIZONTAL)
            addRule(RelativeLayout.ALIGN_PARENT_TOP)
        }

        rootLayout.addView(nendAdView, params)
        nendAdView.loadAd()
    }

    // 3)  通知を受けるメソッドを用意
    /** 受信エラー通知  */
    override fun onFailedToReceiveAd(nendAdView: NendAdView) {
        Toast.makeText(applicationContext, "onFailedToReceiveAd", Toast.LENGTH_LONG).show()
    }

    /** 受信成功通知  */
    override fun onReceiveAd(nendAdView: NendAdView) {
        Toast.makeText(applicationContext, "onReceiveAd", Toast.LENGTH_LONG).show()
    }

    /** クリック通知  */
    override fun onClick(nendAdView: NendAdView) {
        Toast.makeText(applicationContext, "onClick", Toast.LENGTH_LONG).show()
    }

    /** 復帰通知  */
    override fun onDismissScreen(arg0: NendAdView) {
        Toast.makeText(applicationContext, "onDismissScreen", Toast.LENGTH_LONG).show()
    }
}
Java
public class JavaCallWithListenerActivity extends Activity implements NendAdListener { // 1) implements

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.javacall_relative);

        RelativeLayout rootLayout = findViewById(R.id.root);

        NendAdView nendAdView = new NendAdView(this , [発行された spotID], "[発行された apiKey]");
        // 2 リスナーを登録
        nendAdView.setListener(this);

        RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams( LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT);
        params.addRule(RelativeLayout.CENTER_HORIZONTAL);
        params.addRule(RelativeLayout.ALIGN_PARENT_BOTTOM);

        rootLayout.addView(nendAdView, params);
        nendAdView.loadAd();
    }

    // 3 通知を受けるメソッドを用意
    // 受信エラー通知
    public void onFailedToReceiveAd(NendAdView nendAdView) {
        Toast.makeText(getApplicationContext(), "onFailedToReceiveAd", Toast.LENGTH_LONG).show();
    }
    // 受信成功通知
    public void onReceiveAd(NendAdView nendAdView) {
        Toast.makeText(getApplicationContext(), "onReceiveAd", Toast.LENGTH_LONG).show();
    }
    // クリック通知
    public void onClick(NendAdView nendAdView) {
        Toast.makeText(getApplicationContext(), "onClick", Toast.LENGTH_LONG).show();
    }
    // 復帰通知
    public void onDismissScreen(NendAdView nendAdView) {
        Toast.makeText(getApplicationContext(), "onDismissScreen", Toast.LENGTH_LONG).show();
    }
}

(2) NendAdInformationListenerを使用するサンプル
付属の NendSample プロジェクト内の『XmlWithListenerActivity』と同様です。

Kotlin
class XmlWithListenerActivity : AppCompatActivity() {

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.xml_layout)

        val nendAdView = findViewById(R.id.nend)
        nendAdView.setListener(object : NendAdInformationListener {
            override fun onReceiveAd(adView: NendAdView) {
                Toast.makeText(applicationContext, "広告取得成功!", Toast.LENGTH_SHORT).show()
            }

            override fun onFailedToReceiveAd(adView: NendAdView) {
                Toast.makeText(applicationContext, "広告取得失敗!", Toast.LENGTH_SHORT).show()
            }

            override fun onClick(adView: NendAdView) {
                Toast.makeText(applicationContext, "クリック成功!", Toast.LENGTH_SHORT).show()
            }

            override fun onDismissScreen(adView: NendAdView) {
                Toast.makeText(applicationContext, "復帰成功!", Toast.LENGTH_SHORT).show()
            }

            override fun onInformationButtonClick(adView: NendAdView) {
                Toast.makeText(applicationContext, "Informationボタンクリック成功!", Toast.LENGTH_SHORT).show()
            }
        })
    }
}
Java
public class XmlWithListenerActivity extends AppCompatActivity {
  @Override
  protected void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
      setContentView(R.layout.xml_layout);

      NendAdView nendAdView = findViewById(R.id.nend);
      nendAdView.setListener(new NendAdInformationListener() {
          // 受信エラー通知
          @Override
          public void onFailedToReceiveAd(NendAdView adView) {
              Toast.makeText(getApplicationContext(), "広告取得失敗!", Toast.LENGTH_SHORT).show();
          }

          // 受信成功通知
          @Override
          public void onReceiveAd(NendAdView adView) {
              Toast.makeText(getApplicationContext(), "広告取得成功!", Toast.LENGTH_SHORT).show();
          }

          // 広告クリック通知
          @Override
          public void onClick(NendAdView adView) {
              Toast.makeText(getApplicationContext(), "クリック成功!", Toast.LENGTH_SHORT).show();
          }

          // 復帰通知
          @Override
          public void onDismissScreen(NendAdView adView) {
              Toast.makeText(getApplicationContext(), "復帰成功!", Toast.LENGTH_SHORT).show();
          }

          // インフォメーションボタンクリック通知
          @Override
          public void onInformationButtonClick(NendAdView adView) {
              Toast.makeText(getApplicationContext(), "Informationボタンクリック成功!", Toast.LENGTH_SHORT).show();
          }
      });
}

これらのサンプルの場合は、受信が成功/失敗するたびにトースト表示されます。
その他のサンプルについては サンプルプロジェクト を参照してください。

受信エラー通知について

受信エラー通知でエラー内容を取得出来ます。
エラー内容によって処理を分ける必要がある場合は、以下のように実装してください。

NendAdView から getNendError メソッドで NendError オブジェクトを取得できます。
NendError からはエラーコードとエラーメッセージを取得出来ます。

Kotlin
override fun onFailedToReceiveAd(nendAdView: NendAdView) {
    val nendError = nendAdView.nendError
    when (nendError) {
        NendAdView.NendError.INVALID_RESPONSE_TYPE -> {
            // 不明な広告ビュータイプ
        }
        NendAdView.NendError.FAILED_AD_DOWNLOAD -> {
            // 広告画像の取得失敗
        }
        NendAdView.NendError.FAILED_AD_REQUEST -> {
            // 広告取得失敗
        }
        NendAdView.NendError.AD_SIZE_TOO_LARGE -> {
            // 広告サイズがディスプレイサイズよりも大きい
        }
        NendAdView.NendError.AD_SIZE_DIFFERENCES -> {
            // リクエストしたサイズと取得したサイズが異なる
        }
        else -> {

        }
    }
    Log.e(TAG, nendError.message)
}
Java
@Override
public void onFailedToReceiveAd(NendAdView adView) {
    NendError nendError = adView.getNendError();
    switch (nendError) {
    case INVALID_RESPONSE_TYPE:
        // 不明な広告ビュータイプ
        break;
    case FAILED_AD_DOWNLOAD:
        // 広告画像の取得失敗
        break;
    case FAILED_AD_REQUEST:
        // 広告取得失敗
        break;
    case AD_SIZE_TOO_LARGE:
        // 広告サイズがディスプレイサイズよりも大きい
        break;
    case AD_SIZE_DIFFERENCES:
        // リクエストしたサイズと取得したサイズが異なる
        break;
    }
    // エラーメッセージをログに出力
    Log.e(TAG, nendError.getMessage());
}

Enum NendError の内容

定数 エラー内容
INVALID_RESPONSE_TYPE 不明な広告ビュータイプ
FAILED_AD_DOWNLOAD 広告画像の取得失敗
FAILED_AD_REQUEST 広告取得失敗
AD_SIZE_TOO_LARGE 広告サイズがディスプレイサイズよりも大きい
AD_SIZE_DIFFERENCES リクエストしたサイズと取得したサイズが異なる

定期ロードについて

android 版 nendSDK では、ネットワーク利用ができない場合、また、フォーカスを失った場合や広告が乗った画面が背面にある等広告が表示されていない間は、自動的に広告受信ローテーションを中断します。それ以外で任意にローテーションを中断させたい場合には、以下のメソッドを利用してください。

NendAdView
中断

void pause();

再開

void resume();

注意:手動での中断が優先になります。手動で中断させている間は、広告が乗った画面が最前面に表示されても、ローテーションは再開されません。手動でローテーションを中断した場合は、必ず手動でローテーションを再開するようにしてください。

検証

日本語

nendSDK Android について

SDKの組み込み

広告の表示

ログ出力

導入サポート


English

About nendSDK Android

SDK Implementation

Display Ads

Logs Output

Supports


中文

关于 nendSDK Android

导入SDK

显示广告

输出日志

导入支持

Clone this wiki locally
You can’t perform that action at this time.