ネイティブ広告V2 - fan-ADN/nendSDK-cocos2d-x GitHub Wiki
事前準備
まだ広告枠作成、SDKダウンロードを行っていない場合、下記リンク先を参照してください。
SDKの組み込み
プロジェクトにSDK、モジュールを追加します。
ネイティブ広告実装手順
cocos2d-xモジュール ver2.1.0 からネイティブ広告のテキストや画像などの広告情報をアプリ側から個別で取得できるようになりました。
新しい機能を使った実装方法は以下の通りです。
ネイティブ広告をロードする
まず、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をご参照ください
広告をアクティブにする
NendNativeAd
のactivateAdView(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;
}
広告の自動リロード
以下のリンクを参照ください。
広告クリック時のコールバックを登録する
以下のリンクを参照ください。