1919import android .os .Parcelable ;
2020
2121import androidx .appcompat .app .AppCompatActivity ;
22+
2223import com .google .firebase .analytics .FirebaseAnalytics ;
2324
2425// importing libraries to support 3rd party ad_impression snippets
@@ -32,17 +33,32 @@ public class MainActivity extends AppCompatActivity
3233// importing libraries to support 3rd party ad_impression snippets
3334 implements MaxAdRevenueListener , ImpressionDataListener {
3435
36+ // [START declare_analytics]
37+ private FirebaseAnalytics mFirebaseAnalytics ;
38+ // [END declare_analytics]
39+
3540 @ Override
3641 protected void onCreate (Bundle savedInstanceState ) {
3742 super .onCreate (savedInstanceState );
3843 setContentView (R .layout .activity_main );
3944
45+ // [START shared_app_measurement]
46+ // Obtain the FirebaseAnalytics instance.
47+ mFirebaseAnalytics = FirebaseAnalytics .getInstance (this );
48+ // [END shared_app_measurement]
49+
4050 enhancedEcommerce ();
51+
52+ setUserFavoriteFood ("avocado" );
53+
54+ recordImageView ();
55+
56+ recordScreenView ();
57+
58+ logCustomEvent ();
4159 }
4260
4361 public void enhancedEcommerce () {
44- FirebaseAnalytics analytics = FirebaseAnalytics .getInstance (this );
45-
4662 // [START create_items]
4763 Bundle itemJeggings = new Bundle ();
4864 itemJeggings .putString (FirebaseAnalytics .Param .ITEM_ID , "SKU_123" );
@@ -83,27 +99,27 @@ public void enhancedEcommerce() {
8399 viewItemListParams .putString (FirebaseAnalytics .Param .ITEM_LIST_ID , "L001" );
84100 viewItemListParams .putString (FirebaseAnalytics .Param .ITEM_LIST_NAME , "Related products" );
85101 viewItemListParams .putParcelableArray (FirebaseAnalytics .Param .ITEMS ,
86- new Parcelable []{ itemJeggingsWithIndex , itemBootsWithIndex , itemSocksWithIndex });
87- analytics .logEvent (FirebaseAnalytics .Event .VIEW_ITEM_LIST , viewItemListParams );
102+ new Parcelable []{itemJeggingsWithIndex , itemBootsWithIndex , itemSocksWithIndex });
103+ mFirebaseAnalytics .logEvent (FirebaseAnalytics .Event .VIEW_ITEM_LIST , viewItemListParams );
88104 // [END view_item_list]
89105
90106 // [START select_item]
91107 Bundle selectItemParams = new Bundle ();
92108 selectItemParams .putString (FirebaseAnalytics .Param .ITEM_LIST_ID , "L001" );
93109 selectItemParams .putString (FirebaseAnalytics .Param .ITEM_LIST_NAME , "Related products" );
94110 selectItemParams .putParcelableArray (FirebaseAnalytics .Param .ITEMS ,
95- new Parcelable []{ itemJeggings });
96- analytics .logEvent (FirebaseAnalytics .Event .SELECT_ITEM , selectItemParams );
111+ new Parcelable []{itemJeggings });
112+ mFirebaseAnalytics .logEvent (FirebaseAnalytics .Event .SELECT_ITEM , selectItemParams );
97113 // [END select_item]
98114
99115 // [START view_product_details]
100116 Bundle viewItemParams = new Bundle ();
101117 viewItemParams .putString (FirebaseAnalytics .Param .CURRENCY , "USD" );
102118 viewItemParams .putDouble (FirebaseAnalytics .Param .VALUE , 9.99 );
103119 viewItemParams .putParcelableArray (FirebaseAnalytics .Param .ITEMS ,
104- new Parcelable [] { itemJeggings });
120+ new Parcelable []{ itemJeggings });
105121
106- analytics .logEvent (FirebaseAnalytics .Event .VIEW_ITEM , viewItemParams );
122+ mFirebaseAnalytics .logEvent (FirebaseAnalytics .Event .VIEW_ITEM , viewItemParams );
107123 // [END view_product_details]
108124
109125 // [START add_to_cart_wishlist]
@@ -114,9 +130,9 @@ public void enhancedEcommerce() {
114130 addToWishlistParams .putString (FirebaseAnalytics .Param .CURRENCY , "USD" );
115131 addToWishlistParams .putDouble (FirebaseAnalytics .Param .VALUE , 2 * 9.99 );
116132 addToWishlistParams .putParcelableArray (FirebaseAnalytics .Param .ITEMS ,
117- new Parcelable []{ itemJeggingsWishlist });
133+ new Parcelable []{itemJeggingsWishlist });
118134
119- analytics .logEvent (FirebaseAnalytics .Event .ADD_TO_WISHLIST , addToWishlistParams );
135+ mFirebaseAnalytics .logEvent (FirebaseAnalytics .Event .ADD_TO_WISHLIST , addToWishlistParams );
120136 // [END add_to_cart_wishlist]
121137
122138 // [START view_cart]
@@ -130,19 +146,19 @@ public void enhancedEcommerce() {
130146 viewCartParams .putString (FirebaseAnalytics .Param .CURRENCY , "USD" );
131147 viewCartParams .putDouble (FirebaseAnalytics .Param .VALUE , (2 * 9.99 ) + (1 * 24.99 ));
132148 viewCartParams .putParcelableArray (FirebaseAnalytics .Param .ITEMS ,
133- new Parcelable []{ itemJeggingsCart , itemBootsCart });
149+ new Parcelable []{itemJeggingsCart , itemBootsCart });
134150
135- analytics .logEvent (FirebaseAnalytics .Event .VIEW_CART , viewCartParams );
151+ mFirebaseAnalytics .logEvent (FirebaseAnalytics .Event .VIEW_CART , viewCartParams );
136152 // [END view_cart]
137153
138154 // [START remove_from_cart]
139155 Bundle removeCartParams = new Bundle ();
140156 removeCartParams .putString (FirebaseAnalytics .Param .CURRENCY , "USD" );
141157 removeCartParams .putDouble (FirebaseAnalytics .Param .VALUE , (1 * 24.99 ));
142158 removeCartParams .putParcelableArray (FirebaseAnalytics .Param .ITEMS ,
143- new Parcelable []{ itemBootsCart });
159+ new Parcelable []{itemBootsCart });
144160
145- analytics .logEvent (FirebaseAnalytics .Event .REMOVE_FROM_CART , removeCartParams );
161+ mFirebaseAnalytics .logEvent (FirebaseAnalytics .Event .REMOVE_FROM_CART , removeCartParams );
146162 // [END remove_from_cart]
147163
148164 // [START start_checkout]
@@ -151,9 +167,9 @@ public void enhancedEcommerce() {
151167 beginCheckoutParams .putDouble (FirebaseAnalytics .Param .VALUE , 14.98 );
152168 beginCheckoutParams .putString (FirebaseAnalytics .Param .COUPON , "SUMMER_FUN" );
153169 beginCheckoutParams .putParcelableArray (FirebaseAnalytics .Param .ITEMS ,
154- new Parcelable []{ itemJeggingsCart });
170+ new Parcelable []{itemJeggingsCart });
155171
156- analytics .logEvent (FirebaseAnalytics .Event .BEGIN_CHECKOUT , beginCheckoutParams );
172+ mFirebaseAnalytics .logEvent (FirebaseAnalytics .Event .BEGIN_CHECKOUT , beginCheckoutParams );
157173 // [END start_checkout]
158174
159175 // [START add_shipping]
@@ -163,9 +179,9 @@ public void enhancedEcommerce() {
163179 addShippingParams .putString (FirebaseAnalytics .Param .COUPON , "SUMMER_FUN" );
164180 addShippingParams .putString (FirebaseAnalytics .Param .SHIPPING_TIER , "Ground" );
165181 addShippingParams .putParcelableArray (FirebaseAnalytics .Param .ITEMS ,
166- new Parcelable []{ itemJeggingsCart });
182+ new Parcelable []{itemJeggingsCart });
167183
168- analytics .logEvent (FirebaseAnalytics .Event .ADD_SHIPPING_INFO , addShippingParams );
184+ mFirebaseAnalytics .logEvent (FirebaseAnalytics .Event .ADD_SHIPPING_INFO , addShippingParams );
169185 // [END add_shipping]
170186
171187 // [START add_payment]
@@ -175,9 +191,9 @@ public void enhancedEcommerce() {
175191 addPaymentParams .putString (FirebaseAnalytics .Param .COUPON , "SUMMER_FUN" );
176192 addPaymentParams .putString (FirebaseAnalytics .Param .PAYMENT_TYPE , "Visa" );
177193 addPaymentParams .putParcelableArray (FirebaseAnalytics .Param .ITEMS ,
178- new Parcelable []{ itemJeggingsCart });
194+ new Parcelable []{itemJeggingsCart });
179195
180- analytics .logEvent (FirebaseAnalytics .Event .ADD_PAYMENT_INFO , addPaymentParams );
196+ mFirebaseAnalytics .logEvent (FirebaseAnalytics .Event .ADD_PAYMENT_INFO , addPaymentParams );
181197 // [END add_payment]
182198
183199 // [START log_purchase]
@@ -190,9 +206,9 @@ public void enhancedEcommerce() {
190206 purchaseParams .putDouble (FirebaseAnalytics .Param .SHIPPING , 5.34 );
191207 purchaseParams .putString (FirebaseAnalytics .Param .COUPON , "SUMMER_FUN" );
192208 purchaseParams .putParcelableArray (FirebaseAnalytics .Param .ITEMS ,
193- new Parcelable []{ itemJeggingsCart });
194-
195- analytics .logEvent (FirebaseAnalytics .Event .PURCHASE , purchaseParams );
209+ new Parcelable []{itemJeggingsCart });
210+
211+ mFirebaseAnalytics .logEvent (FirebaseAnalytics .Event .PURCHASE , purchaseParams );
196212 // [END log_purchase]
197213
198214 // [START log_refund]
@@ -207,9 +223,9 @@ public void enhancedEcommerce() {
207223 refundParams .putLong (FirebaseAnalytics .Param .QUANTITY , 1 );
208224
209225 refundParams .putParcelableArray (FirebaseAnalytics .Param .ITEMS ,
210- new Parcelable []{ itemJeggings });
226+ new Parcelable []{itemJeggings });
211227
212- analytics .logEvent (FirebaseAnalytics .Event .REFUND , refundParams );
228+ mFirebaseAnalytics .logEvent (FirebaseAnalytics .Event .REFUND , refundParams );
213229 // [END log_refund]
214230
215231 // [START apply_promo]
@@ -220,51 +236,93 @@ public void enhancedEcommerce() {
220236 promoParams .putString (FirebaseAnalytics .Param .CREATIVE_SLOT , "featured_app_1" );
221237 promoParams .putString (FirebaseAnalytics .Param .LOCATION_ID , "HERO_BANNER" );
222238 promoParams .putParcelableArray (FirebaseAnalytics .Param .ITEMS ,
223- new Parcelable []{ itemJeggings });
239+ new Parcelable []{itemJeggings });
224240
225241 // Promotion displayed
226- analytics .logEvent (FirebaseAnalytics .Event .VIEW_PROMOTION , promoParams );
242+ mFirebaseAnalytics .logEvent (FirebaseAnalytics .Event .VIEW_PROMOTION , promoParams );
227243
228244 // Promotion selected
229- analytics .logEvent (FirebaseAnalytics .Event .SELECT_PROMOTION , promoParams );
245+ mFirebaseAnalytics .logEvent (FirebaseAnalytics .Event .SELECT_PROMOTION , promoParams );
230246 // [END apply_promo]
231247 }
232248
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]
249+ // [START ad_impression_applovin]
250+ @ Override
251+ public void onAdRevenuePaid (MaxAd impressionData ) {
252+
253+ double revenue = impressionData .getRevenue (); // In USD
254+
255+ mFirebaseAnalytics = FirebaseAnalytics .getInstance (this );
256+ Bundle params = new Bundle ();
257+ params .putString (FirebaseAnalytics .Param .AD_PLATFORM , "appLovin" );
258+ params .putString (FirebaseAnalytics .Param .AD_SOURCE , impressionData .getNetworkName ());
259+ params .putString (FirebaseAnalytics .Param .AD_FORMAT , impressionData .getFormat ().getDisplayName ());
260+ params .putString (FirebaseAnalytics .Param .AD_UNIT_NAME , impressionData .getAdUnitId ());
261+ params .putDouble (FirebaseAnalytics .Param .VALUE , revenue );
262+ params .putString (FirebaseAnalytics .Param .CURRENCY , "USD" ); // All Applovin revenue is sent in USD
263+ mFirebaseAnalytics .logEvent (FirebaseAnalytics .Event .AD_IMPRESSION , params );
264+ }
265+ // [END ad_impression_applovin]
250266
251- // [START ad_impression_ironsource]
267+ // [START ad_impression_ironsource]
252268 @ Override
253269 public void onImpressionSuccess (ImpressionData impressionData ) {
254270 // The onImpressionSuccess will be reported when the rewarded video and interstitial ad is opened.
255271 // For banners, the impression is reported on load success. Log.d(TAG, "onImpressionSuccess" + impressionData);
256- FirebaseAnalytics analytics = FirebaseAnalytics .getInstance (this );
272+ mFirebaseAnalytics = FirebaseAnalytics .getInstance (this );
257273 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 .getInstanceName ());
263- bundle .putString (FirebaseAnalytics .Param .CURRENCY , "USD" );
264- bundle .putDouble (FirebaseAnalytics .Param .VALUE , impressionData .getRevenue ());
265- analytics .logEvent (FirebaseAnalytics .Event .AD_IMPRESSION , bundle );
274+ Bundle bundle = new Bundle ();
275+ bundle .putString (FirebaseAnalytics .Param .AD_PLATFORM , "ironSource" );
276+ bundle .putString (FirebaseAnalytics .Param .AD_SOURCE , impressionData .getAdNetwork ());
277+ bundle .putString (FirebaseAnalytics .Param .AD_FORMAT , impressionData .getAdUnit ());
278+ bundle .putString (FirebaseAnalytics .Param .AD_UNIT_NAME , impressionData .getInstanceName ());
279+ bundle .putString (FirebaseAnalytics .Param .CURRENCY , "USD" );
280+ bundle .putDouble (FirebaseAnalytics .Param .VALUE , impressionData .getRevenue ());
281+ mFirebaseAnalytics .logEvent (FirebaseAnalytics .Event .AD_IMPRESSION , bundle );
266282 }
267283 }
268-
269284 // [END ad_impression_ironsource]
285+
286+ private void setUserFavoriteFood (String food ) {
287+ // [START user_property]
288+ mFirebaseAnalytics .setUserProperty ("favorite_food" , food );
289+ // [END user_property]
290+ }
291+
292+ private void recordImageView () {
293+ String id = "Image ID" ;
294+ String name = "Image Title" ;
295+
296+ // [START image_view_event]
297+ Bundle bundle = new Bundle ();
298+ bundle .putString (FirebaseAnalytics .Param .ITEM_ID , id );
299+ bundle .putString (FirebaseAnalytics .Param .ITEM_NAME , name );
300+ bundle .putString (FirebaseAnalytics .Param .CONTENT_TYPE , "image" );
301+ mFirebaseAnalytics .logEvent (FirebaseAnalytics .Event .SELECT_CONTENT , bundle );
302+ // [END image_view_event]
303+ }
304+
305+ private void recordScreenView () {
306+ // This string must be <= 36 characters long.
307+ String screenName = "Home Screen" ;
308+
309+ // [START set_current_screen]
310+ Bundle bundle = new Bundle ();
311+ bundle .putString (FirebaseAnalytics .Param .SCREEN_NAME , screenName );
312+ bundle .putString (FirebaseAnalytics .Param .SCREEN_CLASS , "MainActivity" );
313+ mFirebaseAnalytics .logEvent (FirebaseAnalytics .Event .SCREEN_VIEW , bundle );
314+ // [END set_current_screen]
315+ }
316+
317+ private void logCustomEvent () {
318+ String name = "image title" ;
319+ String text = "I'd love to hear more about " + name ;
320+
321+ // [START custom_event]
322+ Bundle params = new Bundle ();
323+ params .putString ("image_name" , name );
324+ params .putString ("full_text" , text );
325+ mFirebaseAnalytics .logEvent ("share_image" , params );
326+ // [END custom_event]
327+ }
270328}
0 commit comments