Panduan ini menjelaskan cara memigrasikan kode klien dari Layanan game Play v1 ke v2.
SDK yang baru berisi empat perubahan besar untuk meningkatkan keberhasilan login yang harus Anda ketahui:
- Login dipicu otomatis saat game diluncurkan. Daripada fokus pada
menggunakan
GoogleSignInClient
GoogleSignIn SDK untuk login, Anda dapat menggunakanGamesSignInClient.isAuthenticated()
untuk mengambil hasil pengujian otomatis upaya login. - Class Client Factory tidak lagi memerlukan objek
GoogleSignInAccount
untuk meneruskan. Cakupan OAuth tambahan tidak dapat diminta (GAMES_LITE
akan secara otomatis). - Token otentikasi sekarang
disediakan menggunakan
GamesSignInClient.requestServerSideAccess()
dalam Layanan game Play SDK. - Metode logout dihapus, dan kita tidak lagi memerlukan akses ke dalam game untuk login atau logout dari Layanan game Play.
Selain itu, game Anda akan mengalami login tambahan karena login saat game diluncurkan. Akibatnya, Anda harus meninjau pengelolaan kuota untuk memastikan game Anda tidak melebihi kuota permintaan login.
Menargetkan repositori Maven SDK yang baru
Jika Anda menggunakan sistem build Gradle, ini dapat dilakukan dengan mengubah
dependensi ke artefak com.google.android.gms:play-services-games-v2:+
di
file build.gradle
modul Anda. Contoh:
dependencies {
implementation "com.google.android.gms:play-services-games-v2:+"
}
Menginisialisasi SDK
Lakukan inisialisasi SDK Play Game di callback onCreate(..)
dari class
Application
Anda. Contoh:
import com.google.android.gms.games.PlayGamesSdk;
...
@Override
public void onCreate(){
super.onCreate();
PlayGamesSdk.initialize(this);
}
Menghapus panggilan login dan logout
Jika Anda tidak menetapkan cakupan tambahan, migrasi kasus penggunaan seharusnya mudah dilakukan.
Hapus panggilan login menggunakan GoogleSignIn API. Login akan selalu dilakukan saat game diluncurkan. Sebagai gantinya, proses hasil upaya login otomatis menggunakan
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(). } });
Hapus semua panggilan untuk logout, karena pengelolaan akun kini dimuat dalam setelan aplikasi OS dan Play Game.
Jika pemain berhasil login, hapus tombol login Play Game dari game Anda. Jika pengguna memilih untuk tidak login saat game diluncurkan, Anda dapat memilih secara opsional untuk terus menampilkan tombol dengan ikon Play Game, dan memicu proses login dengan
GamesSignInClient.signIn()
.Setelah memverifikasi bahwa pengguna sudah login, Anda dapat mengambil ID Pemain untuk mengidentifikasi pengguna.
PlayGames.getPlayersClient(activity).getCurrentPlayer().addOnCompleteListener(mTask -> { // Get PlayerID with mTask.getResult().getPlayerId() } );
Hapus dependensi Anda di GoogleSignIn API, jika tidak digunakan lagi.
Mengupdate nama class klien
Saat membuat klien (misalnya LeaderboardsClient
atau AchievementsClient
), gunakan PlayGames.getFooClient()
, bukan Games.getFooClient()
.
Meminta akses sisi server
Saat meminta akses sisi server, gunakan GamesSignInClient.requestServerSideAccess()
, bukan 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.
}
});
Menghapus cakupan tambahan
Dengan Layanan game Play v2, Anda tidak dapat meminta cakupan tambahan apa pun. Jika Anda masih perlu meminta cakupan tambahan, sebaiknya gunakan SDK Login dengan Google bersama dengan Layanan game Play.
Migrasi dari GoogleApiClient
Untuk integrasi lama, game Anda mungkin bergantung pada
variasi GoogleApiClient API dari SDK Layanan game Play. Ini adalah
tidak digunakan lagi pada akhir 2017
dan diganti dengan "{i>connectionless<i}" dengan klien besar. Untuk bermigrasi, Anda dapat mengganti
class GoogleApiClient
dengan yang setara “tanpa koneksi”. Anda juga akan
harus mengikuti panduan di halaman ini untuk memigrasikan game Anda dari v1 ke v2.
Berikut adalah pemetaan class umum:
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