تنظيم صفحاتك في مجموعات
يمكنك حفظ المحتوى وتصنيفه حسب إعداداتك المفضّلة.
بعد إيقاف واجهة برمجة التطبيقات
Google Sign-In API
نهائيًا، سنزيل حزمة تطوير البرامج (SDK) لألعاب الإصدار 1 في عام 2026. بعد شباط (فبراير) 2025، لن تتمكّن من نشر
العناوين التي تم دمجها حديثًا مع حزمة تطوير البرامج (SDK) لإصدار 1 من "ألعاب Google Play" على Google Play. ننصحك باستخدام
حزمة تطوير البرامج (SDK) لإصدار 2 من "ألعاب Google Play" بدلاً من ذلك.
على الرغم من أنّ العناوين الحالية التي تم دمجها مع الإصدار 1 من الألعاب السابقة ستظل تعمل لعدة
سنوات، ننصحك بنقل بياناتها إلى الإصدار 2
اعتبارًا من حزيران (يونيو) 2025.
يتناول هذا الدليل استخدام حزمة تطوير البرامج (SDK) لإصدار 1 من "خدمات ألعاب Play". لا تتوفّر حزمة C++ SDK لإصدار
"خدمات ألعاب Play" 2 حتى الآن.
تتيح لك واجهة برمجة التطبيقات Player Stats API تخصيص تجارب اللعبة حسب شرائح معيّنة من
اللاعبين والمراحل المختلفة من دورة حياة اللاعب. يمكنك إنشاء تجارب مخصّصة
لكل شريحة من شرائح اللاعبين استنادًا إلى مستوى تقدّم اللاعبين ومقدار المبالغ التي ينفقونها ومستوى تفاعلهم. على سبيل المثال، يمكنك استخدام واجهة برمجة التطبيقات هذه لاتّخاذ إجراءات وقائية
لتحفيز لاعب أقل نشاطًا على إعادة التفاعل مع لعبتك، مثل
عرض عناصر جديدة داخل اللعبة والترويج لها عند تسجيل دخول اللاعب.
يوضّح لك هذا الدليل كيفية استخدام واجهة برمجة التطبيقات Player Stats API في تطبيق أصلي مكتوب بلغة C++ أو
Objective-C.
أساسيات إحصاءات اللاعبين
يمكنك استخدام واجهات برمجة تطبيقات Player Stats API لاسترداد بيانات عن
نشاط اللاعب داخل اللعبة. تشمل أنواع بيانات اللاعبين التي يمكنك استردادها ما يلي:
متوسط مدة الجلسة: متوسط مدة جلسة المشغّل بال دقائق
يتم تحديد مدة الجلسة حسب الوقت الذي يكون فيه اللاعب مسجِّلاً الدخول إلى
"خدمات ألعاب Google Play".
احتمالية إيقاف الاستخدام: توقّع ما إذا كان اللاعب سيوقف استخدام التطبيق في
اليوم التالي، ويتم تقديمه على شكل 0 (احتمالية منخفضة لإيقاف الاستخدام) أو 1 (احتمالية عالية لإيقاف
الاستخدام). يتم تعريف إيقاف الاستخدام على أنّه 7 أيام من عدم النشاط.
الأيام منذ آخر مرة تم فيها تشغيل اللعبة: العدد التقريبي للأيام التي مضت منذ المرة الأخيرة التي لعب فيها اللاعب
عدد عمليات الشراء: العدد التقريبي لعمليات الشراء داخل التطبيق التي أجراها
اللاعب
عدد الجلسات: العدد التقريبي لجلسات اللاعب
يتم تحديد الجلسات حسب عدد المرات التي يسجّل فيها اللاعب الدخول إلى
"خدمات ألعاب Google Play".
النسبة المئوية للجلسة: التقريب للنسبة المئوية للجلسات الخاصة بال
لاعب، يتم تقديمها كقيمة عشرية
تتراوح بين 0 و1 (شاملة). تشير هذه القيمة إلى عدد الجلسات التي لعبها
اللاعب الحالي مقارنةً بباقي قاعدة
اللاعبين في هذه اللعبة. تشير الأرقام الأعلى إلى أنّ هذا اللاعب قد لعب المزيد من الجلسات.
النسبة المئوية للإنفاق: النسبة المئوية التقريبية للإنفاق الخاصة باللاعب، مقدَّمة كهيأة قيمة عشرية تتراوح بين 0 و1 (شاملة). تشير هذه القيمة إلى المبلغ الذي ينفقه اللاعب الحالي مقارنةً بباقي قاعدة مستخدمي هذه اللعبة. تشير الأرقام الأعلى إلى أنّ هذا اللاعب قد أنفق أكثر.
الحصول على إحصاءات اللاعب للاعب مسجّل الدخول حاليًا باستخدام C++
// Create the callback for our asynchronous fetch call. This callback will// log either an error or the average session length for the currently// signed-in player.gpg::StatsManager::FetchForPlayerCallbackcallback=[](gpg::StatsManager::FetchForPlayerResponseconst&response){if(IsError(response.status)){LogE("An error occurred fetching player stats.");}else{gpg::PlayerStatsconst & player_stats=response.data;if(player_stats.HasAverageSessionLength()){LogI("Average session length: %f",player_stats.AverageSessionLength());}else{LogW("Currently signed-in player had no associated average session length stats.");}}};// Asynchronously fetch the Player Stats. When the fetch is finished it// will call our callback. game_services_ is the std::unique_ptr<GameServices>// returned by gpg::GameServices::Builder.Create()game_services_->Stats().FetchForPlayer(callback);
الحصول على إحصاءات اللاعب الذي سجّل الدخول حاليًا باستخدام Objective-C
// Asynchronously fetches the Player Stats and then logs either a// description of them or an error[GPGPlayerStatsplayerStatsWithCompletionHandler:^(GPGPlayerStats*playerStats,NSError*error){if(error){NSLog(@"Error fetching player stats: %@",error);}else{NSLog(@"Description of stats for the currently signed-in player: %@",playerStats);}}];
نصائح لاستخدام بيانات إحصاءات اللاعبين
تتيح لك واجهة برمجة التطبيقات Play Stats API تحديد أنواع اللاعبين المختلفة بسهولة استنادًا إلى
سلوك التفاعل والإنفاق، وتطبيق الاستراتيجيات المناسبة لتحسين تجربتهم في اللعبة.
يسرد الجدول التالي بعض الأمثلة على شرائح اللاعبين واستراتيجيات التفاعل المقترَحة:
شريحة اللاعب
استراتيجية التفاعل
اللاعبون المتكرّرون الذين سجّلوا عددًا كبيرًا من الجلسات ونسبة مئوية جيدة للإنفاق
، ولكن لم يلعبوا خلال الأسبوع الماضي أو أكثر
أرسِل إشعارًا بشأن خصم أو مكافأة خاصة
عند عودة المستخدمين إلى اللعب.
عرض رسالة ترحيب تُشير إلى الإنجازات المُبهرة التي حققها اللاعب
ومنح شارة مصمّمة لتشجيعه على
إعادة اللعب
اللاعبون الملتزمون للغاية في الشريحة المئوية ذات الإنفاق المنخفض
يمكنك تخصيص المكافآت لتحفيزهم على دعوة أصدقائهم
لتثبيت لعبتك والانضمام إليها. يعتمد هذا النهج على سعادة اللاعب
باللعبة لجذب لاعبين جدد.
اللاعبون الذين ينفقون بكثافة يُظهرون علامات على بلوغهم ذروة نشاطهم وبدء
اللعب بمعدل أقل.
خصِّص المكافآت لتجديد اهتمامهم، مثلاً من خلال
تقديم أدوات أو أسلحة أو
خصومات ذات قيمة عالية وقصيرة المدة.
في المرة التالية التي يسجّل فيها اللاعب الدخول، يمكنك عرض فيديو يوجّهه
إلى ميزات المنتدى، مثل هجمات العشائر، والتي تؤدي بدورها إلى
زيادة التفاعل بشكلٍ متكرّر ولمدة أطول.
يخضع كل من المحتوى وعيّنات التعليمات البرمجية في هذه الصفحة للتراخيص الموضحّة في ترخيص استخدام المحتوى. إنّ Java وOpenJDK هما علامتان تجاريتان مسجَّلتان لشركة Oracle و/أو الشركات التابعة لها.
تاريخ التعديل الأخير: 2025-07-27 (حسب التوقيت العالمي المتفَّق عليه)
[[["يسهُل فهم المحتوى.","easyToUnderstand","thumb-up"],["ساعَدني المحتوى في حلّ مشكلتي.","solvedMyProblem","thumb-up"],["غير ذلك","otherUp","thumb-up"]],[["لا يحتوي على المعلومات التي أحتاج إليها.","missingTheInformationINeed","thumb-down"],["الخطوات معقدة للغاية / كثيرة جدًا.","tooComplicatedTooManySteps","thumb-down"],["المحتوى قديم.","outOfDate","thumb-down"],["ثمة مشكلة في الترجمة.","translationIssue","thumb-down"],["مشكلة في العيّنات / التعليمات البرمجية","samplesCodeIssue","thumb-down"],["غير ذلك","otherDown","thumb-down"]],["تاريخ التعديل الأخير: 2025-07-27 (حسب التوقيت العالمي المتفَّق عليه)"],[],[],null,["# Add player stats to your game\n\nFollowing the deprecation of the\n[Google Sign-In](https://android-developers.googleblog.com/2024/09/streamlining-android-authentication-credential-manager-replaces-legacy-apis.html)\nAPI, we are removing the games v1 SDK in 2026. After February 2025, you will be unable to publish\ntitles that are newly integrated with games v1 SDK, on Google Play. We recommend that you use the\ngames v2 SDK instead. \n\nWhile existing titles with the previous games v1 integrations continue to function for a\ncouple of years, you are encouraged to\n[migrate to v2](/games/pgs/android/migrate-to-v2)\nstarting June 2025. \n\nThis guide is for using the Play Games Services v1 SDK. The C++ SDK for\nPlay Games Services v2 is not yet available.\n\nThe Player Stats API let you tailor game experiences to specific segments of\nplayers and different stages of the player lifecycle. You can build tailored\nexperiences for each player segment based on how players are progressing,\nspending, and engaging. For example, you can use this API to take proactive\nactions to encourage a less active player to re-engage with your game, such as\nby displaying and promoting new in-game items when the player signs in.\n\nThis guide shows you how to use the Player Stats API in a native C++ or\nObjective-C application.\n\nPlayer stats basics\n-------------------\n\nYou can use the Player Stats APIs to retrieve data about a player's in-game\nactivity. The types of player data you can retrieve include:\n\n- **Average session length**: The average session length of the player in minutes. Session length is determined by the time that a player is signed in to Google Play Games services.\n- **Churn probability**: The prediction of whether a player will churn in the next day, given as 0 (low probability of churn) or 1 (high probability of churn). Churn is defined as 7 days of inactivity.\n- **Days since last played**: The approximate number of days since the player last played.\n- **Number of purchases**: The approximate number of in-app purchases for the player.\n- **Number of sessions**: The approximate number of sessions of the player. Sessions are determined by the number of times that a player signs in to Google Play Games services.\n- **Session percentile**: The approximation of sessions percentile for the player, given as a decimal value between 0 and 1 (inclusive). This value indicates how many sessions the current player has played in comparison to the rest of this game's player base. Higher numbers indicate that this player has played more sessions.\n- **Spend percentile**: The approximate spend percentile of the player, given as a decimal value between 0 and 1 (inclusive). This value indicates how much the current player has spent in comparison to the rest of this game's player base. Higher numbers indicate that this player has spent more.\n\nGet player stats for a currently signed-in player with C++\n----------------------------------------------------------\n\n // Create the callback for our asynchronous fetch call. This callback will\n // log either an error or the average session length for the currently\n // signed-in player.\n gpg::StatsManager::FetchForPlayerCallback callback = [](gpg::StatsManager::FetchForPlayerResponse const &response) {\n if (IsError(response.status)) {\n LogE(\"An error occurred fetching player stats.\");\n } else {\n gpg::PlayerStats const & player_stats = response.data;\n if (player_stats.HasAverageSessionLength()) {\n LogI(\"Average session length: %f\", player_stats.AverageSessionLength());\n } else {\n LogW(\"Currently signed-in player had no associated average session length stats.\");\n }\n }\n };\n // Asynchronously fetch the Player Stats. When the fetch is finished it\n // will call our callback. game_services_ is the std::unique_ptr\u003cGameServices\u003e\n // returned by gpg::GameServices::Builder.Create()\n game_services_-\u003eStats().FetchForPlayer(callback);\n\nGet player stats for a currently signed-in player with Objective-C\n------------------------------------------------------------------\n\n // Asynchronously fetches the Player Stats and then logs either a\n // description of them or an error\n [GPGPlayerStats playerStatsWithCompletionHandler:^(GPGPlayerStats *playerStats, NSError *error) {\n if (error) {\n NSLog(@\"Error fetching player stats: %@\", error);\n } else {\n NSLog(@\"Description of stats for the currently signed-in player: %@\", playerStats);\n }\n }];\n\nTips for using player stats data\n--------------------------------\n\nThe Play Stats API lets you easily identify various types of players, based on\ntheir engagement and spending behavior, and apply appropriate strategies to\nenhance their game experience.\n\nThe following table lists some example player segments and recommended\nengagement strategies:\n\n| Player Segment | Engagement Strategy |\n|---------------------------------------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|\n| Frequent players with a high number of sessions and good spend percentile, but have not played for the last week or more. | - Send a notification about a discount or special bonus available upon their return to play. - Show a welcome back message that acknowledges impressive accomplishments, and award a badge designed to encourage return play. |\n| Highly engaged players in a low spend percentile. | - Tailor bonuses to incentivize them to invite their friends to install and join your game. This approach builds on the player's demonstrated enjoyment of the game to recruit new players. |\n| High spending players showing signs of having peaked and starting to play less frequently. | - Tailor bonuses to freshen their interest, such as by offering high-value, short-duration tools, weapons, or discounts. - The next time the player signs in, show a video that directs them to community features, like clan attacks, that drive more frequent and longer engagement. |"]]