Προς το περιεχόμενο

Προτεινόμενες αναρτήσεις

Δημοσ.

Γεια σας παιδιά!

 

Γνωρίζει κανείς αν ο τρόπος προσθήκης του Google Analytics σε μια εφαρμογή android είναι ο ίδιος σε Eclipse με αυτόν του Android Studio;

 

Γιατί εγώ νομίζω πως κάπου υπάρχει διαφορά...

  • 2 εβδομάδες αργότερα...
Δημοσ. (επεξεργασμένο)

Παιδιά έκανα μέχρι και μετάβαση σε Android Studio...

 

Ακολουθώ ακριβώς τα βήματα αλλά καταλήγω σε σημείο που δε τρέχει η εφαρμογή παρόλο που γίνεται κανονικά το build.

 

Μήπως φταίει το ότι η εφαρμογή μου δουλεύει καθαρά σε webview; 

 

Για να καταλάβετε περισσότερο τι έχω κάνει, μπορείτε να κατεβάσετε από εδώ ένα rar με τον κώδικα των αρχείων γιατί αν το βάλω εδώ μάλλον θα μπερδευτεί περισσότερο η κατάσταση (είναι αρχεία σε μορφή text).

 

Ή εναλλακτικά δείτε παρακάτω τον κώδικά μου.

 

Στο MainActivity.java βλέπετε μόνο τα κομμάτια του κώδικα στα οποία έκανα αλλαγές για το analytics.
 
MainActivity.java
    private WebView myWebView;
    private Tracker mTracker;
    private String name = new String("MyApp Main Screen");


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        requestWindowFeature(Window.FEATURE_NO_TITLE);
        getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
                WindowManager.LayoutParams.FLAG_FULLSCREEN);
        setContentView(R.layout.activity_main);
        setVolumeControlStream(AudioManager.STREAM_MUSIC);
        myWebView = (WebView) this.findViewById(R.id.webView1);
        WebSettings settings = myWebView.getSettings();
        settings.setJavaScriptEnabled(true);
        myWebView.loadUrl("file:///android_asset/www/index.html");
        myWebView.setVerticalScrollBarEnabled(false);
        myWebView.setHorizontalScrollBarEnabled(false);
        settings.setDomStorageEnabled(true);
        settings.setDatabaseEnabled(true);
        if (Build.VERSION.SDK_INT < Build.VERSION_CODES.KITKAT) {
            settings.setDatabasePath("/data/data/" + myWebView.getContext().getPackageName() + "/databases/");
        }
        myWebView.addJavascriptInterface(new AudioInterface(this), "AndAud");
        myWebView.addJavascriptInterface(new InternetInteface(this), "AndInChk");
        myWebView.setWebChromeClient(new WebChromeClient() {
            @Override
            public void onExceededDatabaseQuota(String url,
                                                String databaseIdentifier,
                                                long currentQuota,
                                                long estimatedSize,
                                                long totalUsedQuota,
                                                WebStorage.QuotaUpdater quotaUpdater) {
                quotaUpdater.updateQuota(estimatedSize * 2);
            }
        });


        getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);


        // Obtain the shared Tracker instance.
        AnalyticsApplication application = (AnalyticsApplication) getApplication();
        mTracker = application.getDefaultTracker();


    }




    @Override
    protected void onResume() {
/* myWebView.onResume(); */
        myWebView.resumeTimers();
        super.onResume();


        mTracker.setScreenName(name);
        mTracker.send(new HitBuilders.ScreenViewBuilder().build());


    }
 
Ο παραπάνω κώδικας χωρίς της παρακάτω γραμμές δουλεύει μια χαρά
 
    private Tracker mTracker;
    private String name = new String("MyApp Main Screen");
    //in onCreate class
    // Obtain the shared Tracker instance.
    AnalyticsApplication application = (AnalyticsApplication) getApplication();
    mTracker = application.getDefaultTracker();
 
    //in onResume class
    mTracker.setScreenName(name);
    mTracker.send(new HitBuilders.ScreenViewBuilder().build());
 
 
AnalyticsApplication.java
 
 
   package com.r.movie.quiz;
    
    import android.app.Application;
    
    import com.google.android.gms.analytics.GoogleAnalytics;
    import com.google.android.gms.analytics.Tracker;
    
    
    public class AnalyticsApplication extends Application {
    
        private Tracker mTracker;
    
        synchronized public Tracker getDefaultTracker() {
           if (mTracker == null) {
              GoogleAnalytics analytics = GoogleAnalytics.getInstance(this);
    
              mTracker = analytics.newTracker(R.xml.global_tracker);
           }
                return mTracker;
        }
    
    }
 
 
build.gradle -> App level
 
    apply plugin: 'com.android.application'
    
    
    android {
        compileSdkVersion 23
        buildToolsVersion "23.0.3"
    
        defaultConfig {
            applicationId "com.r.movie.quiz"
            minSdkVersion 15
            targetSdkVersion 23
            versionCode 28
            versionName "1.1.6"
        }
        buildTypes {
            release {
                minifyEnabled false
                proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
            }
        }
    }
    
    dependencies {
        compile fileTree(dir: 'libs', include: ['*.jar'])
        testCompile 'junit:junit:4.12'
        compile 'com.android.support:appcompat-v7:23.3.0'
        compile 'com.google.android.gms:play-services-analytics:8.4.0'
    
    }
    
    apply plugin: 'com.google.gms.google-services'
 
 
build.gradle -> project level
 
    // Top-level build file where you can add configuration options common to all sub-projects/modules.
    
    buildscript {
        repositories {
            jcenter()
        }
        dependencies {
            classpath 'com.android.tools.build:gradle:2.1.0'
            classpath 'com.google.gms:google-services:2.0.0-alpha6'
    
            // NOTE: Do not place your application dependencies here; they belong
            // in the individual module build.gradle files
        }
    }
    
    allprojects {
        repositories {
            jcenter()
        }
    }
    
    task clean(type: Delete) {
        delete rootProject.buildDir
    }
 
AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?>
    <manifest xmlns:android="http://schemas.android.com/apk/res/android"
        package="com.r.movie.quiz"
        android:versionCode="28"
        android:versionName="1.1.6">
    
    
    
        <uses-sdk
            android:minSdkVersion="11"
            android:targetSdkVersion="23" />
    
        <application
            android:allowBackup="true"
            android:icon="@mipmap/ic_launcher"
            android:label="@string/app_name"
            android:theme="@style/AppTheme">
    
    
            <activity
                android:name="com.r.movie.quiz.MainActivity"
                android:configChanges="orientation"
                android:label="@string/app_name"
                android:screenOrientation="portrait"
                android:theme="@style/Theme.AppCompat.NoActionBar">
                <intent-filter>
                    <action android:name="android.intent.action.MAIN" />
    
                    <category android:name="android.intent.category.LAUNCHER" />
                </intent-filter>
            </activity>
    
        </application>
    
        <uses-permission android:name="android.permission.INTERNET" />
        <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
        <uses-permission android:name="android.permission.READ_PHONE_STATE" />
    
    </manifest>
 
Activity_Main.xml


    <?xml version="1.0" encoding="utf-8"?>
    <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        android:id="@+id/container"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        tools:context="com.r.movie.quiz.MainActivity"
        tools:ignore="MergeRootFrame" >
    
        <WebView
            android:id="@+id/webView1"
            android:layout_width="match_parent"
            android:layout_height="match_parent" />
    
    </FrameLayout>
Επεξ/σία από rafinos
Δημοσ.

Παιδιά βρήκα το πρόβλημα... 

 

Δεν είχα βάλει όνομα application στο Manifest

<application
android:name=".AnalyticsApplication"
...

Το θέμα είναι ότι τώρα δεν στέλνει δεδομένα στο Analytics :P

  • 2 εβδομάδες αργότερα...
Δημοσ.

Παιδιά το έκανα (νομίζω δηλαδή)

Έφτιαξα από την αρχή το λογαριασμό στο analytics και χρησιμοποίησα το αρχείο json με το νέο USER-ID

Επίσης έσβησα τις παρακάτω γραμμές κώδικα από το MainActivity

//in onResume class
mTracker.setScreenName(name);
mTracker.send(new HitBuilders.ScreenViewBuilder().build());

και έφτιαξα μια συνάρτηση για το παραπάνω με τίτλο sendScreenName()

 
private void sendScreenName() {
String name = "MainActivity";

// [START screen_view_hit]
mTracker.setScreenName(name);
mTracker.send(new HitBuilders.ScreenViewBuilder().build());
// [END screen_view_hit]
}

Τέλος, πρόσθεσα την παρακάτω γραμμή στην onCreate:

sendScreenName();

Μετά από αυτά, όταν ανοίγω την εφαρμογή μου βλέπω τον μαγικό αριθμό "1" στο analytics.google.com στις αναφορές πραγματικού χρόνου!

Δημοσ.

Προσωπικά θέλω ότι πιο απλό γίνεται, απλά θέλω τη δυνατότητα να βλέπω αν κάποιος χρησιμοποιεί την εφαρμογή εκείνη τη στιγμή. 

 

Διαφορετικά μου αρκούσε και το εργαλείο που παρέχει το google play console. :)

 

Οπότε αφού προς στιγμήν φαίνεται πως λειτουργεί το google analytics θα κάτσω με αυτό. Αν στο μέλλον χρειαστεί κάτι πιο ιδιαίτερο θα έχω στο νου μου το Firebase (που δεν καταλαβαίνω γιατί η Google βγάζει εργαλεία που κάνουν το ίδιο πράγμα με διαφορετικό τρόπο :P)

 

Όπως είπα και σε ένα άλλο θέμα μήπως υπάρχει κάποιο έτοιμο κείμενο που μπορώ να χρησιμοποιήσω ως πολιτική απορρήτου επειδή χρησιμοποιώ το google analytics στην εφαρμογή ή θα πρέπει να γράψω κάτι μόνος μου; 

Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε

Πρέπει να είστε μέλος για να αφήσετε σχόλιο

Δημιουργία λογαριασμού

Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!

Δημιουργία νέου λογαριασμού

Σύνδεση

Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.

Συνδεθείτε τώρα
  • Δημιουργία νέου...