/*
* Copyright 2015. Appsi Mobile
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.appsimobile.appsii;
import android.content.Context;
import com.appsimobile.appsii.iab.Purchase;
import com.appsimobile.appsii.iab.SkuDetails;
import com.google.android.gms.analytics.GoogleAnalytics;
import com.google.android.gms.analytics.HitBuilders;
import com.google.android.gms.analytics.Logger;
import com.google.android.gms.analytics.Tracker;
import com.google.android.gms.analytics.ecommerce.Product;
import com.google.android.gms.analytics.ecommerce.ProductAction;
import javax.inject.Inject;
/**
* Created by nick on 05/04/15.
*/
public class AnalyticsManager {
public static final String ACTION_OPEN_PAGE = "open_page";
public static final String ACTION_PREVIEW = "preview";
public static final String ACTION_ADD_TO_TAG = "add_to_tag";
public static final String ACTION_SORT_APPS = "sort_apps";
public static final String ACTION_CHANGE_COLUMN_COUNT = "column_count";
public static final String ACTION_EDIT_TAGS = "edit_tags";
public static final String ACTION_ADD_TAG = "add_tag";
public static final String ACTION_SCROLL_PAGE = "scroll_page";
public static final String ACTION_COLLAPSE_ITEM = "collapse_item";
public static final String ACTION_EXPAND_ITEM = "expand_item";
public static final String ACTION_OPEN_ITEM = "open_item";
public static final String ACTION_OPEN_HOME_ITEM = "open_home_item";
public static final String ACTION_CREATE_ITEM = "create_item";
public static final String ACTION_EDIT_ITEM = "edit_item";
public static final String ACTION_DELETE_ITEM = "delete_item";
public static final String ACTION_START_APPSI = "start_appsii";
public static final String ACTION_STOP_APPSI = "stop_appsii";
public static final String ACTION_PURCHASE = "purchase";
public static final String ACTION_APPSI_UNLOCK = "unlock";
public static final String CATEGORY_APPS = "apps";
public static final String CATEGORY_HOME = "home";
public static final String CATEGORY_SEARCH = "search";
public static final String CATEGORY_PEOPLE = "people";
public static final String CATEGORY_CALLS = "calls";
public static final String CATEGORY_AGENDA = "agenda";
public static final String CATEGORY_OTHER = "configuration";
public static final String CATEGORY_PAGES = "pages";
public static final String ACTION_OPEN_GOOGLE_COMMUNITY = "google_community";
public static final String ACTION_OPEN_GOOGLE_MODERATOR = "google_moderator";
public static final String ACTION_OPEN_BETA_TESTER = "beta_tester";
public static final String ACTION_OPEN_FOLLOW_ME = "follow_me";
public static final String CATEGORY_ABOUT = "about";
public static final String CATEGORY_WELCOME = "welcome";
static AnalyticsManager sInstance;
final Context mContext;
Tracker mTracker;
@Inject
public AnalyticsManager(Context context) {
mContext = context.getApplicationContext();
getTracker();
}
public Tracker getTracker() {
GoogleAnalytics analytics = GoogleAnalytics.getInstance(mContext);
if (BuildConfig.DEBUG) {
analytics.getLogger().setLogLevel(Logger.LogLevel.VERBOSE);
analytics.setDryRun(true);
}
Tracker tracker;
synchronized (this) {
if (mTracker == null) {
mTracker = analytics.newTracker(R.xml.ga_tracker);
mTracker.enableAdvertisingIdCollection(true);
}
tracker = mTracker;
}
return tracker;
}
public void trackAppsiEvent(String action, String category) {
Tracker tracker = getTracker();
tracker.send(new HitBuilders.EventBuilder().
setAction(action).
setCategory(category).build());
}
public void trackAppsiEvent(String action, String category,
String label) {
Tracker tracker = getTracker();
tracker.send(new HitBuilders.EventBuilder().
setAction(action).
setCategory(category).
setLabel(label).build());
}
public void trackPageView(String page) {
Tracker tracker = getTracker();
tracker.setScreenName("pages/" + page);
tracker.send(new HitBuilders
.AppViewBuilder()
.build()
);
}
public void trackPurchase(Purchase page, SkuDetails details) {
if (page == null || details == null) return;
Tracker tracker = getTracker();
Product p = new Product();
p.setId(page.getSku()).setPrice(details.getPriceMicros() / 1000000d);
p.setName(details.getTitle());
p.setQuantity(1);
ProductAction productAction = new ProductAction(ProductAction.ACTION_PURCHASE);
productAction.setTransactionId(page.getOrderId());
productAction.setTransactionRevenue(details.getPriceMicros() / 1000000d);
HitBuilders.ScreenViewBuilder builder = new HitBuilders.ScreenViewBuilder()
.addProduct(p)
.setProductAction(productAction);
tracker.set("&cu", details.getPriceCurrencyCode());
tracker.setScreenName("transaction");
tracker.send(builder.build());
}
}