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

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

توفّر حزمة تطوير البرامج (SDK) الخاصة بالإصدار 2 من "خدمات ألعاب 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()
  }
);