该 API 采用 publisher-subscriber (开发者-订阅者) 架构。
MAX SDK 会广播 MAX 广告收入事件,MMP 订阅 max_revenue_events 主题。
AppLovin 建议您在应用启动后立即订阅该主题,避免错过任何事件。
每个广播事件都包含以下参数:
| 名称 | 描述 | 示例 |
|---|---|---|
ad_format | 广告格式。 | BANNER, MREC, INTER, REWARDED |
country_code | 收入国家代码。 | US (针对美国) |
id | 广告的唯一内部 ID。 | 19017d954ffcded6c42772b09ec36699efe0bfc2 |
max_ad_unit_id | MAX Ad Unit ID。 | 65d8d0195e50bda6 |
network_name | 广告展示所在平台的显示名称。 | AppLovin |
revenue | 代表收入金额的双精度值。 | 0.002067201 |
third_party_ad_placement_id | 广告的 placement ID(如有。竞价可能没有 placement ID)。 | inter_regular |
user_segment | The user segment of the user who was shown the ad. | experiment5 |
MMP 负责设置这些参数的值。 如果您未能收到广播事件中 1 个或多个参数的数据,或收到了不可靠的数据,请联系您的 MMP,确保 MMP 支持所有相关参数。
请参考下方示例,了解如何订阅和处理 SDK 广播的事件。
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
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")
}
}
@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
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")
}
}
override fun getCommunicatorId(): String
{
return "«your_company_name_in_snake_case»"
}
}
If "revenue" is -1, this indicates an error.