Skip to content

Commit 77870d2

Browse files
authored
port analytics snippets from quickstart-android (#347)
* add kotlin analytics snippets from quickstart-android * improve java formatting of the analytics snippets * add java analytics snippets from quickstart-android
1 parent 2a0a2e1 commit 77870d2

File tree

2 files changed

+194
-75
lines changed

2 files changed

+194
-75
lines changed

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

Lines changed: 114 additions & 56 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919
import android.os.Parcelable;
2020

2121
import androidx.appcompat.app.AppCompatActivity;
22+
2223
import 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

Comments
 (0)