Halaman ini menjelaskan cara menerapkan Recall API ke dalam game Anda. Pertama-tama membahas menyiapkan server game dan klien untuk mendukung API, lalu melakukan cara menyimpan dan mengambil token.
Penyiapan server game
Siapkan server game untuk melakukan panggilan Recall API ke server Google.
Menyiapkan project Layanan game Play
(Jika belum selesai) Ikuti petunjuk di Menyiapkan Layanan game Google Play.
Menyiapkan akun layanan untuk game
Ikuti petunjuk tentang cara membuat akun layanan. Pada akhirnya, Anda akan memiliki file JSON dengan kredensial akun layanan.
Mendownload library Java sisi server untuk Layanan game Play
Download google-api-services-games
terbaru
koleksi
dan unggah ke server Anda.
Menyiapkan kredensial untuk panggilan Recall API
Lihat Menyiapkan pembuatan API yang didelegasikan panggilan telepon untuk konteks selengkapnya.
import com.google.api.client.googleapis.auth.oauth2.GoogleCredential;
import com.google.api.services.games.Games;
import com.google.api.services.games.GamesScopes;
// ...
GoogleCredential credential =
GoogleCredential.fromStream(new FileInputStream("<credentials>.json"))
.createScoped(Collections.singleton(GamesScopes.ANDROIDPUBLISHER));
Games gamesApi =
new Games.Builder(httpTransport, JSON_FACTORY, credential).build();
Penyiapan klien game
Siapkan klien game Anda untuk mengambil ID sesi recall yang digunakan oleh server untuk berkomunikasi dengan server Google.
Java SDK
Menyiapkan Java SDK di dalam klien Anda,
dan pastikan untuk menyertakan
com.google.android.gms:play-services-games-v2:19.0.0
dan
com.google.android.gms:play-services-tasks:18.0.2
atau yang lebih tinggi di Gradle
.
Untuk berkomunikasi dengan server Google menggunakan informasi yang benar, mintalah Ingat ID sesi dari SDK klien yang Anda kirim ke server game:
Kotlin
PlayGames.getRecallClient(getActivity()) .requestRecallAccess() .addOnSuccessListener { recallAccess -> val recallSessionId: String = recallAccess.getSessionId() } // Send the recallSessionId to your game server
Java
PlayGames.getRecallClient(getActivity()) .requestRecallAccess() .addOnSuccessListener( recallAccess -> { String recallSessionId = recallAccess.getSessionId(); // Send the recallSessionId to your game server });
Menggunakan Recall API di dalam server game
Setelah mengonfigurasi server dan klien, Anda dapat mengirim recallSessionID
dari klien game ke server game, lalu ikuti panduan di bawah ini untuk mulai
menggunakan Java API guna menyimpan, mengambil, atau menghapus sisi server token Recall.
Menyimpan token
Simpan persona pengguna dan token game menggunakan objek LinkPersonaRequest
.
Gunakan GoogleCredential
untuk menghubungi Google
Google Cloud API.
Untuk mengikuti kardinalitas 1:1
batasan data, Anda juga dapat
hanya menautkan satu persona ke satu profil PGS pada satu waktu, dan sebaliknya. Setel
jika profil PGS ini sudah ditautkan dengan profil lain
persona.
Secara opsional, Anda dapat menyetel TTL pada token, yang mendeklarasikan berapa lama
token valid menggunakan
Durations
. Anda dapat memilih untuk menyetelnya menggunakan SetTtl()
(seperti yang ditunjukkan di bawah), yang menyetel
tanggal kedaluwarsa dari jumlah waktu yang ditentukan dalam metode, atau
setExpireTime()
, yang memungkinkan Anda menetapkan waktu persisnya saat token habis masa berlakunya.
Anda harus mengenkripsi persona dan token game, dan keduanya tidak boleh berisi informasi identitas pribadi. Panjang string persona dan token maksimal adalah 256 karakter, dan penyimpanan token atau persona per pemain per game dibatasi sebanyak 20.
Hanya satu token yang dapat disimpan per persona per pemain pada waktu tertentu. Jika Anda mencoba untuk menyimpan token lain dengan persona yang sama, sistem akan menimpa token sebelumnya yang benar.
import com.google.api.services.games.Games.Recall.LinkPersona;
import com.google.protobuf.util.Durations;
// ...
Games gamesApi =
new Games.Builder(httpTransport, JSON_FACTORY, credential).build();
String recallSessionId = ... // recallSessionID from game client
String persona = ... // encrypted opaque string, stable for in-game account
String token = ... // encrypted opaque string encoding the progress line
LinkPersonaRequest linkPersonaRequest =
LinkPersonaRequest.newBuilder()
.setSessionId(recallSessionId)
.setPersona(persona)
.setToken(token)
.setCardinalityConstraint(ONE_PERSONA_TO_ONE_PLAYER)
.setConflictingLinksResolutionPolicy(CREATE_NEW_LINK)
.setTtl(Durations.fromDays(7)) // Optionally set TTL for token
.build();
LinkPersonaResponse linkPersonaResponse =
gamesApi.recall().linkPersona(linkPersonaRequest).execute();
if (linkPersonaResponse.getState() == LINK_CREATED) {
// success
}
Mengambil token
Untuk mengambil token recall, dapatkan recallSessionId
dari klien, dan
teruskan ke retrieveTokens
API:
import com.google.api.services.games.Games.Recall.RetrieveTokens;
// ...
String recallSessionId = ... // recallSessionID from game client
RetrievePlayerTokensResponse retrievePlayerTokensResponse =
gamesApi.recall().retrieveTokens(recallSessionId).execute();
for (RecallToken recallToken : retrievePlayerTokensResponse.getTokens()) {
String token recallToken.getToken();
// Same string as was written in LinkPersona call
// decrypt and recover in-game account
}
Menghapus token recall
Jika diperlukan, Anda juga dapat menghapus token recall dengan panggilan berikut:
import com.google.api.services.games.Games.Recall.UnlinkPersona;
// ...
String recallSessionId = ...
String persona = ...
String token = ...
Games gamesApi =
new Games.Builder(httpTransport, JSON_FACTORY, credential).build();
UnlinkPersonaRequest unlinkPersonaRequest =
UnlinkPersonaRequest.newBuilder()
.setSessionId(recallSessionId)
.setPersona(persona)
// .setToken(token) - alternatively set token, but not both
.build();
UnlinkPersonaResponse unlinkPersonaResponse =
gamesApi.recall().unlinkPersona(unlinkPersonaRequest).execute();
// Confirm that the unlinking process completed successfully.
boolean unlinked = unlinkPersonaResponse.isUnlinked();
Aktifkan mode tanpa profil
Anda dapat mengaktifkan fungsi Recall API terbatas untuk pengguna yang tidak memiliki profil PGS dengan mengikuti langkah-langkah berikut:
- Mengaktifkan penarikan kembali tanpa profil untuk project game PGS Anda di Play Developer Konsol Play.
- Tinjau persyaratan tambahan yang dijelaskan nanti di bagian ini.
- Tambahkan tag metadata berikut ke aplikasi Anda manifes:
<meta-data
android:name="com.google.android.gms.games.PROFILELESS_RECALL_ENABLED"
android:value="true" />
Persyaratan tambahan
Selain tunduk kepada Persyaratan Layanan game Play Layanan ini, Anda setuju bahwa jika Anda menggunakan Recall API untuk pengguna tanpa profil PGS, yang memungkinkan aktivitas berbagi data pengguna akhir dengan Google tanpa mereka memiliki profil Layanan game Play, sebelum membagikan data tersebut kepada Google, Anda harus memberikan pemberitahuan yang sesuai yang menjelaskan 1) pembagian data oleh Anda kepada Google untuk memungkinkan Play Game fitur penautan akun, 2) ketersediaan setelan untuk dikelola berbagi seperti yang dilakukan melalui setelan Play Game, dan 3) pemrosesan data tersebut menurut Kebijakan Privasi Google Ads, dan mendapatkan pengguna akhir yang sesuai izin untuk pembagian tersebut yang memenuhi semua persyaratan hukum yang berlaku.