دليل تنفيذ تطبيق الأجهزة الجوّالة

هذا المستند مخصّص لمطوّري برامج الجوّال ويوضّح كيفية استخدام "إحصاءات Google" لقياس تفاعلات المستخدمين والإجابة عن أسئلة حول استخدام التطبيقات.

مقدمة

توفر "إحصاءات Google" لتطبيقات الأجهزة الجوّالة منصة لقياس تفاعلات المستخدمين، ما يسمح لك بفهم تفاعل المستخدمين مع تطبيقك وتحسينه بشكل أفضل.

يوفِّر التنفيذ التلقائي لبرنامج Google Analytics المعلومات التالية عن تطبيقك تلقائيًا:

  • عدد المستخدمين والجلسات
  • مدة الجلسة
  • أنظمة التشغيل
  • طُرُز الأجهزة
  • الموقع الجغرافي

سيوضّح هذا الدليل كيفية تنفيذ ميزات إضافية في "إحصاءات Google" لفهم المستخدمين وسلوكهم بشكل أفضل.

قبل البدء

قبل العمل عبر هذا الدليل لإعداد Google Analytics لتطبيقات الأجهزة الجوّالة:

نظرة عامة

صيد التنين

يستخدم هذا الدليل نموذجًا لتطبيق لإرشادك خلال تنفيذ ميزات إضافية في "إحصاءات Google". ويُسمّى التطبيق Dragon Catcher ويتمتع بخصائص أسلوب اللعب التالية:

  • يتألف هذا المستوى من لاعب وتنانين ومنطقة مسوّرة وبئر وأشجار.
  • هدف اللاعب هو صيد التنانين من خلال نقلها إلى المنطقة المحاطة بسياجات.
  • يمكن للّاعب الانتقال إلى أماكن مختلفة في المستوى وعناصر، مثل البئر أو شجرة السحرية.
  • يتقدّم اللاعب إلى المستوى التالي بعد أن يلتقط كل التنانين.
  • يبدأ اللاعب اللعبة في المستوى الأول الذي يُسمى Barren Fields.

باستخدام Google Analytics، هناك بعض الأسئلة المتعلقة بسلوك المستخدم والتي يمكن الإجابة عنها حول Dragon Catcher:

يوضّح الجزء المتبقي من هذا المستند كيف يمكن الإجابة عن هذه الأسئلة من خلال تنفيذ ميزات "إحصاءات Google" في لعبة Dragon Catcher.

ما هي الإجراءات التي يتخذها المستخدمون؟ (الأحداث)

إذا كانت هناك إجراءات مهمة تريد تتبُّعها داخل تطبيقك، يمكن استخدام الأحداث لوصف هذا الإجراء في "إحصاءات Google". ويتألف الحدث من أربع مَعلمات: category وaction وlabel وvalue.

على سبيل المثال، في Dragon Catcher، يكون المستخدم الذي ينقذ تنينًا أو يزور منطقة معينة في المستوى عبارة عن إجراءات مهمة نريد قياسها باستخدام الأحداث. يوضّح مقتطف الرمز أدناه كيفية قياس ذلك في "إحصاءات Google".

حزمة تطوير البرامج (SDK) لنظام التشغيل Android

// To determine how many dragons are being rescued, send an event when the
// player rescues a dragon.
tracker.send(new HitBuilders.EventBuilder()
    .setCategory("Barren Fields")
    .setAction("Rescue")
    .setLabel("Dragon")
    .setValue(1)
    .build());

// To determine if players are visiting the magic tree, send an event when the
// player is in the vicinity of the magic tree.
tracker.send(new HitBuilders.EventBuilder()
    .setCategory("Barren Fields")
    .setAction("Visited")
    .setLabel("Magic Tree")
    .setValue(1)
    .build());

// To determine if players are visiting the well, send an event when the player
// is in the vicinity of the well.
tracker.send(new HitBuilders.EventBuilder()
    .setCategory("Barren Fields")
    .setAction("Visited")
    .setLabel("Well")
    .setValue(1)
    .build());

iOS SDK

// To determine how many dragons are being rescued, send an event when the
// player rescues a dragon.
[tracker send:[[GAIDictionaryBuilder createEventWithCategory:@"Barren Fields"
                                                      action:@"Rescue"
                                                       label:@"Dragon"
                                                       value:@1] build]];

// To determine if players are visiting the magic tree, send an event when the
// player is in the vicinity of the magic tree.
[tracker send:[[GAIDictionaryBuilder createEventWithCategory:@"Barren Fields"
                                                      action:@"Visited"
                                                       label:@"Magic Tree"
                                                       value:@1] build]];

// To determine if players are visiting the well, send an event when the player
// is in the vicinity of the well.
[tracker send:[[GAIDictionaryBuilder createEventWithCategory:@"Barren Fields"
                                                      action:@"Visited"
                                                       label:@"Well"
                                                       value:@1] build]];

مكوّن "إحصاءات Google" الإضافي للوحدة التنظيمية

// To determine how many dragons are being rescued, send an event when the
// player rescues a dragon.
googleAnalytics.LogEvent("Barren Fields", "Rescue", "Dragon", 1);

// To determine if players are visiting the magic tree, send an event when the
// player is in the vicinity of the magic tree.
googleAnalytics.LogEvent("Barren Fields", "Visited", "Magic Tree", 1);

// To determine if players are visiting the well, send an event when the player
// is in the vicinity of the well.
googleAnalytics.LogEvent("Barren Fields", "Visited", "Well", 1);

قياس "إنجازات" اللاعبين

يمكن قياس "إنجازات" اللاعبين باستخدام الأحداث في "إحصاءات Google". على سبيل المثال، لقياس إنجاز لإنقاذ 5 تنانين، يتم تسجيل عدد التنانين التي أنقذها اللاعب وبعد وصول اللاعب إلى الحد الأدنى يتم إرسال حدث إلى "إحصاءات Google":

حزمة تطوير البرامج (SDK) لنظام التشغيل Android

if (numDragonsRescued > 5) {
  if (!user.hasAchievement(RESCUED_ACHIEVEMENT) {
    tracker.send(new HitBuilders.EventBuilder()
        .setCategory("Achievement")
        .setAction("Unlocked")
        .setLabel("5 Dragons Rescued")
        .setValue(1)
        .build());
  } else {
    tracker.send(new HitBuilders.EventBuilder()
        .setCategory("Achievement")
        .setAction("Earned")
        .setLabel("5 Dragons Rescued")
        .setValue(1)
        .build());
  }
}

iOS SDK

if (numDragonsRescued > 5) {
  if (![user hasAchievement:RESCUED_ACHIEVEMENT]) {
    [tracker send:[[GAIDictionaryBuilder createEventWithCategory:@"Achievement"
                                                          action:@"Unlocked"
                                                           label:@"5 Dragons Rescued"
                                                           value:@1] build]];
  } else {
    [tracker send:[[GAIDictionaryBuilder createEventWithCategory:@"Achievement"
                                                          action:@"Earned"
                                                           label:@"5 Dragons Rescued"
                                                           value:@1] build]];
  }
}

مكوّن "إحصاءات Google" الإضافي للوحدة التنظيمية

if (numDragonsRescued > 5) {
  if (!user.HasAchievement(RESCUED_ACHIEVEMENT)) {
    googleAnalytics.LogEvent("Achievement", "Unlocked", "5 Dragons Rescued", 1);
  } else {
    googleAnalytics.LogEvent("Achievement", "Earned", "5 Dragons Rescued", 1);
  }
}

أدلة المطوِّرين للفعاليات

إعداد التقارير عن الأحداث

تتوفّر بيانات الأحداث في:

ما مقدار الأموال التي ينفقها المستخدمون في تطبيقي؟ (التجارة الإلكترونية المحسّنة)

إذا كنت تريد قياس عمليات الشراء داخل التطبيق من قِبل المستخدمين، يمكنك استخدام ميزة تتبُّع التجارة الإلكترونية لتتبُّع عمليات الشراء وفهم أداء المنتجات وسلوك المستخدم ذي الصلة. يمكن استخدام تتبع التجارة الإلكترونية لقياس عملية شراء عنصر معين أو عملة افتراضية.

على سبيل المثال، في Dragon Catcher، لقياس شراء بعض العناصر، يتم إرسال بيانات المعاملات إلى "إحصاءات Google" من خلال حدث:

حزمة تطوير البرامج (SDK) لنظام التشغيل Android

Product product = new Product()
    .setName("Dragon Food")
    .setPrice(40.00);

ProductAction productAction = new ProductAction(ProductAction.ACTION_PURCHASE)
    .setTransactionId("T12345");

// Add the transaction data to the event.
HitBuilders.EventBuilder builder = new HitBuilders.EventBuilder()
    .setCategory("In-Game Store")
    .setAction("Purchase")
    .addProduct(product)
    .setProductAction(productAction);

// Send the transaction data with the event.
tracker.send(builder.build());

iOS SDK

GAIEcommerceProduct *product = [[GAIEcommerceProduct alloc] init];
[product setName:@"Dragon Food"];
[product setPrice:@40.00];

GAIEcommerceProductAction *productAction = [[GAIEcommerceProductAction alloc] init];
[productAction setAction:kGAIPAPurchase];
[productAction setTransactionId:@"T12345"];

GAIDictionaryBuilder *builder = [GAIDictionaryBuilder createEventWithCategory:@"In-Game Store"
                                                                       action:@"Purchase"
                                                                        label:nil
                                                                        value:nil];
// Add the transaction data to the event.
[builder setProductAction:productAction];
[builder addProduct:product];

// Send the transaction data with the event.
[tracker send:[builder build]];

مكوّن "إحصاءات Google" الإضافي للوحدة التنظيمية

// Note: Using Android SDK v3 and standard Ecommerce tracking.

googleAnalytics.LogItem("T12345", "Dragon Food", "Food_SKU", "Items", 40.00, 1);
googleAnalytics.LogTransaction("T12345", "In-Game Store", 40.00, 0.00, 0.00);

إذا اشترى أحد المستخدمين عملة افتراضية، فمن المستحسن قياس تبادل نقود حقيقية عند إرسال بيانات المعاملات إلى "إحصاءات Google". عندما ينفق المستخدم العملة الافتراضية لشراء العناصر، يمكنك قياس ذلك باستخدام الأحداث. مثال:

حزمة تطوير البرامج (SDK) لنظام التشغيل Android

/**
 * When the user purchases the virtual currency (Gems) measure the transaction
 * using enhanced ecommerce.
 */
Product product = new Product()
    .setName("2500 Gems")
    .setPrice(5.99);

ProductAction productAction = new ProductAction(ProductAction.ACTION_PURCHASE)
    .setTransactionId("T67890");

// Add the transaction to the screenview.
HitBuilders.ScreenViewBuilder builder = new HitBuilders.ScreenViewBuilder()
    .addProduct(product)
    .setProductAction(productAction);

// Send the transaction with the screenview.
tracker.setScreenName("In-Game Store");
tracker.send(builder.build());


/**
 * When the user purchases an item using the virtual currency (Gems) send an
 * event to measure this in Google Analytics.
 */
HitBuilders.EventBuilder builder = new HitBuilders.EventBuilder()
    .setCategory("In-Game Store")
    .setAction("Purchase")
    .setLabel("Sword")
    .setValue(35);
tracker.send(builder.build());

iOS SDK

/**
 * When the user purchases the virtual currency (Gems) measure the transaction
 * using enhanced ecommerce.
 */
GAIEcommerceProduct *product = [[GAIEcommerceProduct alloc] init];
[product setName:@"2500 Gems"];
[product setPrice:@5.99];

GAIEcommerceProductAction *productAction = [[GAIEcommerceProductAction alloc] init];
[productAction setAction:kGAIPAPurchase];
[productAction setTransactionId:@"T67890"];

GAIDictionaryBuilder *viewBuilder = [GAIDictionaryBuilder createScreenView];

// Add the transaction data to the screenview.
[viewBuilder setProductAction:productAction];
[viewBuilder addProduct:product];

// Send the transaction with the screenview.
[tracker set:kGAIScreenName value:@"In-Game Store"];
[tracker send:[viewBuilder build]];


/**
 * When the user purchases an item using the virtual currency (Gems) send an
 * event to measure this in Google Analytics.
 */
GAIDictionaryBuilder *eventBuilder = [GAIDictionaryBuilder createEventWithCategory:@"In-Game Store"
                                                                       action:@"Purchase"
                                                                        label:@"Sword"
                                                                        value:@35];
[tracker send:[eventBuilder build]];

مكوّن "إحصاءات Google" الإضافي للوحدة التنظيمية

// Note: Using Android SDK v3 and standard Ecommerce tracking.

/**
 * When the user purchases the virtual currency (Gems) measure the transaction
 * using enhanced ecommerce.
 */

googleAnalytics.LogItem("T12345", "2500 Gems", "GEM2500_SKU", "Items", 5.99, 1);
googleAnalytics.LogTransaction("T12345", "In-Game Store", 5.99, 0.00, 0.00);

/**
 * When the user purchases an item using the virtual currency (Gems) send an
 * event to measure this in Google Analytics.
 */
googleAnalytics.LogEvent("In-Game Store", "Purchase", "Sword", 35);

أدلة المطوِّرين للتجارة الإلكترونية المحسَّنة

إعداد تقارير التجارة الإلكترونية المحسَّنة

تتوفر بيانات التجارة الإلكترونية في:

هل يكمل المستخدمون أهداف تطبيقي؟ (الأهداف)

إذا كانت لديك أهداف معيّنة لتطبيقك تريد من المستخدمين إكمالها، يمكنك تحديد هذه الأهداف وقياسها باستخدام "الأهداف" في "إحصاءات Google". على سبيل المثال، قد يكون الهدف هو الوصول إلى مستوى معين من اللعبة أو شراء عنصر ما. لمزيد من المعلومات عن آلية عمل الأهداف، يُرجى الاطّلاع على لمحة عن الأهداف (مركز المساعدة).

في لعبة Dragon Catcher، يمكن إعداد هدف لقياس أوقات إجراء عمليات شراء داخل التطبيق في حال إرسال حدث إلى "إحصاءات Google" لكل عملية شراء. يمكن تحديد الهدف في مشرف واجهة الويب، بدون أيّ رمز إضافي، باستخدام المَعلمات التالية:

  • نوع الهدف (يساوي): الحدث
  • الفئة (يساوي): متجر داخل الألعاب
  • الإجراء (يساوي): شراء
  • استخدام قيمة الحدث كقيمة الهدف للإحالة الناجحة: نعم

تقارير الأهداف

تتوفر بيانات الهدف في:

كيف يتصرف المستخدمون ذوو سمة معينة؟ (المقاييس والسمات المخصّصة)

إذا كنت تريد تتبُّع المستخدِمين بسمات/سمات/بيانات وصفية معيّنة، يمكن استخدام السمات المخصّصة لإرسال هذا النوع من البيانات إلى "إحصاءات Google" وفي عملية التحليل. اطّلِع على مرجع ميزة المقاييس والسمات المخصّصة لمعرفة المزيد عن آلية عمل السمات المخصّصة.

على سبيل المثال، في Dragon Catcher لمعرفة النسبة المئوية للمستخدمين في المستوى الأول أو المستوى الثاني وما إلى ذلك. يمكن ضبط سمة مخصّصة باستخدام المستوى الحالي للمستخدم وإرسالها إلى "إحصاءات Google". الخطوات كالآتي:

  1. أنشِئ سمة مخصّصة باستخدام نطاق User. يتم استخدام نطاق User لأن هذه القيمة يجب أن تستمر في جميع جلسات ذلك المستخدم. اطّلِع على مقالة إعداد السمات المخصّصة أو تعديلها (مركز المساعدة).
  2. عدِّل قيمة السمة المخصّصة عند تغيير مستوى المستخدِم.

يوضِّح المقتطف التالي كيفية تعديل حالة المستخدم في "إحصاءات Google" حيث يكون فهرس السمات المخصّصة على مستوى المستخدم هو 1 ويتم تغيير مستوى المستخدم إلى Barren Fields:

حزمة تطوير البرامج (SDK) لنظام التشغيل Android

// Set the user level custom dimension when sending a hit to Google Analytics
// such as a screenview or event.
tracker.setScreenName("BarrenFields");
tracker.send(new HitBuilders.ScreenViewBuilder()
    .setCustomDimension(1, "Barren Fields")
    .build()
);

iOS SDK

// Set the user level custom dimension when sending a hit to Google Analytics
// such as a screenview or event.
[tracker set:kGAIScreenName value:@"BarrenFields"];
[tracker send:[[[GAIDictionaryBuilder createScreenView]
         set:@"Barren Fields"
      forKey:[GAIFields customDimensionForIndex:1]] build]];

مكوّن "إحصاءات Google" الإضافي للوحدة التنظيمية

// Set the user level custom dimension when sending a hit to Google Analytics
// such as a screenview or event.
googleAnalytics.LogScreen(new AppViewHitBuilder()
    .SetScreenName("BarrenFields").SetCustomDimension(1, "Barren Fields"));

أدلة المطوِّرين للسمات والمقاييس المخصّصة

إعداد تقارير السمات والمقاييس المخصّصة

يمكن تضمين الأبعاد المخصّصة وتطبيقها كشريحة من أجل:

سيسمح لك تطبيق السمة المخصّصة كشريحة بتحليل المستخدمين الذين هم حاليًا في مستوى معيّن داخل اللعبة.

ما الوقت الذي يستغرقه المستخدم لإنجاز مهمة ما؟ (توقيتات مخصصة)

إذا كنت تريد قياس المدة التي يستغرقها إكمال أحد العناصر في التطبيق، يمكن استخدام توقيتات المستخدم للقياسات المستندة إلى الوقت في "إحصاءات Google". إنّ توقيتات المستخدمين تشبه الأحداث، ولكنّها تستند إلى الوقت، ويمكن أن تتضمّن كلاً من category وvalue وname (variable) وlabel. لمعرفة المزيد من المعلومات عن آلية عمل توقيتات المستخدم، يمكنك الاطّلاع على لمحة عن سرعة الموقع الإلكتروني.

على سبيل المثال، في Dragon Catcher لقياس الوقت الذي يستغرقه المستخدم لإنقاذ أول تنين، يمكنك إرسال شيء مثل:

حزمة تطوير البرامج (SDK) لنظام التشغيل Android

// Build and send a timing hit.
tracker.send(new HitBuilders.TimingBuilder()
    .setCategory("Barren Fields")
    .setValue(45000)  // 45 seconds.
    .setVariable("First Rescue")
    .setLabel("Dragon")
    .build());

iOS SDK

[tracker send:[[GAIDictionaryBuilder createTimingWithCategory:@"Barren Fields"
                                                     interval:@45000   // 45 seconds.
                                                         name:@"First Rescue"
                                                        label:@"Dragon"] build]];

مكوّن "إحصاءات Google" الإضافي للوحدة التنظيمية

// Build and send a timing hit.
googleAnalytics.LogTiming("Barren Fields",45000,"First Rescue","Dragon");

أدلة المطوِّرين بشأن التوقيتات المخصّصة

إعداد تقارير حول التوقيتات المخصّصة

تتوفّر بيانات التوقيتات المخصّصة باللغات التالية: