Flutter SDK Advertisement
Reporting an ad impression
Call trackBaseAdsImpression from your mediation SDK's impression/revenue callback (for
example AppLovin MAX's onAdRevenuePaid, or ironSource's onImpressionSuccess), as soon as
you receive it:
Future<void> trackBaseAdsImpression(MagifyAdsImpressionData impressionData) => ...
MagifyAdsImpressionData has one named constructor per mediation kind, because the fields
that matter differ by kind — the same split MagifyTransaction uses for its kinds.
MagifyAdsImpressionData.appLovin
await MagifyClient.instance.trackBaseAdsImpression(
MagifyAdsImpressionData.appLovin(
adUnitId: maxAd.adUnitId,
networkName: maxAd.networkName,
impressionId: maxAd.request?.adUnitId,
revenuePrecision: maxAd.revenuePrecision,
revenue: maxAd.revenue,
adsLoadTime: maxAd.requestLatencyMillis?.toDouble(),
),
);
MagifyAdsImpressionData.ironSource
instanceId (ironSource's own impression identifier) travels in the same slot the
appLovin factory uses for impressionId:
await MagifyClient.instance.trackBaseAdsImpression(
MagifyAdsImpressionData.ironSource(
adUnitId: adInfo.adUnit,
networkName: adInfo.adNetwork,
instanceId: adInfo.instanceId,
instanceName: adInfo.instanceName,
revenue: adInfo.revenue,
revenuePrecision: adInfo.precision,
),
);
MagifyAdsImpressionData.custom
Use this for any mediator without a dedicated factory. mediation names the mediator.
MagifyAdsImpressionData.moPub
Use with care: campaignName, eventName, eventNumber and impressionNumber are
required by the Android SDK, but have no equivalent in the iOS SDK's MoPub initializer — iOS
silently ignores all four. id is MoPub's own impression identifier, distinct from
adUnitId.
Next step
Continue to App Features for remote-controlled behavior, or to Purchases for tracking revenue from purchases instead of ads.