ReactNative is an SDK that allows cross-platform mobile app development. A plugin allows you to link such an app to Chocolate Platform’s ad SDK, and run interstitial and rewarded video ads.
Creating a ReactNative running Chocolate ads can be done with the following steps:
1. Obtaining the plugin
Install the plugin via npm:
npm install chocolateplatform-plugin-react
2. Linking the plugin
At the head of the code file where you intend to run ads according to your app’s logic, import the plugin:
import ChocolateReactBridge from 'chocolateplatform-plugin-react';
3. Subscribing to callbacks
Chocolate provides callbacks at important ad related events. You can subscribe to events related to interstitial ads, rewarded ads, or both:
ChocolateReactBridge.subscribeToInterstitialCallbacks((eventName) => {
if(eventName === "onInterstitialLoaded") {
} else if (eventName === "onInterstitialClicked") {
} else if (eventName === "onInterstitialShown") {
} else if (eventName === "onInterstitialFailed") {
} else if (eventName === "onInterstitialDismissed") {
} else {
console.log("unknown event");
}
});
ChocolateReactBridge.subscribeToRewardCallbacks((eventName, rewardName = '', rewardAmount = 0) => {
if(eventName === "onRewardedLoaded") {
} else if (eventName === "onRewardedCompleted") {
console.log("reward ad done, awarded " + rewardAmount + ' ' + rewardName );
} else if (eventName === "onRewardedShown") {
} else if (eventName === "onRewardedFailed") {
} else if (eventName === "onRewardedShowFailed") {
} else if (eventName === "onRewardedDismissed") {
} else {
console.log("unknown event");
}
});
For the rewarded ads, only the onRewardedCompleted
callback will provide the rewardName
and rewardAmount
parameters.
3.1 Reward Handling (for Rewarded Video Ad Unit Only)
You have two options in terms of reward handling.
Server Callback
Server Callbacks allow user rewards to be sent directly from our servers to yours. Our servers send a real-time notification as soon as a reward is logged in our system. Your servers will then need to be able to process the reward as soon as it comes in, and then populate the reward out to the user.
The main benefit of server-side callbacks is that all traffic directly related to crediting the reward is completely outside the control or visibility of the user. Because there is no sensitive traffic going through the user’s device, there is less chance for fraud.
For server callback setup, please log in to portal and utilize the following resources:
• Callback Security Secret – If you want to enable verification via ‘digest’, you will need this.
• Macro Details List – Shows list of supported macros. Also find the details of ‘digest’ from here.
• Callback Tester – Use this tool to have our server ping your server to test the connectivity between our server and yours.
Client Callback
If you plan on handling the user rewarded via your own code and your systems, please choose this option. You should be able to use the callback below.
onRewardedCompleted
4. Launching the ad
This occurs in two steps: first, you load the ad type you want, passing in the API key provided by Chocolate.
ChocolateReactBridge.loadInterstitialAd("API_KEY_GOES_HERE");
ChocolateReactBridge.loadRewardAd("API_KEY_GOES_HERE");
If you have subscribed to the callbacks as in step 3, you will receive the onInterstitialLoaded
or onRewardedLoaded
callback if the ad loads successfully. Otherwise, you should receive the onInterstitialFailed
or onRewardedFailed
callbacks, and handle them appropriately. Once the ad successfully loads, you can play it at any time:
ChocolateReactBridge.showInterstitialAd();
ChocolateReactBridge.showRewardAd(
"coins", //reward name
100, //reward amount
"", //user ID
"" //secret key
);
5. Setting up the native app
Once the app logic is complete, you can let ReactNative generate an iOS Xcode project with the native app:
react-native eject ios
The iOS app will be located in the ios
folder in your app’s root directory. You can now work with that project directly. You need to do two things:
1. Integrate the Chocolate SDK and adjust the settings
You can do this with either Cocoapods or manual approach. Follow the directions up to the “Chocolate SDK Initialization” section.
2. Add the ReactNative bridge files to the project
There are two files, ChocolateReactBridge.h
and ChocolateReactBridge.m
. They are found in the node_modules
directory in the root of your app.
Once this done, you can build the iOS app in Xcode to run on the simulator or an iOS device. Ads will play according to the app logic created in ReactNative.
Efficiency, Targeting Information and Privacy Settings (Optional)
The Chocolate SDK provides additional api calls to improve ad experience. The plugin exposes those calls to ReactNative.
-
Efficiency
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.
ChocolateReactBridge.initWithAdUnitID("API_KEY_GOES_HERE");
-
Targeting
For more relevant ads more likely to result in higher yields, you can provide the Chocolate Platform SDK information useful for targeting ads to your audience. The information used for targeting is of three types: about the user, about the location, and about the app.
Providing user information:
ChocolateReactBridge.setDemographics( 20, //age new Date(1998, 1, 1), //birthday "male", //gender "single", //marital status "Asian" //ethnicity );
Providing location information:
ChocolateReactBridge.setLocation( "999", //DMA code "94539", //postal code "94539", //current postal "28.70", //latitude "77.10". //longitude );
Providing app information:
ChocolateReactBridge.setAppInfo( "Angry Birds", //app name "Rovio", //publisher name "angrybirds.com", //app domain "rovio.com", //publisher domain "APP_STORE_URL_GOES_HERE", //App Store url "IAB9" //IAB category );
-
Privacy
Some jurisdictions have specific legislation pertaining to users’ online privacy and data collection by internet actors. In the United States, the Children’s Online Privacy Protection Act (COPPA) limits collection of data from children. If your target audience is children under 13, this information should be provided to the SDK:
ChocolateReactBridge.setCoppaStatus(true);
The EU has enacted GDPR (General Data Protection Regulation). You can provide the relevant information to the SDK as follows:
ChocolateReactBridge.subjectToGDPR( false, //subjectToGDPR (false outside EU) null //gdprConsentString );
Where
- subjectToGDPR
- Set this to true if the user is subject to GDPR
- Set this to false if the user is not subject to GDPR
- gdprConsentString
- GDPR consent string in official IAB format. null will be interpreted as user has opted-out of all consent for all vendors.
Don’t have a CMP (consent management platform) solution yet? Don’t worry – if none of the GDPR values are configured, our mediation code will fall back to internal logic and handle the mediation in GDPR compliant way.
- subjectToGDPR
6. 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 plugin setup and turn on demand.