أضافة خدمة Google Analytics إلى تطبيقك الأندرويد برمجياً

السلام عليكم و رحمة الله و بركاته

أقدم لكم اليوم متابعينا شرح مهم لكل مبرمج تطبيقات أندرويد و هو كيف تضيف كود Google Analytics إلى تطبيقك و الأستفادة من الميزات الكثيرة التي سوف تحصل عليها من مراقبة الأحصائيات الخاصة بتطبيقك

مثل يمكنك معرفة
1- عدد المستخدمين الذين يستخدمون تطبيقك بشكل يومي
2- عدد المستخدمين الجدد لتطبيقك
3- الوقت الذي يقضيه المستخدم داخل تطبيقك
4- عدد المستخدمون المتواجدون في هذه اللحظة داخل تطبيقك
و ميزات كثيرة سوف ترونها بأنفسكم عند البدء في استخدام Google Analytics

  • اضغط على الصورة لتكبيرها أثناء الشرح.

أولاً – شرح التسجيل في Google Analytics :

1- قم بتسجيل الدخول إلى موقع Google Analytics عن طريق حسابك في Google .

google analytics

2- عند الدخول إلى موقع Google Analytics قم بالدخول إلى صفحة المسؤول .

google analytics4

3- قم بالضغط على إنشاء حساب جديد

google analytics5
4- سوف تظهر لك الأسئلة التالية كما في الصورة

 

google analytics2
5- بعد تحديد أسم التطبيق أخيراً سوف تحصل على المعرف الخاص بك و هو بالشكل التالي
و هو الكود الذي سوف تستخدمه داخل تطبيقك

google analytics3

ثانياً – أضافة خدمة Google Analytics برمجياً :

ننتقل الأن للقسم الثاني و الأهم و هو عمل مشروع جديد على اندرويد أستديو و أضافة الأكواد اللازمة لعمل خدمة Google Analytics 

#عمل مشروع جديد على أندرويد أستديو :

ليكيفية بناء مشروع فارغ تابع الفيديو https://www.youtube.com/watch?v=J36–V2vSJc

#أضافة الـ compile الخاص  بخدمة Google Analytics في ملف الـ build.gradle :
فقط قم بأضافة السطر التالي

compile 'com.google.android.gms:play-services-analytics:8.1.0'

#التعديلات على ملف AndroidMainfest.xml:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.test.test_google_analytics" >
    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:supportsRtl="true"
        android:theme="@style/AppTheme" >
        <activity android:name=".MainActivity" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <activity android:name=".SecondActivity" >
        </activity>
        <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>
        <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>
        <uses-permission android:name="android.permission.WAKE_LOCK"/>
        <service android:name="com.google.android.gms.analytics.CampaignTrackingService" />

        <service
            android:name="com.google.android.gms.analytics.AnalyticsService"
            android:enabled="true"
            android:exported="false" />

        <application
            android:name=".AnalyticsTrackers">
            ....
        </application>

    </application>

</manifest>

 

#عمل مجلد جديد في الـ res بأسم xml و عمل ملف جديد داخله بأسم app_tracker.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">UA-69480684-1</string>

    <string name="ga_sampleFrequency">100.0</string>

    <bool name="ga_reportUncaughtExceptions">true</bool>
    <screenName name="info.androidhive.googleanalytics.activity.MainActivity">Home Screen</screenName>

    <screenName name="info.androidhive.googleanalytics.activity.SecondActivity">Second Screen</screenName>
</resources>

 

#ملفات اللياوت المستخدمة :

  • activity_main.xml 
  • activity_second.xml 
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:clipToPadding="false">


    <Button android:id="@+id/btnSecondScreen"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/btn_second_screen"
        android:textAllCaps="false"
        android:paddingLeft="15dp"
        android:paddingRight="15dp"
        android:textColor="#fffeff"
        android:textSize="30sp"
        android:background="#04468c"
        android:layout_gravity="center_horizontal"
        android:layout_centerVertical="true"
        android:layout_centerHorizontal="true" />

</RelativeLayout>

 

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent"
    android:layout_height="match_parent" android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    android:paddingBottom="@dimen/activity_vertical_margin"
  >

</RelativeLayout>

activity_main.xml // الواجهة الرئيسية للتطبيق و تحتوي فقط على زر للأنتقال للياوت الثانية

app_tracker.xml // تحتوي هذه الصفحة على معلومات مهمة فهي تحتوي على عنوان الأيدي الخاص بك و هو بالشكل التالي

UA-69480684-1

و يمكنك أضافة أسماء كل لياوت موجودة في تطبيقك لكي تشاهد أحصائيات كل لياوت لوحدها و منه سوف تعرف اللياوت الأكثر زيارة في تطبيقك

activity_second.xml // و هي فقط عبارة عن لياوت ثانية قمنا بأضافتها من أجل ظهور أسمها في الأحصائيات

 

#ملفات الأكتيفتي المستخدمة :

  • AnalyticsTrackers 
  • MainActivity 
  • SecondActivity 
public class AnalyticsTrackers {
    public enum Target {
        APP,
        // Add more trackers here if you need, and update the code in #get(Target) below
    }

    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;

    /**
     * Don't instantiate directly - use {@link #getInstance()} instead.
     */
    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);
    }
}

 

public class MainActivity extends AppCompatActivity {
    private static String TAG = MainActivity.class.getSimpleName();
    private static MainActivity mInstance;
    private Button btnSecondScreen;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        btnSecondScreen = (Button) findViewById(R.id.btnSecondScreen);
        mInstance = this;
        getSupportActionBar().setDisplayShowHomeEnabled(true);
        AnalyticsTrackers.initialize(this);
        AnalyticsTrackers.getInstance().get(AnalyticsTrackers.Target.APP);
        /**
         * زر الأنتقال إلى اللياوت الثانية
         */
        btnSecondScreen.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Intent intent = new Intent(MainActivity.this, SecondActivity.class);
                startActivity(intent);
            }
        });
    }

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

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

    /***
     * كود أسماء الصفحات
     * <p>
     * لكي تظهر في لوحة التحكم الخاصة بخدمة Google Analytics
     */
    public void trackScreenView(String screenName) {
        Tracker t = getGoogleAnalyticsTracker();

        // Set screen name.
        t.setScreenName(screenName);

        // Send a screen view.
        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()
            );
        }
    }

    /***
     * Tracking event
     *
     * @param category event category
     * @param action   action of the event
     * @param label    label
     */
    public void trackEvent(String category, String action, String label) {
        Tracker t = getGoogleAnalyticsTracker();

        // Build and send an Event.
        t.send(new HitBuilders.EventBuilder().setCategory(category).setAction(action).setLabel(label).build());


    }
}
public class SecondActivity extends AppCompatActivity {

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

AnalyticsTrackers // كلاس يتم تنفيذه للأتصال بلوحة التحكم الخاصة بك على Google Analytics

MainActivity  //  الواجهة الرئيسية و يحتوي على زر للأنتقال إلى اللياوت الثانية و يحتوي دالة المزامنة مع لوحة التحكم على Google Analytics

google analytics.7jpg

SecondActivity //  و هي أكتفتي فارغة كما ذكرنا سابقاً أيضفت من أجل ظهور أسمها في لوحة التحكم على Google Analytics

google analytics6
و هكذا نكون أضفنا خدمة Google Analytics إلى تطبيق الأندرويد الخاص بنا بنجاح

لتحميل المشروع مفتوح المصدر اضغط هنا

وفي الختام إسئل الله لي ولكم التوفيق و السلام عليكم

عن محبوب الحسين

محبوب الحسين : من سورية , مهتم بجديد تكنولوجيا المعلومات و ببرمجة و تطوير تطبيقات الأندرويد و بدايتي مع برمجة تطبيقات الأندرويد كانت من هنا "أندرودي عربي"

شاهد أيضاً

التقنيات التي نستطيع برمجة تطبيقات والعاب الاندرويد بها

هل أنت محتار من أين تريد البدأ في مجال برمجة التطبيقات للهواتف الذكية أو الألعاب عالية الاداء ؟ تعرف في هذا المقال عن اللغات والتقنيات واختر منها ما يناسبك لدخول هذا المجال

تعلم برمجة تطبيق اندرويد لمدونتك البلوجر (1)

هل لديك تدوينة أو موقع إخباري ؟ أو معرض يعرض الكثير من البيانات من وسائط ؟ وبحاجة لعرضها في تطبيق اندرويد ؟ هذه فرصتك من هنا وللمبتدئين تعلم برمجة تطبيق لمدونتك

عرض صورة في التطبيق من فايربيس

بسم الله الرحمن الرحيم اليوم سيكون شرحنا عن كيفية عرض صورة  في التطبيق من قاعدة …

5 تعليقات

  1. أنا استخدم الاكليبس

    • أين المشكلة أخي ؟ نفس الطريقة تماماً .. ولكن تستخدم مكتبة خدمات جوجل بلاي التي تستخدمها للأعلانات تضعها في مشروعك حسب هذا الشرح.

  2. طيب لو ممكن كود سورس بنفس هذا الدرس لأني أول مرة اطبق الخطوات يعطي أخطاء ..في السابق عندما اطبق الدرس يشتغل ويطلع صحيح بس هذا الدرس الأول الذي به أخطاء … لو ممكن كود مفتوح المصدر

  3. اتنمنى ان توضح الطريقه اليدويه في فيديو قصير على برنامج اكليبس لان اندرويد استدوديو يوجده به طريقه تلقائيه
    لان هناك اشياء غير واضحه كالاضافات في الملفات هل استبدال محتواها كامل بالاكواد هذه ام اضافتها الى جانب الاسطر الاصليه في الملفات ؟؟!!

ضع بصمتك بتعليق يعبر عن امتنانك

هذا الموقع يستخدم Akismet للحدّ من التعليقات المزعجة والغير مرغوبة. تعرّف على كيفية معالجة بيانات تعليقك.