This API uses a publisher-subscriber architecture in which the MAX SDK broadcasts MAX ad revenue events and MMPs subscribe to the max_revenue_events topic. AppLovin recommends that you subscribe to that topic immediately after your app launches, so that you will not miss events. Each broadcast event includes the following parameters:
Name | Description | Example |
---|---|---|
ad_format | The ad format of the ad. | BANNER, MREC, INTER, REWARDED |
country_code | The revenue’s country code. | US (for the United States) |
id | Unique internal ID for the serve. | 19017d954ffcded6c42772b09ec36699efe0bfc2 |
max_ad_unit_id | The MAX Ad Unit ID. | 65d8d0195e50bda6 |
network_name | Display name of the network that showed the ad. | AppLovin |
revenue | A double representing the revenue amount. | 0.002067201 |
third_party_ad_placement_id | The ad’s placement ID, if any (bidding may not have one). | inter_regular |
user_segment | The user segment of the user to whom the ad was shown. | experiment5 |
MMPs are responsible for setting the values of the parameters in these broadcast events. If you are not getting data for one or more of these parameters, or if that data is not reliable, work with your MMP to ensure that they are supporting all relevant parameters.
The following example shows how you subscribe to and process the events that the SDK broadcasts.
-
package your.package.name; import android.app.Activity; import android.os.Bundle; import com.applovin.communicator.AppLovinCommunicator; import com.applovin.communicator.AppLovinCommunicatorMessage; import com.applovin.communicator.AppLovinCommunicatorSubscriber; import androidx.annotation.Nullable; public class ExampleActivity extends Activity implements AppLovinCommunicatorSubscriber { @Override protected void onCreate(@Nullable final Bundle savedInstanceState) { super.onCreate( savedInstanceState ); AppLovinCommunicator.getInstance( getApplicationContext() ).subscribe( this, "max_revenue_events" ); } @Override protected void onDestroy() { // Unsubscribe when subscription is no longer needed AppLovinCommunicator.getInstance( getApplicationContext() ).unsubscribe( this, "max_revenue_events" ); super.onDestroy(); } @Override public void onMessageReceived(final AppLovinCommunicatorMessage message) { // If you are subscribed to multiple topics, check for the desired one if ( "max_revenue_events".equals( message.getTopic() ) ) { Bundle data = message.getMessageData(); double revenue = data.getDouble( "revenue" ); // Miscellaneous data String countryCode = data.getString( "country_code" ); // "US" for the United States, etc - Note: Do not confuse this with currency code which is "USD" String networkName = data.getString( "network_name" ); // Display name of the network which showed the ad (e.g. "AdColony") String adUnitId = data.getString( "max_ad_unit_id" ); // The MAX Ad Unit ID String thirdPartyAdPlacementId = data.getString( "third_party_ad_placement_id" ); // The ad's placement id, if any (bidding may not have one) String adFormat = data.getString( "ad_format" ); // The ad format of the ad (e.g. "BANNER", "MREC", "INTER", "REWARDED", "REWARDED_INTER") String userSegment = data.getString( "user_segment" ); // The user segment of the user to whom the ad was shown } } @Override public String getCommunicatorId() { return "your_company_name_in_snake_case"; } }
-
package your.package.name import android.app.Activity import android.os.Bundle import com.applovin.communicator.AppLovinCommunicator import com.applovin.communicator.AppLovinCommunicatorMessage import com.applovin.communicator.AppLovinCommunicatorSubscriber class ExampleActivity : Activity(), AppLovinCommunicatorSubscriber { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate( savedInstanceState ) AppLovinCommunicator.getInstance( applicationContext ).subscribe( this, "max_revenue_events" ) } override fun onDestroy() { // Unsubscribe when subscription is no longer needed AppLovinCommunicator.getInstance( applicationContext ).unsubscribe( this, "max_revenue_events" ) super.onDestroy() } override fun onMessageReceived(message: AppLovinCommunicatorMessage) { // In the case that you are subscribed to multiple topics, check for the desired one if ( "max_revenue_events" == message.topic ) { val data: Bundle = message.messageData val revenue = data.getDouble( "revenue" ) // Miscellaneous data val countryCode = data.getString( "country_code" ) // "US" for the United States, etc - Note: Do not confuse this with currency code which is "USD" val networkName = data.getString( "network_name" ) // Display name of the network which showed the ad (e.g. "AdColony") val adUnitId = data.getString( "max_ad_unit_id" ) // The MAX Ad Unit ID val thirdPartyAdPlacementId = data.getString( "third_party_ad_placement_id" ) // The ad's placement id, if any (bidding may not have one) val adFormat = data.getString( "ad_format" ) // The ad format of the ad (e.g. "BANNER", "MREC", "INTER", "REWARDED") val userSegment = data.getString( "user_segment" ) // The user segment of the user to whom the ad was shown } } override fun getCommunicatorId(): String { return "your_company_name_in_snake_case" } }
The value of "revenue" may be -1 in the case of an error.