يوضّح هذا الدليل كيفية نقل رمز العميل من الإصدار 1 من "خدمات ألعاب Play" إلى الإصدار 2.
تحتوي حزمة SDK الجديدة على أربعة تغييرات رئيسية لزيادة نسبة نجاح عمليات تسجيل الدخول، ويجب أن تكون على عِلم بها:
- يتم تفعيل تسجيل الدخول تلقائيًا عند تشغيل لعبتك. بدلاً من
استخدام
GoogleSignInClient
في حزمة تطوير البرامج (SDK) منGoogleSignIn
لإجراء تسجيل الدخول، يمكنك استخدامGamesSignInClient.isAuthenticated()
لعرض نتيجة محاولة تسجيل الدخول التلقائي. - لن تحتاج فئات Client Factory إلى تمرير
GoogleSignInAccount
object. لا يمكن طلب نطاقات OAuth إضافية (سيتم طلبGAMES_LITE
تلقائيًا). - يتم الآن توفير الرموز المميّزة للمصادقة باستخدام
GamesSignInClient.requestServerSideAccess()
ضمن حزمة تطوير البرامج (SDK) لـ "خدمات ألعاب Play" . - تمّت إزالة طريقة تسجيل الخروج، ولن نطلب بعد الآن رمزًا برمجيًا في اللعبة لتسجيل الدخول إلى "خدمات ألعاب Play" أو تسجيل الخروج منها.
بالإضافة إلى ذلك، ستتم عمليات تسجيل دخول إضافية في لعبتك بسبب تسجيل الدخول التلقائي عند تشغيل اللعبة. نتيجةً لذلك، عليك مراجعة إدارة الحصة للتأكّد من أنّ لعبتك لا تتجاوز الحصة المخصّصة لطلبات تسجيل الدخول.
استهداف مستودع Maven الجديد لحزمة SDK
إذا كنت تستخدم نظام إنشاء 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 API. سيتم تسجيل الدخول دائمًا عند تشغيل اللعبة. بدلاً من ذلك، يمكنك الاستماع إلى نتيجة محاولة تسجيل الدخول التلقائي باستخدام
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
إذا لم تعُد قيد الاستخدام.
تعديل أسماء فئات العملاء
عند إنشاء عملاء (مثل 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