مصادقة الأنظمة الأساسية لألعاب Android
تنظيم صفحاتك في مجموعات
يمكنك حفظ المحتوى وتصنيفه حسب إعداداتك المفضّلة.
للوصول إلى وظائف "خدمات ألعاب Google Play"، يجب أن توفّر لعبتك حساب اللاعب الذي تمّت مصادقته. توضّح هذه المستندات كيفية تنفيذ تجربة مصادقة سلسة في لعبتك.
تتضمّن حزمة تطوير البرامج (SDK) للإصدار الثاني من "خدمات ألعاب Play" عددًا من التحسينات التي تزيد من عدد المستخدمين الذين تمّت مصادقتهم في لعبتك وتسهّل عملية التطوير:
تحسينات للمستخدمين:
بعد اختيار حساب تلقائي، تتمّ مصادقة المستخدمين بدون الحاجة إلى التفاعل مع طلب.
لم يعُد على المستخدمين تنزيل تطبيق "ألعاب Play" للمصادقة باستخدام "خدمات ألعاب Play" أو إنشاء حساب جديد.
يمكن للمستخدمين الآن إدارة حساباتهم على "خدمات ألعاب Play" لألعاب متعدّدة من صفحة واحدة.
تحسينات للمطوّرين:
لم يعُد على رمز العميل البرمجي التعامل مع عملية المصادقة أو تسجيل الخروج، لأنّه يتمّ تشغيل تسجيل الدخول تلقائيًا عند بدء اللعبة، وتتمّ إدارة الحساب في إعدادات نظام التشغيل.
دمج عميل جديد
يوضّح هذا القسم كيفية دمج عميل جديد مع الإصدار الثاني من ميزة "تسجيل الدخول إلى خدمات ألعاب Play".
إضافة الاعتمادية
أضِف اعتمادية حزمة تطوير البرامج (SDK) الخاصة بـ "خدمات ألعاب Play" إلى ملف build.gradle على مستوى جذر تطبيقك. إذا كنت تستخدم Gradle، يمكنك إضافة الاعتمادية أو تعديلها على النحو التالي:
حدِّد مرجع مورد السلاسل النصية @string/game_services_project_id باستخدام رقم تعريف مشروع "خدمات الألعاب" لألعابك كقيمة. يمكنك العثور على رقم تعريف مشروع "خدمات الألعاب" ضمن اسم لعبتك في صفحة الإعداد على Google Play Console.
في ملف res/values/strings.xml، أضِف مرجع مصدر السلاسل النصية واضبط رقم تعريف مشروعك كقيمة. في Google Play Console، يمكنك العثور على رقم تعريف مشروعك ضمن اسم لعبتك في صفحة الإعداد. على سبيل المثال:
<!-- res/values/strings.xml -->
<resources>
<!-- Replace 0000000000 with your game's project id. Example value shown above. --> <string translatable="false" name="game_services_project_id"> 0000000000 </string>
</resources>
إعداد حزمة تطوير البرامج (SDK)
أعِدّ حزمة تطوير البرامج (SDK) الخاصة بـ "ألعاب Play" في معاودة الاتصال onCreate(..) لفئة Application.
عند تشغيل لعبتك، ستحاول دائمًا مصادقة المستخدم. لمصادقة المستخدم، عليك التأكّد من أنّه تمّت مصادقته بنجاح، ثمّ الحصول على رقم تعريف اللاعب.
للتأكّد من محاولة المصادقة، استخدِم GamesSignInClient.isAuthenticated() واستخدِم addOnCompleteListener لاسترداد النتائج. على سبيل المثال:
GamesSignInClient gamesSignInClient = PlayGames.getGamesSignInClient(getActivity());
gamesSignInClient.isAuthenticated().addOnCompleteListener(isAuthenticatedTask -> {
boolean isAuthenticated =
(isAuthenticatedTask.isSuccessful() &&
isAuthenticatedTask.getResult().isAuthenticated());
if (isAuthenticated) {
// Continue with Play Games Services
} else {
// Show a sign-in button to ask players to authenticate. Clicking it should
// call GamesSignInClient.signIn().
}
});
يمكنك إيقاف طلبات إنشاء الملف الشخصي تلقائيًا من خلال ملف البيان. يسمح ذلك للمستخدمين الذين ليس لديهم ملف شخصي على "خدمات ألعاب Play" بمواصلة تحميل اللعبة بدون أن يُطلب منهم إنشاء ملف شخصي على "خدمات ألعاب Play".
لمزيد من المعلومات، يُرجى الاطّلاع على مقالة خيارات إنشاء الملف الشخصي.
لاستخدام هذه الميزة، تأكَّد من استيفاء الشروط التالية:
لا يتوفّر أي ملف شخصي على "خدمات ألعاب Play" في أيّ من حسابات Google التي تمّ تسجيل الدخول إليها على الجهاز.
تمّ دمج لعبتك مع حزمة تطوير البرامج (SDK) الخاصة بـ "خدمات ألعاب Play" com.google.android.gms:play-services-games-v2:21.0.0 أو الإصدارات الأحدث.
لمنع طلبات إنشاء الملف الشخصي تلقائيًا، أكمل الخطوات التالية:
في ملف AndroidManifest.xml، أضِف العلامة
com.google.android.gms.games.SUPPRESS_GAME_PROFILE_CREATION في العنصر
<meta-data> والسمات إلى العنصر <application>:
يُعلم ضبط هذه العلامة على "صحيح" "خدمات ألعاب Play" بأنّ لعبتك ستتولّى عملية إنشاء الملف الشخصي. وبالتالي، لن تعرض "خدمات ألعاب Play" تلقائيًا واجهة مستخدم إنشاء الملف الشخصي للمستخدمين على الجهاز الذين ليس لديهم ملف شخصي حالي على "خدمات ألعاب Play".
عند استدعاء أيّ واجهة برمجة تطبيقات من "خدمات ألعاب Play"، يشير رمز الحالة
GamesClientStatusCodes.SIGN_IN_REQUIRED
إلى أنّ الطلب قد تعذّر لأنّه لم يتمّ تسجيل دخول المستخدم تلقائيًا بسبب عدم توفّر ملف شخصي على "خدمات ألعاب Play".
يسمح ذلك للمستخدمين الذين ليس لديهم ملف شخصي على "خدمات ألعاب Play" بمتابعة طرق المصادقة التي نفّذتها بدون أن يُطلب منهم على الفور إنشاء ملف شخصي على "خدمات ألعاب Play".
يمكن بدء إنشاء الملف الشخصي من خلال استدعاء
GamesSignInService.signin().
importcom.google.android.gms.games.PlayGames;...// Get the achievements client using Play Games services.AchievementsClientachievementsClient=PlayGames.getAchievementsClient(getActivity());achievementsClient.getAchievementsIntent().addOnFailureListener(newOnFailureListener(){@OverridepublicvoidonFailure(@NonNullExceptionexception){intstatusCode=((ApiException)exception).getStatusCode();if(statusCode==GamesClientStatusCodes.SIGN_IN_REQUIRED){// SIGN_IN_REQUIRED: The user needs to sign in with Play Games Services.// Call GamesSignInService.signin() to prompt for// authentication at a suitable time which will trigger the// profile creation UI.// (e.g., after a tutorial). Use GamesSignInService.isAuthenticated() to check auth status.}}});
بعد إضافة علامة الإيقاف، استخدِم نافذة logcat للتأكّد من الإضافة. يحتوي الناتج logcat على رسالة مشابهة لما يلي: "Game opted out of automatic profile creation prompt (using manifest)".
يخضع كل من المحتوى وعيّنات التعليمات البرمجية في هذه الصفحة للتراخيص الموضحّة في ترخيص استخدام المحتوى. إنّ Java وOpenJDK هما علامتان تجاريتان مسجَّلتان لشركة Oracle و/أو الشركات التابعة لها.
تاريخ التعديل الأخير: 2026-05-07 (حسب التوقيت العالمي المتفَّق عليه)
[[["يسهُل فهم المحتوى.","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"]],["تاريخ التعديل الأخير: 2026-05-07 (حسب التوقيت العالمي المتفَّق عليه)"],[],[]]