Rewarded Video Integration for Unity

Get up and running with the Rewarded Video Ad Unit in 4 easy steps:

  1. Implement the Rewarded Video Listener 
  2. Initialize the Rewarded Video Unit
  3. Show a Video Ad to Your Users
  4. Reward the User
Before You Start
Make sure you have correctly integrated the ironSource Unity Plugin as well as any additional Ad Network Adapters into your application. Integration is outlined here.

Step 1. Implement the Rewarded Video Listener

The ironSource Unity Plugin fires several events to inform you of ad availability. To receive these events, create an empty game object in each on your unity scenes and drag SupersonicEvents.cs onto it.

Add the following code to register to the events:

public class VideoScript : MonoBehaviour {
void OnEnable() 
{
  SupersonicEvents.onRewardedVideoInitSuccessEvent += RewardedVideoInitSuccessEvent;
  
  SupersonicEvents.onRewardedVideoInitFailEvent += RewardedVideoInitFailEvent;
  
  SupersonicEvents.onRewardedVideoAdOpenedEvent += RewardedVideoAdOpenedEvent;
  
  SupersonicEvents.onRewardedVideoAdRewardedEvent += RewardedVideoAdRewardedEvent;
  
  SupersonicEvents.onRewardedVideoAdClosedEvent += RewardedVideoAdClosedEvent;
  
  SupersonicEvents.onVideoAvailabilityChangedEvent += VideoAvailabilityChangedEvent;
  
  SupersonicEvents.onVideoStartEvent += VideoStartEvent;
  
  SupersonicEvents.onVideoEndEvent += VideoEndEvent;
 } 
}

Add the following code to stop listening to the events:

public class VideoScript : MonoBehaviour {
void OnDisable() 
{
  SupersonicEvents.onRewardedVideoInitSuccessEvent -= RewardedVideoInitSuccessEvent;
  
  SupersonicEvents.onRewardedVideoInitFailEvent -= RewardedVideoInitFailEvent;
  
  SupersonicEvents.onRewardedVideoAdOpenedEvent -= RewardedVideoAdOpenedEvent;
  
  SupersonicEvents.onRewardedVideoAdRewardedEvent -= RewardedVideoAdRewardedEvent;
  
  SupersonicEvents.onRewardedVideoAdClosedEvent -= RewardedVideoAdClosedEvent;
  
  SupersonicEvents.onVideoAvailabilityChangedEvent -= VideoAvailabilityChangedEvent;
  
  SupersonicEvents.onVideoStartEvent -= VideoStartEvent;
  
  SupersonicEvents.onVideoEndEvent -= VideoEndEvent;
  }
}

The Plugin will notify the Listener of all possible events listed below:

//Invoked when initialization of RewardedVideo has finished successfully.
  void RewardedVideoInitSuccessEvent() {
  }
  //Invoked when RewardedVideo initialization process has failed. 
  //SupersonicError contains the reason for the failure. 
  void RewardedVideoInitFailEvent(SupersonicError error) {
    
    Debug.Log("Init rewarded video error " );
    
  }
  //Invoked when the RewardedVideo ad view has opened.
  //Your Activity will lose focus. Please avoid performing heavy 
  //tasks till the video ad will be closed.
  void RewardedVideoAdOpenedEvent() {
  }  
  //Invoked when the RewardedVideo ad view is about to be closed.
  //Your activity will now regain its focus.
  void RewardedVideoAdClosedEvent() {
  }
  //Invoked when there is a change in the ad availability status.
  //@param - available - value will change to true when rewarded videos are available. 
  //You can then show the video by calling showRewardedVideo().
  //Value will change to false when no videos are available.
  void VideoAvailabilityChangedEvent(bool available) {
    //Change the in-app 'Traffic Driver' state according to availability.
    bool rewardedVideoAvailability = available;
  }
  //Invoked when the video ad starts playing.
  void VideoStartEvent() {
  }
  //Invoked when the video ad finishes playing.
  void VideoEndEvent() {
  }
  //Invoked when the user completed the video and should be rewarded. 
  //If using server-to-server callbacks you may ignore this events and wait for 
  //the callback from the Supersonic server.
  //@param - placement - placement object which contains the reward data
  void RewardedVideoAdRewardedEvent(SupersonicPlacement placement) {
  }
Note:  Note:
ironSource provides an error code mechanism to help you understand errors you may run into during integration or live production. See the complete guide here.

Step 2. Initialize the Rewarded Video Unit

Once you’ve initialized the Rewarded Video Unit, ironSource will automatically check all available Ad Networks for videos throughout the life-cycle of the app. You should initialize Rewarded Video as early as possible to allow time for all Ad Networks to prepare Video content. We recommend doing so on app launch.

public class MyApp : MonoBehaviour {
void Start() {
  Supersonic.Agent.start();
  //Set the unique id of your end user.
  string uniqueUserId = "APPLICATION_USER_ID_HERE"; 
  string appKey = "YOUR_APPLICATION_KEY";
  //Init Rewarded Video
  Supersonic.Agent.initRewardedVideo(appKey,uniqueUserId);
  }
}
Note: Note:
  1. appKey is the unique ID of your Application in your ironSource account. You can find the App Key on any of the Mediation or Setting pages.
    ironsource-platform-app-key
  2. Important! uniqueUserId is the unique ID of your end user. We support NSString from 1 to 64 characters. Common practice is to use the Apple Advertising ID (IDFA) or Google Advertising ID (GAID). Read more information on User IDs here.
  3. ironSource supports Network Change Status, which enables the SDK to change the availability according to network modifications, i.e. in the case of no network connection, the availability will turn to FALSE.
    The default of this function is False; in the case you’d like to utilize it, you can activate it in the Init with the following string:
    Supersonic.Agent.shouldTrackNetworkState (true);

Step 3. Show a Video Ad to Your Users

By correctly implementing the RewardedVideoListener, you can receive the availability status through the onVideoAvailabilityChanged callback.

 void VideoAvailabilityChangedEvent(bool available) {
    //Change the in-app 'Traffic Driver' state according to availability.
    bool rewardedVideoAvailability = available;
  }

Alternatively, ask for ad availability directly by calling:

bool available = Supersonic.Agent.isRewardedVideoAvailable();

Once an Ad Network has an available video you are ready to show this video ad to your users. This is the ideal moment to insert a trigger to encourage your users to watch the video ad. By calling the showRewardedVideo() method on your SupersonicAgent instance, you can show a Video Ad to your users:

Supersonic.Agent.showRewardedVideo();

With the ironSource Ad Placements tool, you can customize and optimize the Rewarded Video experience. This tool enables you to present videos to your users from different placements depending on the reward. You can use the below function to define the exact Placement you’d like to show an ad from. Navigate to the Ad Placement document for more details. The Reward settings of this Placement will be pulled from the ironSource server:

Supersonic.Agent.showRewardedVideo("placementName");

To get details about the specific Reward associated with each Ad Placement, you can call the following (only call this function after getting initSuccess callback):

Placement placement = Supersonic.Agent.getPlacementInfo(placementName);
//Placement can return null if the placementName is not valid.
if(placement != null)
{
    String rewardName = placement.getRewardName();
    int rewardAmount = placement.getRewardAmount();
}

In addition to ironSource’s Ad Placements, you can now configure capping and pacing settings for selected placements. Capping and pacing improves the user experience in your app by limiting the amount of ads served within a defined timeframe. Read more about capping and pacing here.

Note: Note: If you choose to use the capping and pacing tool for Rewarded Video, we recommend calling the below method to verify if a certain placement has reached its ad limit. This is to ensure you don’t portray the Rewarded Video button when the placement has been capped or paced and thus will not serve the Video ad.
bool isRewardedVideoPlacementCapped(string placementName);

New! Dynamic UserID to Verify AdRewarded Transactions
The Dynamic UserID is a parameter that can be changed throughout the session and will be received in the server-to-server ad rewarded callbacks. This parameter helps verify AdRewarded transactions and must be set before calling ShowRewardedVideo.

boolean setDynamicUserId(String dynamicUserID);

Step 4. Reward the User

The ironSource SDK will fire the onRewardedVideoAdRewardedEvent each time the user successfully completes a video.

Note: Note: The onRewardedVideoAdRewardedEvent and onRewardedVideoAdClosedEvent are asynchronous. Make sure to set up your listener to grant rewards even in cases where onRewardedVideoAdRewarded is fired after the onRewardedVideoAdClosedEvent.
 

void RewardedVideoAdRewardedEvent(SupersonicPlacement ssp){
    //TODO - here you can reward the user according to the reward name and amount
    ssp.getPlacementName();
    ssp.getRewardName());
    ssp.getRewardAmount();
}
Note: Note:
  1. The default setting in your ironSource account is to notify you of user completions/rewards via the supersonicAdRewarded:amount callback within the client of your app. Additionally, if you would also like to receive notifications to your back-end server, you can turn on server-to-server callbacks.
  2. If you turn on server-to-server callbacks, remember not to reward the user more than once for the same completion. We will be firing both the client-side callback and the server-to-server callback, so you will get two notifications for each completion. To utilize server-to-server callbacks, see here.

Done!
You are now all set to deliver Rewarded Video in your application.

First Time Integration Tip

If this is a new integration for your application, your app will by default be in ‘Test Mode‘ on your ironSource dashboard. While your app is in Test Mode, the ironSource SDK will print more logs to the console in order to provide greater visibility into the SDK processes. To test your ad inventory, set up your Test Devices. Until you turn on live ad inventory, you will receive test campaigns that don’t generate revenue. Make sure to select Go Live! on the Ad Units page when your app is ready for live ad inventory.

ironsource-go-live-with-rewarded-video


What’s Next?
Follow our integration guides to implement additional Rewarded Video Ad networks on our Video Mediation platform or configure additional Ad Units: