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

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

المقدمة

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

يوفّر التنفيذ التلقائي لخدمة "إحصاءات Google" المعلومات التالية حول تطبيقك تلقائيًا:

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

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

قبل البدء

قبل العمل في هذا الدليل لإعداد "إحصاءات Google" للتطبيقات المتوافقة مع الأجهزة الجوّالة:

نظرة عامة

قطة تنين

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

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

باستخدام "إحصاءات Google"، إليك بعض الأسئلة عن سلوك المستخدم الذي يمكن الإجابة عنه حول 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]];

المكوِّن الإضافي GA

// 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);

قياس أداء المشغّل "الإنجازات"&

يمكن قياس "المشغّل" "الإنجازات"&quot؛ باستخدام الأحداث في "إحصاءات 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]];
  }
}

المكوِّن الإضافي GA

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]];

المكوِّن الإضافي GA

// 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]];

المكوِّن الإضافي GA

// 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]];

المكوِّن الإضافي GA

// 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]];

المكوِّن الإضافي GA

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

أدلة المطوّرين للمواعيد المخصّصة

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

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