For Cocos2d-x version 3 and above.
Overview
VMAX Cocos2d-x Ad SDK is a wrapper around the VMAX Native android Ad SDK. Cocos Studio supports three languages. The current release of SDK only supports integration with C++ version of Cocos2d-x.
Mediation Partners
Interstitial
- AdColony
- AdMob
- Chartboost
- Facebook Audience Network
- Flurry
- Millennial Media
- Vungle
Interstitial Video
- Adcolony
- Chartboost
- Vungle
Rewarded Video
- AdColony
- Chartboost
- Pokkt
- UnityAds
- Vungle
Native Icon
- Facebook Audience Network (Native)
- InMobi (Native)
Integrating the VMAX SDK
Prerequisites for Integration
- Cocos2d-x 3.x
- Android Studio
- Android NDK
- Apache Ant
Basic Setup
- Copy VMAXCocos2dHelper.cpp & VMAXCocos2dHelper.h and paste it to your Classes folder.
- In the Cocos2d-x Scene you wish to integrate the VMAX SDK, import the VMAX Cosos2d-x header as:
1#include "VMAXCocos2dHelper.h" - Add VMAXCocos2dHelper.cpp class path inside jni/Android.mk file.
For Example – LOCAL_SRC_FILES := ../../Classes/VMAXCocos2dHelper.cpp \ - Compile your application to generate the .so file.
- Import the project.android-studio generated by Cocos2d-x in Android Studio.
- Add module vmax.aar from Plugin/AndroidVMAXSDKAar directory
- Add necessary mediation partners to your com.vmax.android.ads.mediation.partners package.
Mediation Files/ directory contains libraries (jar/aar/library projects) and adapters(java files with package) of the supported mediation partners. - Alternatively, if you’re using Eclipse, follow the steps mentioned here.
- Create a package com.vmax.ads in your src directory of project and copy Cocos2dVMAXAdSDK.java file into that.
- Must call
1VmaxSdk.init(Activity mActivity) - Maintain Activity specific lifecycle in your activity class using Cocos2dVMAXAdSDK mVMAXAdSDK object
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
@Override protected void onPause() { super.onPause(); if(mVMAXAdSDK != null) mVMAXAdSDK.onPause(); } @Override protected void onResume() { super.onResume(); if(mVMAXAdSDK != null) mVMAXAdSDK.onResume(); } @Override protected void onDestroy() { super.onDestroy(); if(mVMAXAdSDK != null) mVMAXAdSDK.onDestroy(); } |
Integration
Instantiating Interstitial Ads
Use the following snippet to create the Interstitial ad and add listener to it:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 |
VMAXCocos2dHelper* helper; //Object declaration helper = new VMAXCocos2dHelper(“Enter_AdSpotID”,UX_INTERSTITIAL); helper->setAdListener(1);//Pass request code to differentiate callbacks for multiple Ads helper->cacheAd(); //following callbacks need to be added JNIEXPORT void JNICALL Java_com_vmax_ads_Cocos2dVMAXAdSDK_adViewDidLoadAdCallback( JNIEnv *env, jobject obj, jobject data, jstring str, jint requestCode) { } JNIEXPORT void JNICALL Java_com_vmax_ads_Cocos2dVMAXAdSDK_didFailedToLoadAdCallback( JNIEnv *env, jobject obj, jobject data, jstring str, jint requestCode) { } JNIEXPORT void JNICALL Java_com_vmax_ads_Cocos2dVMAXAdSDK_adViewDidCacheAdCallback( JNIEnv *env, jobject obj, jstring str, jint requestCode) { if(requestCode == 1) { helper->showAd(); } } JNIEXPORT void JNICALL Java_com_vmax_ads_Cocos2dVMAXAdSDK_adViewDidCacheAdCallbackForNative( JNIEnv *env, jobject obj, jstring str, jstring iconUrl, jint iconWidth, jint iconHeight, jint requestCode) { } JNIEXPORT void JNICALL Java_com_vmax_ads_Cocos2dVMAXAdSDK_didFailedToCacheAdCallback( JNIEnv *env, jobject obj, jobject data, jstring str, jint requestCode) { } JNIEXPORT void JNICALL Java_com_vmax_ads_Cocos2dVMAXAdSDK_didInteractWithAdCallback( JNIEnv *env, jobject obj, jobject data, jstring str, jint requestCode) { } JNIEXPORT void JNICALL Java_com_vmax_ads_Cocos2dVMAXAdSDK_willDismissAdCallback( JNIEnv *env, jobject obj, jobject data, jstring str, jint requestCode) { } JNIEXPORT void JNICALL Java_com_vmax_ads_Cocos2dVMAXAdSDK_willLeaveAppCallback( JNIEnv *env, jobject obj, jobject data, jstring str, jint requestCode) { } JNIEXPORT void JNICALL Java_com_vmax_ads_Cocos2dVMAXAdSDK_willPresentAdCallback( JNIEnv *env, jobject obj, jobject data, jstring str, jint requestCode) { } JNIEXPORT void JNICALL Java_com_vmax_ads_Cocos2dVMAXAdSDK_onAdCollapsedCallback( JNIEnv *env, jobject obj, jobject data, jstring str, jint requestCode) { } JNIEXPORT void JNICALL Java_com_vmax_ads_Cocos2dVMAXAdSDK_onAdExpandCallback( JNIEnv *env, jobject obj, jobject data, jstring str, jint requestCode) { } JNIEXPORT void JNICALL Java_com_vmax_ads_Cocos2dVMAXAdSDK_onVideoViewCallback( JNIEnv *env, jobject obj, jobject data, jstring str, jint requestCode) { } |
Instantiating Rewarded Video Ads
Use the following snippet to create the Rewarded video ad and add listener to it.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 |
VMAXCocos2dHelper* helper; //Object declaration helper = new VMAXCocos2dHelper(“Enter_AdSpotID”,UX_INTERSTITIAL); helper->setAdListener(2);//Pass request code to differentiate callbacks for multiple Ads jstring currency = myNewEnv->NewStringUTF(“”);//initialize the wallet helper-> initRewardedVideo(currency); helper->cacheAd(); //following callbacks need to be added JNIEXPORT void JNICALL Java_com_vmax_ads_Cocos2dVMAXAdSDK_adViewDidLoadAdCallback( JNIEnv *env, jobject obj, jobject data, jstring str, jint requestCode) { } JNIEXPORT void JNICALL Java_com_vmax_ads_Cocos2dVMAXAdSDK_didFailedToLoadAdCallback( JNIEnv *env, jobject obj, jobject data, jstring str, jint requestCode) { } JNIEXPORT void JNICALL Java_com_vmax_ads_Cocos2dVMAXAdSDK_adViewDidCacheAdCallback( JNIEnv *env, jobject obj, jstring str, jint requestCode) { if(requestCode == 2) { helper->showAd(); } } JNIEXPORT void JNICALL Java_com_vmax_ads_Cocos2dVMAXAdSDK_adViewDidCacheAdCallbackForNative( JNIEnv *env, jobject obj, jstring str, jstring iconUrl, jint iconWidth, jint iconHeight, jint requestCode) { } JNIEXPORT void JNICALL Java_com_vmax_ads_Cocos2dVMAXAdSDK_didFailedToCacheAdCallback( JNIEnv *env, jobject obj, jobject data, jstring str, jint requestCode) { } JNIEXPORT void JNICALL Java_com_vmax_ads_Cocos2dVMAXAdSDK_didInteractWithAdCallback( JNIEnv *env, jobject obj, jobject data, jstring str, jint requestCode) { } JNIEXPORT void JNICALL Java_com_vmax_ads_Cocos2dVMAXAdSDK_willDismissAdCallback( JNIEnv *env, jobject obj, jobject data, jstring str, jint requestCode) { } JNIEXPORT void JNICALL Java_com_vmax_ads_Cocos2dVMAXAdSDK_willLeaveAppCallback( JNIEnv *env, jobject obj, jobject data, jstring str, jint requestCode) { } JNIEXPORT void JNICALL Java_com_vmax_ads_Cocos2dVMAXAdSDK_willPresentAdCallback( JNIEnv *env, jobject obj, jobject data, jstring str, jint requestCode) { } JNIEXPORT void JNICALL Java_com_vmax_ads_Cocos2dVMAXAdSDK_onAdCollapsedCallback( JNIEnv *env, jobject obj, jobject data, jstring str, jint requestCode) { } JNIEXPORT void JNICALL Java_com_vmax_ads_Cocos2dVMAXAdSDK_onAdExpandCallback( JNIEnv *env, jobject obj, jobject data, jstring str, jint requestCode) { } JNIEXPORT void JNICALL Java_com_vmax_ads_Cocos2dVMAXAdSDK_onVideoViewCallback( JNIEnv *env, jobject obj, jobject data, jstring str, jint requestCode) { } |
Wallet APIs
To Get the virtual currency amount
1 |
helper->getVirtualCurrency(“Enter_currency_name”); |
To Award virtual Currency amount
1 |
helper->awardVirtualCurrency(“Enter_currency_name”,Enter_currency_amount); |
To Spend Virtual currency amount
1 |
helper->spendVirtualCurrency(“Enter_currency_name”,Enter_currency_amount); |
Instantiating Native Icon Ads
Instantiation of Native Ad icon
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 |
VMAXCocos2dHelper* helper; //Object declaration helper = new VMAXCocos2dHelper(“Enter_AdSpotID”,UX_NATIVE); helper->setAdListener(3);//Pass request code to differentiate callbacks for multiple Ads helper->cacheAd();//Note that there is no loadAd and showAd API for native //following callbacks need to be added JNIEXPORT void JNICALL Java_com_vmax_ads_Cocos2dVMAXAdSDK_adViewDidLoadAdCallback( JNIEnv *env, jobject obj, jobject data, jstring str, jint requestCode) { } JNIEXPORT void JNICALL Java_com_vmax_ads_Cocos2dVMAXAdSDK_didFailedToLoadAdCallback( JNIEnv *env, jobject obj, jobject data, jstring str, jint requestCode) { } JNIEXPORT void JNICALL Java_com_vmax_ads_Cocos2dVMAXAdSDK_adViewDidCacheAdCallback( JNIEnv *env, jobject obj, jstring str, jint requestCode) { } JNIEXPORT void JNICALL Java_com_vmax_ads_Cocos2dVMAXAdSDK_adViewDidCacheAdCallbackForNative( JNIEnv *env, jobject obj, jstring str, jstring iconUrl, jint iconWidth, jint iconHeight, jint requestCode) { if (requestCode == 3) { vmaxSprite = helloWorld->getVMAXSprite(); // this method is defined below helper->registerIcon(helper, vmaxSprite, iconUrl, iconWidth, iconHeight); } } JNIEXPORT void JNICALL Java_com_vmax_ads_Cocos2dVMAXAdSDK_didFailedToCacheAdCallback( JNIEnv *env, jobject obj, jobject data, jstring str, jint requestCode) { } JNIEXPORT void JNICALL Java_com_vmax_ads_Cocos2dVMAXAdSDK_didInteractWithAdCallback( JNIEnv *env, jobject obj, jobject data, jstring str, jint requestCode) { } JNIEXPORT void JNICALL Java_com_vmax_ads_Cocos2dVMAXAdSDK_willDismissAdCallback( JNIEnv *env, jobject obj, jobject data, jstring str, jint requestCode) { } JNIEXPORT void JNICALL Java_com_vmax_ads_Cocos2dVMAXAdSDK_willLeaveAppCallback( JNIEnv *env, jobject obj, jobject data, jstring str, jint requestCode) { } JNIEXPORT void JNICALL Java_com_vmax_ads_Cocos2dVMAXAdSDK_willPresentAdCallback( JNIEnv *env, jobject obj, jobject data, jstring str, jint requestCode) { } JNIEXPORT void JNICALL Java_com_vmax_ads_Cocos2dVMAXAdSDK_onAdCollapsedCallback( JNIEnv *env, jobject obj, jobject data, jstring str, jint requestCode) { } JNIEXPORT void JNICALL Java_com_vmax_ads_Cocos2dVMAXAdSDK_onAdExpandCallback( JNIEnv *env, jobject obj, jobject data, jstring str, jint requestCode) { } JNIEXPORT void JNICALL Java_com_vmax_ads_Cocos2dVMAXAdSDK_onVideoViewCallback( JNIEnv *env, jobject obj, jobject data, jstring str, jint requestCode) { } Sprite* HelloWorld::getVMAXSprite() { // add "HelloWorld" splash screen" auto sprite = Sprite::create(); Vec2 origin = Director::getInstance()->getVisibleOrigin(); auto visibleSize = Director::getInstance()->getVisibleSize(); // position the sprite on the center of the screen sprite->setPosition( Vec2(origin.x, visibleSize.height / 2 + origin.y)); // add the sprite as a child to this layer this->addChild(sprite, 0); return sprite; } |
Note: Kindly note that loadAd() cannot be used for Native Icon Ads.
Read more on testing the integration here.