web-dev-qa-db-ja.com

Google AnalyticsをAndroidアプリに統合する方法

こんにちは、Google Analyticsを統合しようとしていますが、私のGoogle Analyticsアカウントに表示される分析データを見つけることができません。私は以下のリンクを使用しています:-

developers.google.com link 1

リンク1

リンク2

developer.google link 2

ただし、Google AnalyticsをAndroidアプリで統合する方法についての正しいパス/方法または適切で詳細なチュートリアルを取得できません。

私のコードは次のとおりです。

    public class MainActivity extends Activity {
    GoogleAnalytics tracker;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

         // Get tracker.
        Tracker t = ((AnalyticsHelper) MainActivity.this.getApplication()).getTracker(
            TrackerName.APP_TRACKER);
     // Set the dispatch period in seconds.
        GAServiceManager.getInstance().setLocalDispatchPeriod(8);
    }

    @Override
    protected void onStart() {
        super.onStart();
        EasyTracker.getInstance(this).activityStart(this);
     // Set the dispatch period in seconds.
        GAServiceManager.getInstance().setLocalDispatchPeriod(8);
    }

    @Override
    protected void onStop() {
        super.onStop();
        EasyTracker.getInstance(this).activityStop(this);
    }
}

私の分析ヘルパークラスは次のとおりです。

public class AnalyticsHelper extends Application {

     // The following line should be changed to include the correct property id.
    private static final String PROPERTY_ID = "UA-xxxxxxxx-x"; // My Property id.

    public static int GENERAL_TRACKER = 0;

    public enum TrackerName {
        APP_TRACKER, // Tracker used only in this app.
        GLOBAL_TRACKER, // Tracker used by all the apps from a company. eg: roll-up tracking.
        ECOMMERCE_TRACKER, // Tracker used by all ecommerce transactions from a company.
    }

    HashMap<TrackerName, Tracker> mTrackers = new HashMap<TrackerName, Tracker>();

    public AnalyticsHelper()
    {
        super();
    }

    synchronized Tracker getTracker(TrackerName trackerId) {
        if (!mTrackers.containsKey(trackerId)) {

            GoogleAnalytics analytics = GoogleAnalytics.getInstance(this);
            analytics.getLogger().setLogLevel(LogLevel.VERBOSE);
            Tracker t = null;
            if(trackerId==TrackerName.APP_TRACKER){
                t= analytics.getTracker(PROPERTY_ID);
            }
                 mTrackers.put(trackerId, t);
                }
        return mTrackers.get(trackerId);
    }
}

そして、xmlディレクトリ内の私の分析xmlファイルは次のとおりです-

    <?xml version="1.0" encoding="utf-8"?>
<resources xmlns:tools="http://schemas.Android.com/tools"
            tools:ignore="TypographyDashes">

     <!--  The following value should be replaced with correct property id. -->
    <string name="ga_trackingId">UA-xxxxxxxx-X</string>

   <!--Enable automatic activity tracking-->
  <bool name="ga_autoActivityTracking">true</bool>

  <!--Enable automatic exception tracking-->
  <bool name="ga_reportUncaughtExceptions">true</bool>

</resources>

どんな助けも心から歓迎されます。前もって感謝します。

22

質問で与えられた上記のコードはうまく機能します。必要なことは、コードを設定し、Jarファイルを追加した後です Google Analytics Jarファイルをダウンロード Libに追加します。 24〜48時間待つだけです。登録したアプリのすべてのイベントと分析が表示されます。

編集済み回答:-

Google Analyticアカウントを作成し、Jarファイルをダウンロードしたら、アプリケーションのlibフォルダーにJarファイルを追加します

Google Analytic Implementation:-

分析部分の場合は、analytic.xmlファイルを値フォルダーに含める必要があります質問に記載されています。

次に、MainActivityprivate EasyTracker easyTracker = null;を定義します。

そして今、あなたのonCreate(Bundle savedInstanceState)メソッドに次のコード行を書くだけです。まあ、Listnersのために次のコードを書くこともできます。任意のボタンクリックで。

    /*
    *For Google Analytics...
    */
    easyTracker = EasyTracker.getInstance(MainActivity.this); // It Tracks your Activity...
    easyTracker.send(MapBuilder.createEvent("SomeValue(StoryPage)",
            "SomeMoreValue(AuthorName) , "SomeMoreValueAgain(StoryTitle)", null).build()); //This line creates the event for keeping logs and other Analytical stuffs concerned to this Activity of Application...
//In the above example we had Tracked the session for the MainActivity and also Analysed how many time this activity was opened, which Author story and which Story was read.

onStart()メソッドで次のコードを記述するだけで、アクティビティの追跡と分析セッションが開始されます。

EasyTracker.getInstance(this).activityStart(this);

そして今、あなたのonStop()メソッドで、次のコードを書くだけで、このアクティビティの追跡セッションを終了または停止します。

EasyTracker.getInstance(this).activityStop(this);

これで、アプリケーションとそのアクティビティを追跡および分析できるようになりました。

9

Googleアナリティクスを既存のアプリに統合する手順を詳しく説明しました here 。新しいアプリを公開するときは、常にこれらの手順に戻ってうまくいきます。

2
rdmacken
  1. 最初に、GoogleアナリティクストラックIDを作成する必要があります GoolgeアナリティクスサインインしてAPIを有効にし、トラックIDを取得します

  2. その後、そのトラックIDを以下の.xmlコードに入れます


 <?xml version="1.0" encoding="utf-8"?>
<resources>
<integer name="ga_sessionTimeout">300</integer>
<bool name="ga_autoActivityTracking">true</bool>
<string name="ga_trackingId">"place your track id"</string>
<string name="ga_sampleFrequency">100.0</string>
<bool name="ga_reportUncaughtExceptions">true</bool>
<screenName name="com.aquadeals.seller.HomeMainActivity">DashBoard Screen</screenName>

3.その後、マニフェストファイルを変更して、このコードを以下に追加することが非常に重要です許可を追加します

4。アプリケーション名をGoogle Analyticsクラス名に変更しますexample "MyApplication.Java"

 <application
    Android:name=".app.MyApplication"

5.その後、インターネットを使用してブロードキャストイベントを送受信するためのサービスを追加します

 <receiver
        Android:name="com.google.Android.gms.analytics.AnalyticsReceiver"
        Android:enabled="true">
        <intent-filter>
            <action Android:name="com.google.Android.gms.analytics.ANALYTICS_DISPATCH" />
        </intent-filter>
    </receiver>
    <service           Android:name="com.google.Android.gms.analytics.AnalyticsService"
        Android:enabled="true"
        Android:exported="false" />
    <receiver       Android:name="com.google.Android.gms.analytics.CampaignTrackingReceiver"
        Android:exported="true">
        <intent-filter>
            <action Android:name="com.Android.vending.INSTALL_REFERRER" />
        </intent-filter>
    </receiver>
    <service Android:name="com.google.Android.gms.analytics.CampaignTrackingService" />
  1. このマニフェストが変更される前に、まずこの2つのクラスをアプリに追加します

public final class AnalyticsTrackers {

public enum Target {APP,}
private static AnalyticsTrackers sInstance;
public static synchronized void initialize(Context context)
{
    if (sInstance != null) 
    {
        throw new IllegalStateException("Extra call to initialize analytics trackers");
    }
    sInstance = new AnalyticsTrackers(context);
}
public static synchronized AnalyticsTrackers getInstance() 
{
    if (sInstance == null) {
        throw new IllegalStateException("Call initialize() before getInstance()");
    }
    return sInstance;
}
private final Map<Target, Tracker> mTrackers = new HashMap<Target, Tracker>();
private final Context mContext;
private AnalyticsTrackers(Context context)
{
    mContext = context.getApplicationContext();
}
public synchronized Tracker get(Target target)
{
    if (!mTrackers.containsKey(target)) 
    {
        Tracker tracker;
        switch (target)
        {
            case APP:
                tracker = GoogleAnalytics.getInstance(mContext).newTracker(R.xml.app_tracker);
                break;
            default:
                throw new IllegalArgumentException("Unhandled analytics target " + target);
        }
        mTrackers.put(target, tracker);
    }
    return mTrackers.get(target);
}

}

そしてこのAnalyticsApplication.Javaを追加します

public class AnalyticsApplication extends MultiDexApplication

{

private Tracker mTracker;
private static AnalyticsApplication mInstance;

@Override
public void onCreate()
{
    super.onCreate();
    mInstance = this;
    AnalyticsTrackers.initialize(this);
    AnalyticsTrackers.getInstance().get(AnalyticsTrackers.Target.APP);
}

synchronized public Tracker getDefaultTracker()
{
    if (mTracker == null)
    {
        GoogleAnalytics analytics = GoogleAnalytics.getInstance(AnalyticsApplication.this);

        mTracker = analytics.newTracker(R.xml.app_tracker);
    }
    return mTracker;
}

public synchronized Tracker getGoogleAnalyticsTracker()
{
    AnalyticsTrackers analyticsTrackers = AnalyticsTrackers.getInstance();
    return analyticsTrackers.get(AnalyticsTrackers.Target.APP);
}

public void trackEvent(String category, String action, String label)
{
    Tracker t = getDefaultTracker();
    t.send(new HitBuilders.EventBuilder().setCategory(category).setAction(action).setLabel(label).build());
}

public static synchronized AnalyticsApplication getInstance()
{
    return mInstance;
}

public void trackScreenView(String screenName)
{
    Tracker t = getGoogleAnalyticsTracker();
    t.setScreenName(screenName);
    t.send(new HitBuilders.ScreenViewBuilder().build());
    GoogleAnalytics.getInstance(this).dispatchLocalHits();
}


public void trackException(Exception e)
{
    if (e != null) {
        Tracker t = getGoogleAnalyticsTracker();
        t.send(new HitBuilders.ExceptionBuilder()
             .setDescription( new StandardExceptionParser(this, null)
             .getDescription(Thread.currentThread().getName(), e))
     .setFatal(false)
     .build()
        );
    }
}

}

  1. 最後に、mainactivity.Javaクラスにコードを追加するか、必要なクラスInitialize Step1

    AnalyticsApplication application1;

    プライベートトラッカーmTracker;

    ステップ:2

    application1 =(AnalyticsApplication)getApplication();

    mTracker = application1.getDefaultTracker();

xmlで言及したスクリーン名を表示するGoogleアナリティクスでこのコードを実行した場合。

ステップ:3追跡イベントにこのコードを追加

mTracker.send(new HitBuilders.EventBuilder()

                .setCategory("DashBoard ")

                    .setAction("View Bookings Pressed")

                    .build());

ステップ:4 catchブロックで例外動作コードを追加追跡します

 catch (Exception e) {
         **   AnalyticsApplication.getInstance().trackException(e);**
            e.printStackTrace();
        }

ハッピーコーディング..

1
Venkatesh