Rewarded video
Rewarded video - user-initiated ads where users can earn in-app rewards in exchange for viewing a video ad.
You can use our demo app as a reference project.
Display
To display rewarded video, call the following code in the activity:
Appodeal.show(this, Appodeal.REWARDED_VIDEO);
SDK can't show ads without a network connection!
Appodeal.show()
returns a boolean value indicating whether the show method call was passed to the appropriate SDK.
Check If Ad Is Loaded
Appodeal.isLoaded(Appodeal.REWARDED_VIDEO);
We recommend you always check whether an ad is available before trying to show it.
Example:
if(Appodeal.isLoaded(Appodeal.REWARDED_VIDEO)) { Appodeal.show(this, Appodeal.REWARDED_VIDEO); }
Placements
Appodeal SDK allows you to tag each impression with different placement. To use placements, you need to create placements in Appodeal Dashboard. Read more about placements.
To show an ad with placement, you have to call show method like this in your activity:
Appodeal.show(this, Appodeal.REWARDED_VIDEO, "yourPlacementName");
If the loaded ad can’t be shown for a specific placement, nothing will be shown. If auto caching is enabled, sdk will start to cache another ad, which can affect display rate. To save the loaded ad for future use (for instance, for another placement) check if the ad can be shown before calling the show method:
if(Appodeal.canShow(Appodeal.REWARDED_VIDEO, "yourPlacementName")){ Appodeal.show(this, Appodeal.REWARDED_VIDEO, "yourPlacementName"); }
You can configure your impression logic for each placement.
If you have no placements, or call Appodeal.show with a placement that does not exist, the impression will be tagged with 'default' placement and its settings will be applied.
Important!
Placement settings affect ONLY ad presentation, not loading or caching.
Callbacks
Appodeal.setRewardedVideoCallbacks(new RewardedVideoCallbacks() { @Override public void onRewardedVideoLoaded(boolean isPrecache) { // Called when rewarded video is loaded } @Override public void onRewardedVideoFailedToLoad() { // Called when rewarded video failed to load } @Override public void onRewardedVideoShown() { // Called when rewarded video is shown } @Override public void onRewardedVideoShowFailed() { // Called when rewarded video show failed } @Override public void onRewardedVideoClicked() { // Called when rewarded video is clicked } @Override public void onRewardedVideoFinished(double amount, String name) { // Called when rewarded video is viewed until the end } @Override public void onRewardedVideoClosed(boolean finished) { // Called when rewarded video is closed } @Override public void onRewardedVideoExpired() { // Called when rewarded video is expired } });
Cache Ad Manually
By default, auto caching is enabled: Appodeal SDK starts to load Rewarded Video right after the initialization method is called.
The next Rewarded Video ad starts to load right after the show method is called.
To disable automatic caching for rewarded videos, use the code below before the SDK initialization:
Appodeal.setAutoCache(Appodeal.REWARDED_VIDEO, false);
Appodeal.cache(this, Appodeal.REWARDED_VIDEO);
Callbacks
Server-to-server Callbacks
To secure your app's economy, we offer S2S reward callbacks. To validate each reward, you need to set up a callback URL on your server that will receive the reward information. Appodeal will pass the user data to your callback URL that you will need to validate and adjust the user balance accordingly.
1. Create the reward callback URL on your server that will receive the reward information.
2. Fill the created URL and the encryption key in the app settings in your dashboard.
3. The reward callback will be sent to your URL using GET request with two parameters:
{http://example.com/reward}?data1={data1}&data2={data2}
5. Check impression_id
for uniqueness and store it in your system to prevent the duplicate of transactions.
To set the user ID, use this method before the SDK initialization:
Appodeal.setUserID("User#123")
We offer sample scripts in Go, PHP, Ruby, Java, Node.js, Python 3, and C# to decrypt the data. If you need samples in other languages, please contact our support team and we will provide it to you.
Sample in PHP: reward.php.
Sample in Ruby: reward.rb.
Sample in Java: reward.java.
Sample in Node.js: reward.js.
Sample in Python 3: reward.py.
Sample in C#: reward.cs.
Sample in Go: reward.go.
Get Reward Data For Placement
To get the reward data set for a specific placement use the following method before showing the rewarded video:
Appodeal.getRewardParameters(placementName);
Check If Ad Is Initialized
To check if the rewarded video was initialized, you can use the method:
Appodeal.isInitialized(Appodeal.REWARDED_VIDEO);
true
, if the rewarded video was initialized.Check If Autocache Is Enabled
To check if autocache is enabled for rewarded video, you can use the method:
Appodeal.isAutoCacheEnabled(Appodeal.REWARDED_VIDEO);
true
, if autocache is enabled for rewarded video.Get Predicted eCPM
To get the predicted eCPM from the next block in the caching queue, use the method:
Appodeal.getPredictedEcpm(Appodeal.REWARDED_VIDEO);
This method is reasonable to use if manual caching of ads is enabled.
Mute Videos If Call Volume Is Muted
You can mute the sound in a rewarded video using the method:
Appodeal.muteVideosIfCallsMuted(true);
This method works if the user's device has silent mode or only vibration enabled.
Check Viewability
You can always check in logs if show was tracked and your ad is visible.
You will see the RewardedVideo [Notify Shown] log if show was tracked successfully.
Appodeal com.example.app D RewardedVideo [Notify Shown]