Skip to content

Commit fd871a9

Browse files
author
Grant Kemp
committed
feature: added 3rd party sample ad_impression snippets for both Kotlin and Java to address issue #324
1 parent 46c0e0c commit fd871a9

File tree

2 files changed

+90
-4
lines changed

2 files changed

+90
-4
lines changed

analytics/app/src/main/java/com/google/firebase/example/analytics/MainActivity.java

Lines changed: 49 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,10 +19,19 @@
1919
import android.os.Parcelable;
2020

2121
import androidx.appcompat.app.AppCompatActivity;
22-
2322
import com.google.firebase.analytics.FirebaseAnalytics;
2423

25-
public class MainActivity extends AppCompatActivity {
24+
// Disregard the below 5 lines which replicate ad_impression data being sent from 3rd parties and are not required for Firebase implementations.
25+
// Added 3rd party imports to support ad_impression snippets
26+
import com.applovin.mediation.MaxAd;
27+
import com.applovin.mediation.MaxAdRevenueListener;
28+
import com.ironsource.mediationsdk.impressionData.ImpressionData;
29+
import com.ironsource.mediationsdk.impressionData.ImpressionDataListener;
30+
31+
32+
public class MainActivity extends AppCompatActivity
33+
// Disregard the line below as its used to replicate ad_impression data being sent from 3rd parties and is not required for Firebase implementations.
34+
implements MaxAdRevenueListener, ImpressionDataListener {
2635

2736
@Override
2837
protected void onCreate(Bundle savedInstanceState) {
@@ -221,4 +230,42 @@ public void enhancedEcommerce() {
221230
analytics.logEvent(FirebaseAnalytics.Event.SELECT_PROMOTION, promoParams);
222231
// [END apply_promo]
223232
}
233+
234+
// [START ad_impression_applovin]
235+
@Override
236+
public void onAdRevenuePaid(MaxAd impressionData) {
237+
238+
double revenue = impressionData.getRevenue(); // In USD
239+
240+
FirebaseAnalytics analytics = FirebaseAnalytics.getInstance(this);
241+
Bundle params = new Bundle();
242+
params.putString(FirebaseAnalytics.Param.AD_PLATFORM, "appLovin");
243+
params.putString(FirebaseAnalytics.Param.AD_SOURCE, impressionData.getNetworkName());
244+
params.putString(FirebaseAnalytics.Param.AD_FORMAT, impressionData.getFormat().getDisplayName());
245+
params.putString(FirebaseAnalytics.Param.AD_UNIT_NAME, impressionData.getAdUnitId());
246+
params.putDouble(FirebaseAnalytics.Param.VALUE, revenue);
247+
params.putString(FirebaseAnalytics.Param.CURRENCY, "USD"); // All Applovin revenue is sent in USD
248+
analytics.logEvent(FirebaseAnalytics.Event.AD_IMPRESSION, params);
249+
}
250+
// [END ad_impression_applovin]
251+
252+
// [START ad_impression_ironsource]
253+
@Override
254+
public void onImpressionSuccess(ImpressionData impressionData) {
255+
// The onImpressionSuccess will be reported when the rewarded video and interstitial ad is opened.
256+
// For banners, the impression is reported on load success. Log.d(TAG, "onImpressionSuccess" + impressionData);
257+
FirebaseAnalytics analytics = FirebaseAnalytics.getInstance(this);
258+
if (impressionData != null) {
259+
Bundle bundle = new Bundle();
260+
bundle.putString(FirebaseAnalytics.Param.AD_PLATFORM, "ironSource");
261+
bundle.putString(FirebaseAnalytics.Param.AD_SOURCE, impressionData.getAdNetwork());
262+
bundle.putString(FirebaseAnalytics.Param.AD_FORMAT, impressionData.getAdUnit());
263+
bundle.putString(FirebaseAnalytics.Param.AD_UNIT_NAME, impressionData.getAdUnit());
264+
bundle.putString(FirebaseAnalytics.Param.CURRENCY, "USD");
265+
bundle.putDouble(FirebaseAnalytics.Param.VALUE, impressionData.getRevenue());
266+
analytics.logEvent(FirebaseAnalytics.Event.AD_IMPRESSION, bundle);
267+
}
268+
}
269+
270+
// [END ad_impression_ironsource]
224271
}

analytics/app/src/main/java/com/google/firebase/example/analytics/kotlin/MainActivity.kt

Lines changed: 41 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,9 +8,15 @@ import com.google.firebase.analytics.ktx.analytics
88
import com.google.firebase.analytics.ktx.logEvent
99
import com.google.firebase.example.analytics.R
1010
import com.google.firebase.ktx.Firebase
11+
// Disregard the below 5 lines which replicate ad_impression data being sent from 3rd parties and are not required for Firebase implementations.
12+
// Added 3rd party imports to support ad_impression snippets
13+
import com.ironsource.mediationsdk.impressionData.ImpressionDataListener
14+
import com.ironsource.mediationsdk.impressionData.ImpressionData
15+
import com.applovin.mediation.MaxAd
16+
import com.applovin.mediation.MaxAdRevenueListener
1117

12-
class MainActivity : AppCompatActivity() {
1318

19+
class MainActivity : AppCompatActivity(), MaxAdRevenueListener, ImpressionDataListener {
1420
override fun onCreate(savedInstanceState: Bundle?) {
1521
super.onCreate(savedInstanceState)
1622
setContentView(R.layout.activity_main)
@@ -193,4 +199,37 @@ class MainActivity : AppCompatActivity() {
193199
analytics.logEvent(FirebaseAnalytics.Event.SELECT_PROMOTION, promoParams)
194200
// [END apply_promo]
195201
}
196-
}
202+
// [START ad_impression_applovin]
203+
override fun onAdRevenuePaid(impressionData: MaxAd?) {
204+
impressionData?.let {
205+
val analytics = Firebase.analytics
206+
analytics.logEvent(FirebaseAnalytics.Event.AD_IMPRESSION) {
207+
param(FirebaseAnalytics.Param.AD_PLATFORM, "appLovin")
208+
param(FirebaseAnalytics.Param.AD_UNIT_NAME, impressionData.adUnitId)
209+
param(FirebaseAnalytics.Param.AD_FORMAT, impressionData.format.displayName)
210+
param(FirebaseAnalytics.Param.AD_SOURCE, impressionData.networkName)
211+
param(FirebaseAnalytics.Param.VALUE, impressionData.revenue)
212+
param(FirebaseAnalytics.Param.CURRENCY, "USD") // All Applovin revenue is sent in USD
213+
}
214+
}
215+
}
216+
// [END ad_impression_applovin]
217+
218+
// [START ad_impression_ironsource]
219+
override fun onImpressionSuccess(impressionData: ImpressionData) {
220+
// The onImpressionSuccess will be reported when the rewarded video and interstitial ad is
221+
// opened.
222+
// For banners, the impression is reported on load success. Log.d(TAG, "onImpressionSuccess" +
223+
// impressionData);
224+
val analytics = Firebase.analytics
225+
analytics.logEvent(FirebaseAnalytics.Event.AD_IMPRESSION) {
226+
param(FirebaseAnalytics.Param.AD_PLATFORM, "ironSource")
227+
param(FirebaseAnalytics.Param.AD_SOURCE, impressionData.adNetwork)
228+
param(FirebaseAnalytics.Param.AD_FORMAT, impressionData.adUnit)
229+
param(FirebaseAnalytics.Param.AD_UNIT_NAME, impressionData.adUnit)
230+
param(FirebaseAnalytics.Param.CURRENCY, "USD")
231+
param(FirebaseAnalytics.Param.VALUE, impressionData.revenue)
232+
}
233+
}
234+
// [END ad_impression_ironsource]
235+
}

0 commit comments

Comments
 (0)