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);
}