ネイティブ広告V2 - fan-ADN/nendSDK-cocos2d-x GitHub Wiki

事前準備

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

SDKの組み込み

プロジェクトにSDK、モジュールを追加します。

ネイティブ広告実装手順

cocos2d-xモジュール ver2.1.0 からネイティブ広告のテキストや画像などの広告情報をアプリ側から個別で取得できるようになりました。
新しい機能を使った実装方法は以下の通りです。

  1. ネイティブ広告をロードする
  2. 広告オブジェクトから広告の各データを取得する
  3. 広告をアクティブにする

ネイティブ広告をロードする

まず、NendNativeAdClient クラスのインスタンスを生成します。
続いて NendNativeAdClient に用意された loadAd(const std::function<void (nend_module::NendNativeAd*, NendNativeLoadResultCode, std::string)> &callback) メソッドを使用し広告オブジェクトを取得します。

Headerファイル
#include "NendNativeAdClient.h"

class YourAppScene : public cocos2d::Layer
{

private:
    // インスタンスをクラス内で保持しておきます。
    nend_module::NendNativeAdClient* _nativeAdClient;
};
実装ファイル
using namespace nend_module;
...
auto apiKey = "管理画面で発行されたApiKey";
auto spotId = "管理画面で発行されたSpotId";

// NendNativeAdClientインスタンスの生成
_nativeAdClient = new NendNativeAdClient(apiKey, spotId);

// 広告情報のロード
_nativeAdClient->loadAd([=](NendNativeAd* nativeAd, NendNativeLoadResultCode resultCode, std::string errorMessage){
    if (nullptr != nativeAd) {
        // ロード成功
    }
    else {
        // ロード失敗
    }
});

広告オブジェクトから広告の各データを取得する

広告オブジェクトの取得に成功した場合はコールバックの NendNativeAd インスタンスで広告の各データを取得できます。
以下の例では、『広告明示』、『広告見出し』、『広告画像』の取得を行います。

// 広告明示のテキストを取得します
prText->setString(nativeAd->prTextForAdvertisingExplicitly(NAD_NATIVE_ADVERTISING_EXPLIICITY_PR));
// 広告見出しを取得します
shortText->setString(nativeAd->getShortText());
// 広告画像のTextureをダウンロードします
nativeAd->downloadAdImage([=](Texture2D* adTexture, std::string errorMessage){
    if (nullptr != adTexture) {
        adImage->setTexture(adTexture);
    }
    else {
        // 画像ダウンロード失敗
    }
});

その他の取得可能なフィールドに関してはネイティブ広告用クラスの内容 - NendNativeAdをご参照ください

広告をアクティブにする

NendNativeAdactivateAdView(Node* node, Label* prLabel)メソッドで広告をアクティブにし、インプレッションを計測します。

// インプレッションの計測とクリック処理の登録を行います
nativeAd->activateAdView(adLayer, prText);
  • 第1パラメーター Node* node に広告を配置した Node を設定します。
    ここで設定した Node が、広告のクリック可能領域となります。

  • 第2パラメーター Label* prLabel に広告明示を設定した Label を設定します。
    ここで設定した Label をクリックすることで、広告のオプトアウトページへ遷移します。

広告をアクティブにしないと、広告を配置したNodeをクリックしてもイベントは発生しません。
広告を配置したNodeが画面内に表示されないと、広告のインプレッションは計測されません。

client生成から広告表示まで全体の流れの例

Headerファイル
#include "NendNativeAdClient.h"

class YourAppScene : public cocos2d::Layer
{

private:
    // インスタンスをクラス内で保持しておきます。
    nend_module::NendNativeAdClient* _nativeAdClient;
};
実装ファイル
using namespace nend_module;
...
auto apiKey = "管理画面で発行されたApiKey";
auto spotId = "管理画面で発行されたSpotId";

// NendNativeAdClientインスタンスの生成
_nativeAdClient = new NendNativeAdClient(apiKey, spotId);

LayerColor* adLayer;  // 広告View
Label* prText;        // 広告明示
Label* shortText;     // 広告見出し
Sprite* adImage;      // 広告画像
...
// 広告情報のロード
_nativeAdClient->loadAd([=](NendNativeAd* nativeAd, NendNativeLoadResultCode resultCode, std::string errorMessage){
    if (nullptr != nativeAd) {
        // 広告明示のテキストを取得します
        prText->setString(nativeAd->prTextForAdvertisingExplicitly(NAD_NATIVE_ADVERTISING_EXPLIICITY_PR));
        // 広告見出しを取得します
        shortText->setString(nativeAd->getShortText());
        // 広告画像のTextureをダウンロードします
        nativeAd->downloadAdImage([=](Texture2D* adTexture, std::string errorMessage){
            if (nullptr != adTexture) {
                adImage->setTexture(adTexture);
            }
            else {
                // 画像ダウンロード失敗
            }
        });
        // インプレッションの計測とクリック処理の登録を行います
        nativeAd->activateAdView(adLayer, prText);
    }
    else {
        // ロード失敗
    }
});

インスタンス解放

広告を消去し、不要となるタイミングでNendNativeAdClient クラスのインスタンスをを解放します。

YourAppScene:~YourAppScene()
{
   // 不要になったタイミングで確保したインスタンスを解放します
    delete _nativeAdClient;
}

広告の自動リロード

以下のリンクを参照ください。

広告クリック時のコールバックを登録する

以下のリンクを参照ください。