Skip to content

Commit 7268f81

Browse files
authored
Merge pull request #328 from grantkemp/gkemp/add_impression_snippets_javakotlin-324
Add impression snippets for java and kotlin 324
2 parents f8c838d + c6bce39 commit 7268f81

File tree

4 files changed

+109
-5
lines changed

4 files changed

+109
-5
lines changed

analytics/app/build.gradle

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,13 +19,22 @@ android {
1919
}
2020
}
2121
}
22+
repositories {
23+
maven {
24+
// Ironsource library used for ad_impression snippets
25+
url "https://android-sdk.is.com/"
26+
}
27+
}
2228

2329
dependencies {
2430
implementation 'androidx.legacy:legacy-support-v4:1.0.0'
2531
implementation 'androidx.appcompat:appcompat:1.3.1'
26-
2732
implementation "com.google.firebase:firebase-analytics:19.0.0"
2833
implementation "com.google.firebase:firebase-analytics-ktx:19.0.0"
34+
// Ironsource and AppLovin libraries used for ad_impression snippets
35+
implementation 'com.applovin:applovin-sdk:+'
36+
implementation 'com.ironsource.sdk:mediationsdk:7.2.1.1'
37+
2938
}
3039

3140
apply plugin: 'com.google.gms.google-services'

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

Lines changed: 48 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,10 +19,18 @@
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+
// importing libraries to support 3rd party ad_impression snippets
25+
import com.applovin.mediation.MaxAd;
26+
import com.applovin.mediation.MaxAdRevenueListener;
27+
import com.ironsource.mediationsdk.impressionData.ImpressionData;
28+
import com.ironsource.mediationsdk.impressionData.ImpressionDataListener;
29+
30+
31+
public class MainActivity extends AppCompatActivity
32+
// importing libraries to support 3rd party ad_impression snippets
33+
implements MaxAdRevenueListener, ImpressionDataListener {
2634

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

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

Lines changed: 42 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,9 +8,16 @@ 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+
// importing libraries to support 3rd party ad_impression snippets
12+
import com.ironsource.mediationsdk.impressionData.ImpressionDataListener
13+
import com.ironsource.mediationsdk.impressionData.ImpressionData
14+
import com.applovin.mediation.MaxAd
15+
import com.applovin.mediation.MaxAdRevenueListener
1116

12-
class MainActivity : AppCompatActivity() {
1317

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

analytics/settings.gradle

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1 +1,10 @@
11
include ':app'
2+
3+
// Ironsource library used for ad_impression snippets
4+
dependencyResolutionManagement {
5+
repositories {
6+
maven {
7+
url 'https://android-sdk.is.com/'
8+
}
9+
}
10+
}

0 commit comments

Comments
 (0)