Integration Steps for Cocos2d-x C++ iOS
The Chocolate Platform iOS SDK Cocos2d-x plugin supports the following ad units:
- Full Screen Interstitial
- Rewarded Video
In order to display Chocolate Ads in your C++ Cocos2d-x project, do the following:
1. Download the SDK
iOS projects generated by the Cocos2d-x platform do not interoperate with CocoaPods correctly. You will have to integrate the ChocolatePlatform SDK manually. Download
After unzipping, you will have a CHOCOLATE_IOS_SDK_{VERSION_NUMBER} folder with three subfolders:
- An
SDK
folder containing the ChocolatePlatform libraries - A
Mediation
folder containing libraries from Chocolate Platform’s mediation partners - A
plugins
folder containing a subfoldercocos2d
, which contains the cocos2d-x plugin
2. Add the plugin to your C++ project
From the plugins/cocos2d
folder in the downloaded SDK, add the following files to your project (usually, this means adding them to your project’s Classes
directory:
ChocolatePlatformAdRequester.h
ChocolatePlatformAdRequester.mm
cpp/ChocolatePlatformCPPAdRequester.h
cpp/ChocolatePlatformCPPAdRequester.m
cpp/ChocolatePlatformCC2DXBridge.h
cpp/ChocolatePlatformCC2DXBridge.mm
3. Use the plugin
Where you do this is up to you and depends on your project’s structure. Your C++ code will interface with the Chocolate Platform SDK’s via the code in ChocolatePlatformCC2DXBridge
. If you wish to receive callbacks, you need to subscribe to them by passing in an instance of ChocolatePlatformInterstitialCallbackReceiver
or ChocolatePlatformRewardCallbackReceiver
. These are pure abstract classes defined in ChocolatePlatformCC2DXBridge.h
, so it is safe to use them as follows:
#include "cocos2d.h"
#include "ChocolatePlatformCC2DXBridge.h"
class YourScene : public cocos2d::Scene,
public ChocolatePlatformInterstitialCallbackReceiver,
public ChocolatePlatformRewardCallbackReceiver
Then, within that class, you can subscribe to the callbacks:
subscribeToInterstitialCallbacks(this);
subscribeToRewardCallbacks(this);
If you wish to show only interstitial or only reward callbacks, you can subclass only one of the CallbackReceiver classes, and subscribe to only one set of callbacks.
4. Configure the app with additional information
You can optionally provide Chocolate Platform’s SDK with information about the app’s user, the user’s location, or the app itself for better ad targeting.
To provide information about the app’s user and the user’s location, invoke the SetAdRequestUserParams
function from ChocolatePlatformCC2DXBridge
:
SetAdRequestUserParams(
"23", //age
"23/11/1990", //birthday
"male", //gender
"single", //marital status
"Asian", //ethnicity
"999", //dma code
"123123", //postal code
"321321", //current postal
"0.0", //latitude
"0.0" //longitude
);
To provide information about the app, invoke the SetAdRequestAppParams
function from ChocolatePlatformCC2DXBridge
:
SetAdRequestAppParams( "ChocolateAds", //app name "Chocolate", //publisher name "chocolateads.com", //app domain "chocolateplatform.com", //publisher domain "itunes.com/chocolate", //app store url "Utilities" //app category );
To aid with compliance to the EU’s GDPR regulation that became effective on May 25, 2018, configure the app as follows:
setPrivacySettings( true, //gdpr applies null //gdpr consent string -- pass one if obtained consent from user );
Ad delivery can be improved by initializing the SDK early. It’s a good idea to make this call once, soon after the app launch. This will make it less likely that the first request for an ad will time out due to a lengthy initialization process.
initWithAPIKey( YOUR_CHOCOLATE_API_KEY );
5. Load the ad units
Load Interstitial Ad
loadInterstitialAd( YOUR_CHOCOLATE_API_KEY );
Load Reward Ad
loadRewardAd( YOUR_CHOCOLATE_API_KEY );
6. Implement the ad callbacks and show the ads on successful loading
void YourScene::interstitialAdLoaded(){ showInterstitialAd(); } void YourScene::interstitialAdFailed(){ CCLOG("%s", "interstitial ad failed); } void YourScene::interstitialAdShown(){} void YourScene::interstitialAdClicked(){} void YourScene::interstitialAdDismissed(){} #pragma mark - Reward ad callback method void YourScene::rewardedAdLoaded(){ showRewardAd( 30, //reward amount "coin", //reward name "Chocolate1", //reward user id "XNydpzNLIj2pBRM8" //secret key ); } void YourScene::rewardedAdFailed(){ CCLOG("%s", "reward ad failed); } void YourScene::rewardedAdShown(){} void YourScene::rewardedAdDismissed(){} void YourScene::rewardedAdFinished(int rewardAmount, const char *rewardName){ CCLOG("%d of %s rewarded", rewardAmount, rewardName); }
Note: implementation of callbacks is optional, and you can choose to take another path, such as additional UI before the user sees the ad. However, calling the show
methods before the load completes, either on interstitial or rewarded ad units, will produce no result.
7. Integrate the SDK and mediation partners
After opening the Xcode project generated by the cocos tool, you can follow the instructions here, with the following caveats:
- Ignore the “Ad Targeting Setup” section. That is handled by your calls to
setAdRequestAppData
andsetAdRequestUserData
functions, as described above - You might have to add
GameController.framework
to the project to get the cocos2d library to compile once the-ObjC
flag is set in the app build settings.
Run the app from Xcode and see ads.
How to turn on ads on your ad unit
Please send us your sample app with the integrated code. We will help you validate the SDK setup and turn on the demand.