يوضِّح هذا الدليل كيفية نقل رمز العميل من "خدمات ألعاب Play". v1 إلى v2.
تشتمل حزمة SDK الجديدة على أربعة تغييرات رئيسية لزيادة نجاح عملية تسجيل الدخول على دراية بما يلي:
- يتم تفعيل تسجيل الدخول تلقائيًا عند إطلاق لعبتك. بدلاً من
باستخدام
GoogleSignInClient
في حزمة تطوير البرامج (SDK) لـ GoogleSignIn لتسجيل الدخول، يمكنك استخدامGamesSignInClient.isAuthenticated()
لجلب نتيجة قاعدة البيانات محاولة تسجيل الدخول. - لن تحتاج فئات Client Found إلى عنصر
GoogleSignInAccount
بعد الآن. وفاته. لا يمكن طلب نطاقات OAuth إضافية (سيتم تنفيذGAMES_LITE
. طلب البيانات تلقائيًا). - يتم توفير الرموز المميزة للمصادقة الآن باستخدام
GamesSignInClient.requestServerSideAccess()
ضمن "خدمات ألعاب Play" SDK. - تتم إزالة طريقة تسجيل الخروج، ولن نطلب استخدام الأجهزة داخل اللعبة بعد الآن. لتسجيل الدخول إلى "خدمات ألعاب Play" أو الخروج منها.
بالإضافة إلى ذلك، ستتم إضافة عمليات تسجيل دخول إضافية إلى لعبتك بسبب التشغيل التلقائي. لتسجيل الدخول عند إطلاق اللعبة. نتيجة لذلك، يجب عليك مراجعة إدارة الحصص لضمان عدم تجاوز لعبتك حصة طلب تسجيل الدخول.
استهداف مستودع SDK Maven الجديد
إذا كنت تستخدم نظام إصدار Gradle، يمكنك إجراء ذلك عن طريق تغيير
تبعية عناصر com.google.android.gms:play-services-games-v2:+
في
الملف build.gradle
للوحدة. مثلاً:
dependencies {
implementation "com.google.android.gms:play-services-games-v2:+"
}
إعداد حزمة تطوير البرامج (SDK)
يجب إعداد حزمة تطوير البرامج (SDK) الخاصة بـ "ألعاب Play" في معاودة الاتصال "onCreate(..)
" في
صف واحد (Application
). مثلاً:
import com.google.android.gms.games.PlayGamesSdk;
...
@Override
public void onCreate(){
super.onCreate();
PlayGamesSdk.initialize(this);
}
إزالة مكالمات تسجيل الدخول وتسجيل الخروج
في حال عدم تحديد أي نطاقات إضافية، يجب نقل حالة الاستخدام وفقًا لما يلي: أمر مباشر وسهل.
أزِل طلبات تسجيل الدخول باستخدام واجهة برمجة التطبيقات GoogleSignIn. سيؤدي تسجيل الدخول إلى دائمًا عند إطلاق اللعبة. بدلاً من ذلك، استمع إلى نتيجة محاولة تسجيل دخول تلقائي باستخدام
GamesSignInClient.isAuthenticated()
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" ونظام التشغيل.
إذا تم تسجيل دخول اللاعب بنجاح، يُرجى إزالة زر تسجيل الدخول إلى "ألعاب Play". من لعبتك. إذا اختار المستخدم عدم تسجيل الدخول عند تشغيل اللعبة، يمكنك اختيار الاستمرار في عرض زر يحمل رمز "ألعاب Play" بدء عملية تسجيل الدخول باستخدام
GamesSignInClient.signIn()
بعد التأكّد من تسجيل المستخدم للدخول، يمكنك استرداد رقم تعريف المشغّل لتحديد هوية المستخدم.
PlayGames.getPlayersClient(activity).getCurrentPlayer().addOnCompleteListener(mTask -> { // Get PlayerID with mTask.getResult().getPlayerId() } );
إذا لم تعُد قيد الاستخدام، يمكنك إزالة تبعيتك من واجهة برمجة التطبيقات GoogleSignIn API.
تعديل أسماء فئات العميل
عند إنشاء برامج (مثل LeaderboardsClient
أو AchievementsClient
) استخدِم PlayGames.getFooClient()
بدلاً من Games.getFooClient()
.
طلب الوصول من جهة الخادم
عند طلب الوصول من جهة الخادم، استخدِم GamesSignInClient.requestServerSideAccess()
بدلاً من GoogleSignInAccount.getServerAuthCode()
.
GamesSignInClient gamesSignInClient = PlayGames.getGamesSignInClient(this);
gamesSignInClient
.requestServerSideAccess(OAUTH_2_WEB_CLIENT_ID,
/*forceRefreshToken=*/ false)
.addOnCompleteListener( task -> {
if (task.isSuccessful()) {
String serverAuthToken = task.getResult();
// Send authentication code to the backend game server to be
// exchanged for an access token and used to verify the
// player with the Play Games Services REST APIs.
} else {
// Failed to retrieve authentication code.
}
});
إزالة النطاقات الإضافية
ولا يمكنك طلب أي نطاقات إضافية مع الإصدار 2 من "خدمات ألعاب Play". إذا كنت لا تزال بحاجة إلى طلب نطاقات إضافية، ننصحك باستخدام حزمة تطوير البرامج (SDK) الخاصة بتسجيل الدخول بحساب Google بجانب "خدمات ألعاب Play".
نقل البيانات من GoogleApiClient
بالنسبة إلى عمليات الدمج الحالية القديمة، قد تعتمد لعبتك على
نسخة GoogleApiClient API من حزمة تطوير البرامج (SDK) الخاصة "بخدمات ألعاب Play" كان هذا
متوقّفة نهائيًا في أواخر عام 2017
واستبداله بـ "بدون اتصال" الدائمين. لنقل البيانات، يمكنك استبدال
فئة واحدة (GoogleApiClient
) مع مكافئ "بدون ربط". ستحتاج بعد ذلك أيضًا
عليك اتّباع الإرشادات الواردة في هذه الصفحة لنقل لعبتك من الإصدار 1 إلى الإصدار 2.
فيما يلي تعيين للفئات الشائعة:
com.google.android.gms.games.achievement.Achievements ->
com.google.android.gms.games.AchievementsClient
com.google.android.gms.games.leaderboard.Leaderboard ->
com.google.android.gms.games.LeaderboardsClient
com.google.android.gms.games.snapshot.Snapshots ->
com.google.android.gms.games.SnapshotsClient
com.google.android.gms.games.stats.PlayerStats ->
com.google.android.gms.games.PlayerStatsClient
com.google.android.gms.games.Players ->
com.google.android.gms.games.PlayersClient
com.google.android.gms.games.GamesStatusCodes ->
com.google.android.gms.games.GamesClientStatusCodes