السلام عليكم و رحمة الله و بركاته
أقدم لكم اليوم متابعينا شرح مهم لكل مبرمج تطبيقات أندرويد و هو كيف تضيف كود Google Analytics إلى تطبيقك و الأستفادة من الميزات الكثيرة التي سوف تحصل عليها من مراقبة الأحصائيات الخاصة بتطبيقك
مثل يمكنك معرفة
1- عدد المستخدمين الذين يستخدمون تطبيقك بشكل يومي
2- عدد المستخدمين الجدد لتطبيقك
3- الوقت الذي يقضيه المستخدم داخل تطبيقك
4- عدد المستخدمون المتواجدون في هذه اللحظة داخل تطبيقك
و ميزات كثيرة سوف ترونها بأنفسكم عند البدء في استخدام Google Analytics
- اضغط على الصورة لتكبيرها أثناء الشرح.
أولاً – شرح التسجيل في Google Analytics :
1- قم بتسجيل الدخول إلى موقع Google Analytics عن طريق حسابك في Google .
2- عند الدخول إلى موقع Google Analytics قم بالدخول إلى صفحة المسؤول .
3- قم بالضغط على إنشاء حساب جديد
4- سوف تظهر لك الأسئلة التالية كما في الصورة
5- بعد تحديد أسم التطبيق أخيراً سوف تحصل على المعرف الخاص بك و هو بالشكل التالي
و هو الكود الذي سوف تستخدمه داخل تطبيقك
ثانياً – أضافة خدمة 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
SecondActivity // و هي أكتفتي فارغة كما ذكرنا سابقاً أيضفت من أجل ظهور أسمها في لوحة التحكم على Google Analytics
و هكذا نكون أضفنا خدمة Google Analytics إلى تطبيق الأندرويد الخاص بنا بنجاح
لتحميل المشروع مفتوح المصدر اضغط هنا
وفي الختام إسئل الله لي ولكم التوفيق و السلام عليكم
أنا استخدم الاكليبس
أين المشكلة أخي ؟ نفس الطريقة تماماً .. ولكن تستخدم مكتبة خدمات جوجل بلاي التي تستخدمها للأعلانات تضعها في مشروعك حسب هذا الشرح.
طيب لو ممكن كود سورس بنفس هذا الدرس لأني أول مرة اطبق الخطوات يعطي أخطاء ..في السابق عندما اطبق الدرس يشتغل ويطلع صحيح بس هذا الدرس الأول الذي به أخطاء … لو ممكن كود مفتوح المصدر
اتنمنى ان توضح الطريقه اليدويه في فيديو قصير على برنامج اكليبس لان اندرويد استدوديو يوجده به طريقه تلقائيه
لان هناك اشياء غير واضحه كالاضافات في الملفات هل استبدال محتواها كامل بالاكواد هذه ام اضافتها الى جانب الاسطر الاصليه في الملفات ؟؟!!