Skip to content

Commit 10558c2

Browse files
committed
Updating identify method mapping
1 parent 617d74d commit 10558c2

File tree

1 file changed

+60
-43
lines changed

1 file changed

+60
-43
lines changed

src/main/java/com/segment/analytics/android/integrations/firebase/FirebaseIntegration.java

Lines changed: 60 additions & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -4,91 +4,108 @@
44
import android.app.Activity;
55
import android.content.Context;
66

7-
import com.google.firebase.analytics.FirebaseAnalytics; // FirebaseAnalytics class
7+
import com.google.firebase.analytics.FirebaseAnalytics;
88
import com.segment.analytics.Analytics;
9+
import com.segment.analytics.Traits;
910
import com.segment.analytics.ValueMap;
1011
import com.segment.analytics.integrations.IdentifyPayload;
1112
import com.segment.analytics.integrations.Integration;
1213
import com.segment.analytics.integrations.Logger;
1314
import com.segment.analytics.integrations.ScreenPayload;
1415
import com.segment.analytics.integrations.TrackPayload;
1516

17+
import java.util.List;
18+
import java.util.Map;
19+
1620
import static com.segment.analytics.internal.Utils.hasPermission;
1721
import static com.segment.analytics.internal.Utils.isNullOrEmpty;
18-
import static com.segment.analytics.Analytics.LogLevel.VERBOSE;
1922

2023
/**
21-
* Google Analytics for Firebase is a free app measurement solution that provides insight on
22-
* app usage and user engagement.
24+
* Google Analytics for Firebase is a free app measurement solution that provides insight on app
25+
* usage and user engagement.
2326
*
2427
* @see <a href="https://firebase.google.com/docs/analytics/">Google Analytics for Firebase</a>
2528
* @see <a href="#">Google Analytics for Firebase Integration</a>
2629
* @see <a href="#">Google Analytics for Firebase Android SDK</a>
2730
*/
2831
public class FirebaseIntegration extends Integration<FirebaseAnalytics> {
2932

30-
public static FirebaseAnalytics mFirebaseAnalytics;
31-
32-
public static final Factory FACTORY = new Factory() {
33-
@Override public Integration<?> create(ValueMap settings, Analytics analytics) {
34-
Logger logger = analytics.logger(FIREBASE_ANALYTICS_KEY);
35-
if (!hasPermission(analytics.getApplication(), Manifest.permission.ACCESS_NETWORK_STATE)) {
36-
logger.debug("ACCESS_NETWORK_STATE is required for Firebase Analytics.");
37-
return null;
38-
}
39-
if (!hasPermission(analytics.getApplication(), Manifest.permission.INTERNET)) {
40-
logger.debug("INTERNET is required for Firebase Analytics.");
41-
return null;
42-
}
43-
if (!hasPermission(analytics.getApplication(), Manifest.permission.WAKE_LOCK)) {
44-
logger.debug("WAKE_LOCK is required for Firebase Analytics.");
45-
return null;
46-
}
47-
48-
Context context = analytics.getApplication();
49-
50-
return new FirebaseIntegration(context);
51-
}
52-
53-
@Override public String key() {
54-
return FIREBASE_ANALYTICS_KEY;
55-
}
56-
};
57-
58-
private static final String FIREBASE_ANALYTICS_KEY = "Firebase Analytics";
33+
public static final Factory FACTORY =
34+
new Factory() {
35+
@Override
36+
public Integration<?> create(ValueMap settings, Analytics analytics) {
37+
Logger logger = analytics.logger(FIREBASE_ANALYTICS_KEY);
38+
if (!hasPermission(
39+
analytics.getApplication(), Manifest.permission.ACCESS_NETWORK_STATE)) {
40+
logger.debug("ACCESS_NETWORK_STATE is required for Firebase Analytics.");
41+
return null;
42+
}
43+
if (!hasPermission(analytics.getApplication(), Manifest.permission.INTERNET)) {
44+
logger.debug("INTERNET is required for Firebase Analytics.");
45+
return null;
46+
}
47+
if (!hasPermission(analytics.getApplication(), Manifest.permission.WAKE_LOCK)) {
48+
logger.debug("WAKE_LOCK is required for Firebase Analytics.");
49+
return null;
50+
}
51+
52+
Context context = analytics.getApplication();
53+
54+
return new FirebaseIntegration(context);
55+
}
56+
57+
@Override
58+
public String key() {
59+
return FIREBASE_ANALYTICS_KEY;
60+
}
61+
};
62+
63+
private static final String FIREBASE_ANALYTICS_KEY = "Firebase";
64+
65+
final FirebaseAnalytics mFirebaseAnalytics;
5966

6067
public FirebaseIntegration(Context context) {
6168
mFirebaseAnalytics = FirebaseAnalytics.getInstance(context);
6269
}
6370

64-
@Override public void onActivityStarted(Activity activity) {
71+
@Override
72+
public void onActivityStarted(Activity activity) {
6573
super.onActivityStarted(activity);
66-
6774
}
6875

69-
@Override public void onActivityStopped(Activity activity) {
76+
@Override
77+
public void onActivityStopped(Activity activity) {
7078
super.onActivityStopped(activity);
71-
7279
}
7380

74-
@Override public void identify(IdentifyPayload identify) {
81+
@Override
82+
public void identify(IdentifyPayload identify) {
7583
super.identify(identify);
7684

7785
if (!isNullOrEmpty(identify.userId())) {
7886
mFirebaseAnalytics.setUserId(identify.userId());
79-
}
8087

81-
// mFirebaseAnalytics.setUserProperty(key, value);
88+
Map<String, Object> traits = identify.traits();
89+
90+
for (Map.Entry<String, Object> entry : identify.traits().entrySet()) {
91+
String trait = entry.getKey();
92+
String value = String.valueOf(entry.getValue());
93+
mFirebaseAnalytics.setUserProperty(trait, value);
94+
}
95+
96+
}
8297

8398
}
8499

85-
@Override public void screen(ScreenPayload screen) {
100+
@Override
101+
public void screen(ScreenPayload screen) {
86102
super.screen(screen);
103+
87104
// mFirebaseAnalytics.setCurrentScreen(this, screen.name(), null /* class override */);
88105
}
89106

90-
@Override public void track(TrackPayload track) {
107+
@Override
108+
public void track(TrackPayload track) {
91109
super.track(track);
92-
93110
}
94111
}

0 commit comments

Comments
 (0)