EventDispatcher による通知(任意) - fan-ADN/nendSDK-cocos2d-x GitHub Wiki
各広告からの通知は、EventDispatcherにより行います。
EventDispatcherの登録は行わなくても動作に支障はありません。
バナー広告
EventDispatcher 登録
通知名NADViewDelegateNotification
に登録されたメソッドを呼び出します。
例)バナー広告の EventDispatcher 登録と結果処理
Director::getInstance()->getEventDispatcher()->addCustomEventListener(NADViewDelegateNotification,[&](cocos2d::EventCustom *event) {
int *intValue = (int *)event->getUserData();
int resultCode = *intValue;
switch (resultCode) {
case FINISH_LOAD_AD: //※iOS のみ
// 広告ロード完了
break;
case RECEIVE_AD:
// 広告受信成功
break;
case FAIL_TO_RECEIVE_AD:
// 広告受信失敗
break;
case CLICK_AD:
// バナー広告クリック
break;
case CLICK_INFORMATION:
// インフォメーションボタンクリック
break;
default:
break;
}
});
EventDispatcher 登録の解除
通知名NADViewDelegateNotification
に登録された EventDispatcher を削除します。
例)バナー広告の EventDispatcher 登録の解除
Director::getInstance()->getEventDispatcher()->removeCustomEventListeners(NADViewDelegateNotification);
イベントとspotIDのEventDispatcher 登録
通知名NADViewDelegateWithSpotIdNotification
に登録されたメソッドを呼び出します。
例)バナー広告の イベントとspotIDの EventDispatcher 登録と結果処理
Director::getInstance()->getEventDispatcher()->addCustomEventListener(NADViewDelegateWithSpotIdNotification,[&](cocos2d::EventCustom *event) {
int *resultArray = (int *)event->getUserData();
int resultCode = resultArray[0];
int spotId = resultArray[1];
switch (resultCode) {
case FINISH_LOAD_AD: // iOSのみ
// 広告ロード完了
break;
case RECEIVE_AD:
// 広告受信成功
break;
case FAIL_TO_RECEIVE_AD:
// 広告受信失敗
break;
case CLICK_AD:
// バナー広告クリック
break;
case CLICK_INFORMATION:
// インフォメーションボタンクリック
break;
default:
break;
}
});
イベントとspotIDのEventDispatcher 登録の解除
通知名NADViewDelegateWithSpotIdNotification
に登録された EventDispatcher を削除します。
例)バナー広告の イベントとspotIDの EventDispatcher 登録の解除
Director::getInstance()->getEventDispatcher()->removeCustomEventListeners(NADViewDelegateWithSpotIdNotification);
アイコン広告 ※ Androidのみ
EventDispatcher 登録
通知名NADIconLoaderDelegateNotification
に登録されたメソッドを呼び出します。
例)アイコン広告の EventDispatcher 登録と結果処理
Director::getInstance()->getEventDispatcher()->addCustomEventListener(NADIconLoaderDelegateNotification,[&](cocos2d::EventCustom *event) {
int *intValue = (int *)event->getUserData();
int resultCode = *intValue;
switch (resultCode) {
case RECEIVE_AD_ICON:
// 広告受信成功
break;
case FAIL_TO_RECEIVE_AD_ICON:
// 広告受信失敗
break;
case CLICK_AD_ICON:
// アイコン広告クリック
break;
case CLICK_INFORMATION_ICON:
// インフォメーションボタンクリック
break;
default:
break;
}
});
EventDispatcher 登録の解除
通知名NADIconLoaderDelegateNotification
に登録された EventDispatcher を削除します。
例)アイコン広告の EventDispatcher 登録の解除
Director::getInstance()->getEventDispatcher()->removeCustomEventListeners(NADIconLoaderDelegateNotification);
イベントとspotIDのEventDispatcher 登録
通知名NADIconLoaderDelegateWithSpotIdNotification
に登録されたメソッドを呼び出します。
例)アイコン広告の イベントとspotIDの EventDispatcher 登録と結果処理
Director::getInstance()->getEventDispatcher()->addCustomEventListener(NADIconLoaderDelegateWithSpotIdNotification,[&](cocos2d::EventCustom *event) {
int *resultArray = (int *)event->getUserData();
int resultCode = resultArray[0];
int spotId = resultArray[1];
switch (resultCode) {
case RECEIVE_AD_ICON:
// 広告受信成功
break;
case FAIL_TO_RECEIVE_AD_ICON:
// 広告受信失敗
break;
case CLICK_AD_ICON:
// アイコン広告クリック
break;
case CLICK_INFORMATION_ICON:
// インフォメーションボタンクリック
break;
default:
break;
}
});
イベントとspotIDのEventDispatcher 登録の解除
通知名NADIconLoaderDelegateWithSpotIdNotification
に登録された EventDispatcher を削除します。
例)アイコン広告の イベントとspotIDの EventDispatcher 登録の解除
Director::getInstance()->getEventDispatcher()->removeCustomEventListeners(NADIconLoaderDelegateWithSpotIdNotification);
インタースティシャル広告
ロード結果の EventDispatcher 登録
通知名NADInterstitialDelegateLoadResultNotification
に登録されたメソッドを呼び出します。
例)インタースティシャル広告のロード結果の EventDispatcher 登録と結果処理
Director::getInstance()->getEventDispatcher()->addCustomEventListener(NADInterstitialDelegateLoadResultNotification,[&](cocos2d::EventCustom *event) {
int *intValue = (int *)event->getUserData();
int resultCode = *intValue;
switch (resultCode) {
case FINISH_LOAD_AD_INTERSTITIAL:
// ロード完了
break;
case FAIL_AD_DOWNLOAD_INTERSTITIAL:
// ロード失敗
break;
case INVALID_RESPONSE_TYPE_INTERSTITIAL:
// 不正な広告タイプ
break;
case FAIL_AD_REQUEST_INTERSTITIAL:
// 抽選リクエスト失敗
break;
case FAIL_AD_INCOMPLETE_INTERSTITIAL: //※Android のみ
// 広告取得未完了
break;
default:
break;
}
});
ロード結果の EventDispatcher 登録の解除
通知名NADInterstitialDelegateLoadResultNotification
に登録された EventDispatcher を削除します。
例)インタースティシャル広告のロード結果の EventDispatcher 登録の解除
Director::getInstance()->getEventDispatcher()->removeCustomEventListeners(NADInterstitialDelegateLoadResultNotification);
ロード結果と spotID の EventDispatcher 登録 ※ver1.1.2 で追加
通知名NADInterstitialDelegateLoadResultWithSpotIdNotification
に登録されたメソッドを 呼び出します。
例)インタースティシャル広告のロード結果と spotID の EventDispatcher 登録と結果処理
Director::getInstance()->getEventDispatcher()->addCustomEventListener(NADInterstitialDelegateLoadResultWithSpotIdNotification,[&](cocos2d::EventCustom *event) {
int *resultArray = (int *)event->getUserData();
int resultCode = resultArray[0];
int spotId = resultArray[1];
switch (resultCode) {
case FINISH_LOAD_AD_INTERSTITIAL:
// ロード完了
break;
case FAIL_AD_DOWNLOAD_INTERSTITIAL:
// ロード失敗
break;
case INVALID_RESPONSE_TYPE_INTERSTITIAL:
// 不正な広告タイプ
break;
case FAIL_AD_REQUEST_INTERSTITIAL:
// 抽選リクエスト失敗
break;
case FAIL_AD_INCOMPLETE_INTERSTITIAL: //※Android のみ
// 広告取得未完了
break;
default:
break;
}
});
ロード結果と spotID の EventDispatcher 登録の解除 ※ver1.1.2 で追加
通知名NADInterstitialDelegateLoadResultWithSpotIdNotification
に登録された EventDispatcher を削除します。
例)インタースティシャル広告のロード結果と spotID の EventDispatcher 登録の解除
Director::getInstance()->getEventDispatcher()->removeCustomEventListeners(NADInterstitialDelegateLoadResultWithSpotIdNotification);
表示結果の EventDispatcher 登録
通知名NADInterstitialDelegateShowResultNotification
に登録されたメソッドを呼び出します。
例)インタースティシャル広告の表示結果の EventDispatcher 登録と結果処理
Director::getInstance()->getEventDispatcher()->addCustomEventListener(NADInterstitialDelegateShowResultNotification,[&](cocos2d::EventCustom *event) {
int *intValue = (int *)event->getUserData();
int resultCode = *intValue;
switch (resultCode) {
case SHOW_SUCCESS:
// 表示成功
break;
case SHOW_ALREADY:
// 既に表示済み
break;
case SHOW_FREQUENCY_NOT_REACHABLE:
// 広告のフリークエンシーカウントに未到達
break;
case REQUEST_INCOMPLETE:
// 抽選リクエストに失敗
break;
case LOAD_INCOMPLETE:
// 抽選リクエストが実行されていない、もしくは実行中
break;
case DOWNLOAD_INCOMPLETE:
// 広告ダウンロードが未完了
break;
case CANNOT_DISPLAY: //※iOS のみ
// 広告表示に失敗
break;
default:
break;
}
});
表示結果の EventDispatcher 登録の解除
通知名NADInterstitialDelegateShowResultNotification
に登録された EventDispatcher を削除します。
例)インタースティシャル広告の表示結果の EventDispatcher 登録の解除
Director::getInstance()->getEventDispatcher()->removeCustomEventListeners(NADInterstitialDelegateShowResultNotification);
表示結果と spotID の EventDispatcher 登録 ※ver1.1.2 で追加
通知名NADInterstitialDelegateShowResultWithSpotIdNotification
に登録されたメソッドを呼び出します。
例)インタースティシャル広告の表示結果と spotID の EventDispatcher 登録と結果処理
Director::getInstance()->getEventDispatcher()->addCustomEventListener(NADInterstitialDelegateShowResultWithSpotIdNotification,[&](cocos2d::EventCustom *event) {
int *resultArray = (int *)event->getUserData();
int resultCode = resultArray[0];
int spotId = resultArray[1];
switch (resultCode) {
case SHOW_SUCCESS:
// 表示成功
break;
case SHOW_ALREADY:
// 既に表示済み
break;
case SHOW_FREQUENCY_NOT_REACHABLE:
// 広告のフリークエンシーカウントに未到達
break;
case REQUEST_INCOMPLETE:
// 抽選リクエストに失敗
break;
case LOAD_INCOMPLETE:
// 抽選リクエストが実行されていない、もしくは実行中
break;
case DOWNLOAD_INCOMPLETE:
// 広告ダウンロードが未完了
break;
case CANNOT_DISPLAY: //※iOS のみ
// 広告表示に失敗
break;
default:
break;
}
});
表示結果と spotID の EventDispatcher 登録の解除 ※ver1.1.2 で追加
通知名NADInterstitialDelegateShowResultWithSpotIdNotification
に登録されたEventDispatcher を削除します。
例)インタースティシャル広告の表示結果と spotID の EventDispatcher 登録の解除
Director::getInstance()->getEventDispatcher()->removeCustomEventListeners(NADInterstitialDelegateShowResultWithSpotIdNotification);
クリックタイプの EventDispatcher 登録
通知名NADInterstitialDelegateClickResultNotification
に登録されたメソッドを呼び出します。
例)インタースティシャル広告のクリックタイプの EventDispatcher 登録と結果処理
Director::getInstance()->getEventDispatcher()->addCustomEventListener(NADInterstitialDelegateClickResultNotification,[&](cocos2d::EventCustom *event) {
int *intValue = (int *)event->getUserData();
int resultCode = *intValue;
switch (resultCode) {
case CLICK_DOWNLOAD:
// ダウンロードボタンクリック
break;
case CLICK_CLOSE:
// ×ボタンあるいは広告範囲外の領域クリック
break;
case CLICK_INFORMATION_INTERSTITIAL:
// インフォメーションボタンクリック
break;
default:
break;
}
});
クリックタイプの EventDispatcher 登録の解除
通知名NADInterstitialDelegateClickResultNotification
に登録された EventDispatcher を削除します。
例)インタースティシャル広告のクリックタイプの EventDispatcher 登録の解除
Director::getInstance()->getEventDispatcher()->removeCustomEventListeners(NADInterstitialDelegateClickResultNotification);
クリックタイプと spotID の EventDispatcher 登録 ※ver1.1.2 で追加
通知名NADInterstitialDelegateClickResultWithSpotIdNotification
に登録されたメソッドを呼び出します。
例)インタースティシャル広告のクリックタイプと spotID の EventDispatcher 登録と結果処理
Director::getInstance()->getEventDispatcher()->addCustomEventListener(NADInterstitialDelegateClickResultWithSpotIdNotification,[&](cocos2d::EventCustom *event) {
int *resultArray = (int *)event->getUserData();
int resultCode = resultArray[0];
int spotId = resultArray[1];
switch (resultCode) {
case CLICK_DOWNLOAD:
// ダウンロードボタンクリック
break;
case CLICK_CLOSE:
// ×ボタンあるいは広告範囲外の領域クリック
break;
case CLICK_INFORMATION_INTERSTITIAL:
// インフォメーションボタンクリック
break;
default:
break;
}
});
クリックタイプと spotID の EventDispatcher 登録の解除 ※ver1.1.2 で追加
通知名NADInterstitialDelegateClickResultWithSpotIdNotification
に登録された EventDispatcher を削除します。
例)インタースティシャル広告のクリックタイプと spotID の EventDispatcher 登録の解除
Director::getInstance()->getEventDispatcher()->removeCustomEventListeners(NADInterstitialDelegateClickResultWithSpotIdNotification);
EventDispatcher の実装例
登録の実装例
void HelloWorld::addEventDispatcher()
{
// EventDispatcherで通知を受け取る
// バナー
Director::getInstance()->getEventDispatcher()->addCustomEventListener(NADViewDelegateNotification,[&](cocos2d::EventCustom *event) {
int *intValue = (int *)event->getUserData();
int resultCode = *intValue;
switch (resultCode) {
case FINISH_LOAD_AD: // iOSのみ
break;
case RECEIVE_AD:
break;
case FAIL_TO_RECEIVE_AD:
break;
case CLICK_AD:
break;
case CLICK_INFORMATION:
break;
default:
break;
}
});
// アイコン ※ Androidのみ
Director::getInstance()->getEventDispatcher()->addCustomEventListener(NADIconLoaderDelegateNotification,[&](cocos2d::EventCustom *event) {
int *intValue = (int *)event->getUserData();
int resultCode = *intValue;
switch (resultCode) {
case RECEIVE_AD_ICON:
break;
case FAIL_TO_RECEIVE_AD_ICON:
break;
case CLICK_AD_ICON:
break;
case CLICK_INFORMATION_ICON:
break;
default:
break;
}
});
// インタースティシャル(ロード結果)
Director::getInstance()->getEventDispatcher()->addCustomEventListener(NADInterstitialDelegateLoadResultNotification,[&](cocos2d::EventCustom *event) {
int *intValue = (int *)event->getUserData();
int resultCode = *intValue;
switch (resultCode) {
case FINISH_LOAD_AD_INTERSTITIAL:
break;
case FAIL_AD_DOWNLOAD_INTERSTITIAL:
break;
case INVALID_RESPONSE_TYPE_INTERSTITIAL:
break;
case FAIL_AD_REQUEST_INTERSTITIAL:
break;
case FAIL_AD_INCOMPLETE_INTERSTITIAL: //※Android のみ
break;
default:
break;
}
});
// インタースティシャル(表示結果)
Director::getInstance()->getEventDispatcher()->addCustomEventListener(NADInterstitialDelegateShowResultNotification,[&](cocos2d::EventCustom *event) {
int *intValue = (int *)event->getUserData();
int resultCode = *intValue;
switch (resultCode) {
case SHOW_SUCCESS:
break;
case SHOW_ALREADY:
break;
case SHOW_FREQUENCY_NOT_REACHABLE:
break;
case REQUEST_INCOMPLETE:
break;
case LOAD_INCOMPLETE:
break;
case DOWNLOAD_INCOMPLETE:
break;
case CANNOT_DISPLAY: //※iOS のみ
break;
default:
break;
}
});
// インタースティシャル(クリックタイプ)
Director::getInstance()->getEventDispatcher()->addCustomEventListener(NADInterstitialDelegateClickResultNotification,[&](cocos2d::EventCustom *event) {
int *intValue = (int *)event->getUserData();
int resultCode = *intValue;
switch (resultCode) {
case CLICK_DOWNLOAD:
break;
case CLICK_CLOSE:
break;
case CLICK_INFORMATION_INTERSTITIAL:
break;
default:
break;
}
});
}
登録解除の実装例
void HelloWorld::removeEventDispatcher()
{
// EventDispatcherの通知を停止
// バナー
Director::getInstance()->getEventDispatcher()->removeCustomEventListeners(NADViewDelegateNotification);
// アイコン ※ Androidのみ
Director::getInstance()->getEventDispatcher()->removeCustomEventListeners(NADIconLoaderDelegateNotification);
// インタースティシャル
Director::getInstance()->getEventDispatcher()->removeCustomEventListeners(NADInterstitialDelegateLoadResultNotification);
Director::getInstance()->getEventDispatcher()->removeCustomEventListeners(NADInterstitialDelegateShowResultNotification);
Director::getInstance()->getEventDispatcher()->removeCustomEventListeners(NADInterstitialDelegateClickResultNotification);
}