When an impression occurs, the Google Mobile Ads SDK provides ad revenue data associated with that impression. You can use the data to calculate a user's lifetime value, or forward the data downstream to other relevant systems.
This guide is intended to help you implement the impression-level ad revenue data capture in your Unity project.
Prerequisites
- Make sure you have turned on the impression-level ad revenue feature in the AdMob UI.
- Unity plugin 5.0.0 or higher.
- Complete Get Started. Your Unity app should already have the Google Mobile Ads Unity plugin imported.
Before you can receive any impression-level ad revenue data, you need to implement at least one ad format:
Implementing a paid event handler
Each ad format has an OnAdPaid
event. During the lifecycle of an ad event,
the Google Mobile Ads SDK monitors impression events and invokes the handler
with a AdValue
representing the earned value.
The following example handles paid events for a rewarded ad:
private void LoadRewardedAd()
{
// Send the request to load the ad.
AdRequest adRequest = new AdRequest();
RewardedAd.Load("AD_UNIT_ID", adRequest, (RewardedAd rewardedAd, LoadAdError error) =>
{
// If the operation failed with a reason.
if (error != null)
{
Debug.LogError("Rewarded ad failed to load an ad with error : " + error);
return;
}
rewardedAd.OnAdPaid += this.HandleAdPaidEvent;
});
}
public void HandleAdPaidEvent(AdValue adValue)
{
// TODO: Send the impression-level ad revenue information to your
// preferred analytics server directly within this callback.
long valueMicros = adValue.Value;
string currencyCode = adValue.CurrencyCode;
PrecisionType precision = adValue.Precision;
ResponseInfo responseInfo = rewardedAd.GetResponseInfo();
string responseId = responseInfo.GetResponseId();
AdapterResponseInfo loadedAdapterResponseInfo = responseInfo.GetLoadedAdapterResponseInfo();
string adSourceId = loadedAdapterResponseInfo.AdSourceId;
string adSourceInstanceId = loadedAdapterResponseInfo.AdSourceInstanceId;
string adSourceInstanceName = loadedAdapterResponseInfo.AdSourceInstanceName;
string adSourceName = loadedAdapterResponseInfo.AdSourceName;
string adapterClassName = loadedAdapterResponseInfo.AdapterClassName;
long latencyMillis = loadedAdapterResponseInfo.LatencyMillis;
Dictionary<string, string> credentials = loadedAdapterResponseInfo.AdUnitMapping;
Dictionary<string, string> extras = responseInfo.GetResponseExtras();
string mediationGroupName = extras["mediation_group_name"];
string mediationABTestName = extras["mediation_ab_test_name"];
string mediationABTestVariant = extras["mediation_ab_test_variant"];
}
For more information on the winning ad source, see retrieving Information about the ad response.
Integrate with App Attribution Partners (AAP)
For complete details on forwarding ad revenue data to analytics platforms, refer to the partner's guide:
Partner SDK |
---|
Adjust |
AppsFlyer |
Singular |
Tenjin |
Implementation best practices
- Set the
OnPaidEvent
event immediately once you create or get access to the ad object, and definitely before showing the ad. This ensures that you don't miss any callbacks. - Send the impression-level ad revenue information to your preferred analytics
server immediately in your
OnPaidEvent
handler. This ensures that you don't accidentally drop any callbacks and avoids data discrepancies.
AdValue
AdValue
is a class that represents the monetary value earned for an ad,
including the value's currency code and its precision type encoded as below.
AdValue.PrecisionType |
Description |
---|---|
Unknown |
An ad value that's unknown. This gets returned when LTV pingback is enabled but there isn't enough data available. |
Estimated |
An ad value estimated from aggregated data. |
PublisherProvided |
A publisher provided ad value, such as manual CPMs in a mediation group. |
Precise |
The precise value of this ad. |
In case of mediation, AdMob tries to provide an Estimated
value for ad sources
that are optimized. For
non-optimized ad sources, or in cases where there aren't enough aggregated data
to report a meaningful estimation, the PublisherProvided
value is returned.
Test impressions from bidding ad sources
After an impression-level ad revenue event occurs for a bidding ad source through a test request, you receive only the following values:
Unknown
: indicates the precision type.
0
: indicates the ad value.
Previously, you might have seen the precision type as a value other than
Unknown
and an ad value more than 0
.
For details on sending a test ad request, see Enable test devices.