Impression-Level User Revenue API for MMPs

This API uses a publisher-subscriber architecture. 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. That way, you will not miss events. Each broadcast event includes the following parameters:

NameDescriptionExample
ad_formatThe ad format of the ad.BANNER, MREC, INTER, REWARDED
country_codeThe revenue’s country code.US (for the United States)
idUnique internal ID for the serve.19017d954ffcded6c42772b09ec36699efe0bfc2
max_ad_unit_idThe MAX Ad Unit ID.65d8d0195e50bda6
network_nameDisplay name of the network that shows the ad.AppLovin
revenueA double representing the revenue amount.0.002067201
third_party_ad_placement_idThe ad’s placement ID, if any (bidding may not have one).inter_regular
user_segmentThe user segment of the user to whom the ad shows.experiment5

MMPs are responsible for setting the values of the parameters in these broadcast events. If you do not get data for one or more of these parameters, or if that data is not reliable, work with your MMP to ensure that they support all relevant parameters.

The following example shows how you subscribe to and process the events that the SDK broadcasts.

#import "ExampleViewController.h"
#import <AppLovinSDK/AppLovinSDK.h>

@interface ExampleViewController()<ALCSubscriber>
@end

@implementation ExampleViewController

- (void)viewDidLoad
{
  [super viewDidLoad];

  [[ALCCommunicator defaultCommunicator] subscribe: self forTopic: @"max_revenue_events"];
}

- (void)viewWillDisappear:(BOOL)animated
{
  [super viewWillDisappear: animated];

  // Unsubscribe when subscription is no longer needed
  [[ALCCommunicator defaultCommunicator] unsubscribe: self forTopic: @"max_revenue_events"];
}

#pragma mark - AppLovin Communicator Subscriber Protocol

- (void)didReceiveMessage:(ALCMessage *)message
{
  // If you are subscribed to multiple topics, check for the desired one
  if ( [@"max_revenue_events" isEqualToString: message.topic] )
  {
    double revenue = [message.data[@"revenue"] doubleValue];

    // MAX revenue event messages will also contain the same info as MAX ad event messages, but without the "type"
    NSString *countryCode = message.data[@"country_code"]; // "US" for the United States, etc - Note: Do not confuse this with currency code which is "USD"
    NSString *networkName = message.data[@"network_name"]; // Display name of the network which showed the ad
    NSString *adUnitIdentifier = message.data[@"max_ad_unit_id"]; // The MAX Ad Unit ID
    NSString *thirdPartyAdPlacementIdentifier = message.data[@"third_party_ad_placement_id"]; // The ad's placement id, if any (bidding may not have one)
    NSString *adFormat = message.data[@"ad_format"]; // The ad format of the ad (e.g. "BANNER", "MREC", "INTER", "REWARDED")
  }
}

- (NSString *)communicatorIdentifier;
{
  return @"«your_company_name_in_snake_case»";
}

@end

If "revenue" is -1, this indicates an error.


Was this article helpful?
Was this article helpful?
search