تسجيل الدخول إلى ألعاب Android

للوصول إلى وظائف "خدمات ألعاب Google Play"، يجب أن توفّر لعبتك حساب اللاعب الذي سجّل الدخول. يشرح هذا المستند كيفية استخدام تجربة تسجيل دخول سلسة في لعبتك.

يوفّر الإصدار الثاني من حزمة تطوير البرامج (SDK) "خدمات ألعاب Play" عددًا من التحسينات التي تساهم في زيادة عدد المستخدمين الذين سجّلوا الدخول إلى لعبتك وتسهّل عملية التطوير:

  • التحسينات للمستخدمين:
    • بعد اختيار حساب تلقائي، يتم تسجيل دخول المستخدمين بدون الحاجة إلى التفاعل مع طلب.
    • لم يعد المستخدمون بحاجة إلى تنزيل تطبيق "ألعاب Play" لتسجيل الدخول من خلال "خدمات ألعاب Play" أو إنشاء حساب جديد.
    • أصبح بإمكان المستخدمين الآن إدارة حساباتهم على "خدمات ألعاب Play" لعدة ألعاب من صفحة واحدة.
  • تحسينات للمطوّرين:
    • لم يعُد رمز العميل بحاجة إلى معالجة عملية تسجيل الدخول أو تسجيل الخروج، لأنّه يتم تشغيل تسجيل الدخول تلقائيًا عند بدء اللعبة، كما تتم معالجة إدارة الحساب في إعدادات نظام التشغيل.

دمج عميل جديد مع الإصدار 2 من ميزة "تسجيل الدخول" في "خدمات ألعاب Play"

يعرض هذا القسم كيفية إجراء عملية دمج لبرنامج جديد مع الإصدار 2 من ميزة "تسجيل الدخول في خدمات ألعاب Play".

إضافة الأداة التابعة لحزمة تطوير البرامج (SDK) الخاصة "بخدمات ألعاب Play"

أضِف حزمة تطوير البرامج (SDK) الخاصة بـ "خدمات ألعاب Play" إلى ملف build.gradle الخاص بتطبيقك على مستوى الجذر. إذا كنت تستخدم Gradle، يمكنك إضافة السمة أو تعديلها كما يلي:

dependencies {
 implementation "com.google.android.gms:play-services-games-v2:+"
}

تحديد رقم تعريف مشروع "خدمات ألعاب Play"

لإضافة رقم تعريف مشروع حزمة تطوير البرامج (SDK) الخاصة "بخدمات ألعاب Play" إلى تطبيقك، أكمِل الخطوات التالية:

  1. في ملف AndroidManifest.xml الخاص بتطبيقك، أضِف عنصر <meta-data> والسمات التالية إلى عنصر <application>:

    <manifest>
      <application>
        <meta-data android:name="com.google.android.gms.games.APP_ID"
                   android:value="@string/game_services_project_id"/>
      </application>
    </manifest>
    

    حدِّد مرجع مورد السلسلة @string/game_services_project_id باستخدام رقم تعريف مشروع "خدمات الألعاب" لألعابك على أنّه القيمة. يمكن العثور على رقم تعريف مشروع خدمات الألعاب أسفل اسم اللعبة في صفحة الإعداد على Google Play Console.

  2. في ملف 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".

import com.google.android.gms.games.PlayGamesSdk;

...

@Override
public void onCreate(){
  super.onCreate();
  PlayGamesSdk.initialize(this);
}

الحصول على نتيجة تسجيل الدخول

عند إطلاق اللعبة، ستحاول دائمًا تسجيل دخول المستخدم. للمصادقة على المستخدم، يجب التحقق من تسجيل المستخدم الدخول بنجاح، ثم الحصول على رقم تعريف اللاعب.

للتحقق من محاولة تسجيل الدخول، اتصل بـ 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 {
    // Disable your integration with Play Games Services or show a
    // login button to ask  players to sign-in. Clicking it should
    // call GamesSignInClient.signIn().
  }
});

إذا اختار المستخدم عدم تسجيل الدخول عند تشغيل اللعبة، يمكنك اختيار مواصلة عرض زر يحمل رمز "ألعاب Play"، ومحاولة تسجيل دخول المستخدم مرة أخرى من خلال استدعاء GamesSignInClient.signIn() إذا ضغط المستخدم على الزر.

بعد التحقق من أنّ المستخدم سجّل الدخول، يمكنك استرداد رقم تعريف المشغّل لتحديد هوية المستخدم. مثال:

PlayGames.getPlayersClient(activity).getCurrentPlayer().addOnCompleteListener(mTask -> {
    // Get PlayerID with mTask.getResult().getPlayerId()
  }
);