All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.segment.analytics.LocalyticsIntegration Maven / Gradle / Ivy

There is a newer version: 2.5.3
Show newest version
package com.segment.analytics;

import android.Manifest;
import android.app.Activity;
import android.content.Context;
import android.os.Bundle;
import com.localytics.android.LocalyticsAmpSession;
import java.util.Map;

import static com.segment.analytics.Utils.hasPermission;
import static com.segment.analytics.Utils.isNullOrEmpty;

/**
 * Localytics is a general-purpose mobile analytics tool that measures customer acquisition, ad
 * attribution, retargeting campaigns and user actions in your mobile apps.
 *
 * @see Localytics
 * @see Localytics Integration
 * @see Localytics Android SDK
 */
class LocalyticsIntegration extends AbstractIntegration {
  static final String LOCALYTICS_KEY = "Localytics";
  LocalyticsAmpSession session;

  @Override void initialize(Context context, ValueMap settings, boolean debuggingEnabled)
      throws IllegalStateException {
    if (!hasPermission(context, Manifest.permission.WAKE_LOCK)) {
      throw new IllegalStateException("localytics requires the wake lock permission");
    }
    session = new LocalyticsAmpSession(context, settings.getString("appKey"));
    LocalyticsAmpSession.setLoggingEnabled(debuggingEnabled);
  }

  @Override LocalyticsAmpSession getUnderlyingInstance() {
    return session;
  }

  @Override String key() {
    return LOCALYTICS_KEY;
  }

  @Override void onActivityCreated(Activity activity, Bundle savedInstanceState) {
    super.onActivityCreated(activity, savedInstanceState);
    session.open();
    session.upload();
  }

  @Override void onActivityResumed(Activity activity) {
    super.onActivityResumed(activity);
    session.open();
    session.upload();
    if (activity instanceof android.support.v4.app.FragmentActivity) {
      session.attach((android.support.v4.app.FragmentActivity) activity);
    }
  }

  @Override void onActivityPaused(Activity activity) {
    super.onActivityPaused(activity);
    if (activity instanceof android.support.v4.app.FragmentActivity) {
      session.detach();
    }
    session.close();
    session.upload();
  }

  @Override void flush() {
    super.flush();
    session.upload();
  }

  @Override void identify(IdentifyPayload identify) {
    super.identify(identify);
    Traits traits = identify.traits();

    session.setCustomerId(identify.userId());

    String email = traits.email();
    if (!isNullOrEmpty(email)) session.setCustomerEmail(email);

    String name = traits.name();
    if (!isNullOrEmpty(name)) session.setCustomerName(name);

    for (Map.Entry entry : traits.entrySet()) {
      session.setCustomerData(entry.getKey(), String.valueOf(entry.getValue()));
    }
  }

  @Override void screen(ScreenPayload screen) {
    super.screen(screen);
    session.tagScreen(screen.event());
  }

  @Override void track(TrackPayload track) {
    super.track(track);
    session.tagEvent(track.event(), track.properties().toStringMap());
  }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy