Set User ID
If you’re using server-to-server callbacks to reward your users with ironSource SDK rewarded ad units, or using Ad Quality user journey, you must define a unique identifier for each user (“UserID”), using the setUserID method.
Set the UserID before the init request, to make sure you avoid any data loses, related to the user. Use a unique identifier, with up to 64 alphanumeric characters.
IronSource.setUserId("UserID");
Note: You should not use GAID/AAID as an identifier, in order to ensure UserID is available and unique for all users.
Define Segments
You can now easily tailor the way you serve your ads to fit a specific audience! You’ll need to inform our servers of the users’ details so the SDK will know to serve ads according to the segment the user belongs to.
ironSource SDK supports three methods to convey data to our servers to outline the user segment, namely:
- Device Properties: the ironSource SDK collects certain standard parameters that pertain to the users’ device automatically, such as location, device model, device manufacturer, app version, and OS. You do not need to convey this data to us.
- User Properties: comprehensive user data (for example, age, gender, and creation date) must be relayed through the API. (See a full list of supported segment properties with descriptions in the following section.) Follow the instructions to send us your user’s details so our SDK can categorize your different users based on the segments you defined on the LevelPlay platform.
- Custom Segments: you can create a custom segment without conveying user details to our servers and tailor ad settings for that user segment.
Dynamic Segmentation
If you’re using ironSource SDK 7.2.0+, you can use IronSourceSegment API to change your segmentation during the session.
This will affect the next loaded ad, and can be called before loading each ad unit, to dynamically affect the waterfall . You can learn more about LevelPlay segmentation here.
Pass User Properties
Once you’ve defined segments on the LevelPlay platform, you’ll need to inform our servers of the user’s particulars.
Define what properties to send to our servers on which to base the segments. You can transmit this information through one of the following methods:
- If you are familiar with the segment that the user belongs to, enter the segment name:
mIronSegment.setSegmentName(name);
- Send us the user details. ironSource SDK provides a range of standard user properties that you can set to attribute a user to a segment in the API. Scroll down for a table of the support user segment properties.
// Create segment object mIronSegment = IronSourceSegment(); // Set user age mIronSegment.setAge(age); // Set user gender mIronSegment.setGender(gender); // Set user's level mIronSegment.setLevel(level); // Set user creation date mIronSegment.setUserCreationDate(date); // Set user's total in-app purchases mIronSegment.setIAPTotal(iapt); // Set user's paying status mIronSegment.setIsPaying(isPaying);
In addition, you can set up to 5 custom user properties per segment:
// Set custom parameters (up to 5) mIronSegment.setCustom(key,value);
Next, to serve your ad units based on segments to tailor the user’s ad experience, call the following function complete with either the segment name or user properties:
IronSource.setSegment(mIronSegment);
Supported User Segment Properties
Segment Properties | Type | Limitation | Description |
---|---|---|---|
segmentName | String | alphanumeric up to 32 letters | The given name of the segment in your LevelPlay account |
Age | Int | 1-99 | The user’s age |
Gender | String | female or male | The user’s gender |
Paying | Boolean | True or False | True if the user has spent any money on in-app purchases False if the user has not spent any money on in-app purchases |
iap_total | Double | 1-999999.99 | The total amount of money that the user has spent on in-app purchases |
userCreationDate | Long | Cannot be smaller than 0 | The date the user installed the app in milliseconds |
Custom Parameters | key=string, value=string | ironSource SDK supports up to 5 custom parameters alphanumeric up to 32 letters | Any additional data you’d like to dispatch to our server |
Register to the following callback to receive the segment name that your user belongs to. If the callback string (segment name) returns empty, there were no correlating segments found for the user in the ironSource Segment module.
SegmentListener onSegmentReceived(String segment){}
Custom Parameters
The ironSource SDK supports custom parameters for Rewarded Video. You can pass custom parameters upon the initialization of the ad unit and receive the parameters upon a user’s completion event. You can now pass custom parameters for all mediation networks on the LevelPlay mediation platform.
Note:
- Custom parameters work in conjunction with server-to-server completion callbacks only. You will receive the parameter as part of the callback string.
- You may insert more than one custom parameter in the init request.
Implementation Code
Rewarded Video
Note:
- Custom Parameters can be set several times per session.
- To reset the value, use clearRewardedVideoServerParameters, and then set the new value.
IronSource.setRewardedVideoServerParameters(Map<String, String> params); IronSource.clearRewardedVideoServerParameters();
Price Floor Configuration
The Floor Configuration API lets you set a price floor for a specific ad unit. By setting a price floor for each user, you can improve targeting efficiency, reduce latency, and optimize ad performance.
The price floor must be assigned when creating the ad object, and it applies to all subsequent loads for that object.
Note: Min SDK 8.9.0
Property | Type | Description |
---|---|---|
Bid floor | double | The price in USD that defines the minimum eCPM applied to traditional instances and bidders. |
Interstitial ads example
// Define a price floor configuration var adConfig = new LevelPlayInterstitialAd.Config.Builder() .setBidFloor(1.23) // Set the price floor in USD .build(); // Apply the configuration to an interstitial ad unit var interstitialAd = new LevelPlayInterstitialAd("adUnitId", adConfig);
Full interstitial implementation is available here.
Rewarded ads example
// Define a price floor configuration val adConfig = LevelPlayRewardedAd.Config.Builder() .setBidFloor(1.23) // Set the price floor in USD .build() // Apply the configuration to a rewarded ad unit val rewardedAd = LevelPlayRewardedAd("adUnitId", adConfig)
Full rewarded ads implementation is available here.
Banner ads example
// Define a price floor configuration var adConfig = new LevelPlayBannerAd.Config.Builder() .setBidFloor(1.23) // Set the price floor in USD .build(); // Apply the configuration to a banner ad unit var bannerAd = new LevelPlayBannerAdView(context, "adUnitId", adConfig);
Full banner ads implementation is available here.
ironSource SDK Error Codes
ironSource provides an error feedback mechanism to provide explanation for any failure in the SDK integration. You will receive these errors when something went wrong or an aspect of the integration wasn’t completed correctly.
The ironSource Error object contains an error code and message. These are all the possible errors and their message based on their functions:
Error Codes | Ad Unit | Description |
---|---|---|
508 | N/A |
|
509 | Interstitial, Rewarded Video | Show Fail: No ads to show |
510 | Interstitial, Rewarded Video, Banner | Load Fail: Server response failed |
520 | Interstitial, Rewarded Video | Show Fail: No internet connection; ShouldTrackNetworkState is enabled Show Fail: No internet connection |
524 | Interstitial, Rewarded Video | Show Fail: Placement %@ has reached its limit as defined per pace Show Fail: Placement %@ has reached its capping limit |
526 | Interstitial, Rewarded Video | Show Fail: Ad unit has reached its daily cap per session |
604 | Banner | Can’t load because the placement is capped |
605 | Banner | Unexpected exception while loading the banner |
606 | Banner | No banner fill on all the networks on the first load |
1007 | Interstitial, Rewarded Video | Auction Fail: Auction request did not contain all required information |
1022 | Rewarded Video | Show Fail: Cannot show an RV while another RV is showing |
1023 | Rewarded Video | Show Fail: Show RV called when there are no available ads to show |
1035 | Interstitial | Empty Waterfall |
1036 | Interstitial | Show Fail: Cannot show an interstitial while another interstitial is showing |
1037 | Interstitial | Load Fail: Cannot load an interstitial while another interstitial is showing |
1039 | Interstitial | Exception while calling show interstitial |