Bu sayfada, Recall API'nin gösterir. İlk olarak oyun sunucunuzu ve istemcinizi ve jetonların nasıl depolanacağını ve alınacağını anlatır.
Oyun sunucusu kurulumu
Oyun sunucunuzu, Google sunucularına Recall API çağrıları yapacak şekilde ayarlayın.
1. Play Games Hizmetleri projenizi oluşturun
(Henüz yapmadıysanız) Google Play'i Kurma Oyun Hizmetleri.
2. Oyun için hizmet hesabı oluşturun
Hizmet oluşturma talimatlarını uygulayın: hesap. Sonunda, hizmet hesabı kimlik bilgilerini içeren bir JSON dosyanız olmalıdır.
3. PlayGamesServices için sunucu tarafı Java kitaplığını indir
En son google-api-services-games'i indirin kitaplık ve bunu sunucunuza yükleyin.
4. Recall API çağrıları için kimlik bilgilerini hazırlama
Yetkili API oluşturmaya hazırlanma arayın inceleyebilirsiniz.
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();
Oyun istemcisi kurulumu
Oyun istemcinizi, sunucunuz tarafından kullanılan geri çağırma oturum kimliklerini alacak şekilde kurun Google sunucularıyla iletişim kurabilirsiniz.
Java SDK'sı
İstemcinizde Java SDK'yı kurun ve
com.google.android.gms:play-services-games-v2:19.0.0
eklediğinizden emin olun
ve üzerinizde com.google.android.gms:play-services-tasks:18.0.2
veya üzeri
gradle dosyası olarak kaydeder.
Google'ın sunucularıyla doğru bilgilerle iletişim kurmak için şunları yapmanız gerekir: istemci SDK'sından bir Geri Çağırma oturumu kimliği isteyin. Bu kimliği, oyununuzun sunucu.
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 });
Unity SDK'sı
Henüz yapmadıysanız gerekir.
Google'ın sunucularıyla doğru bilgilerle iletişim kurmak için şunları yapmanız gerekir: istemci SDK'sından bir Recall oturum kimliği isteyin ve bunu oyununuzun sunucu.
PlayGamesPlatform.Instance.RequestRecallAccess(
recallAccess => {
string recallSessionId = recallAccess.sessionId;
// Send the recallSessionId to your game server
});
Oyun sunucunuzdaki Recall API'sini kullanın
Sunucunuzu ve istemcinizi yapılandırdıktan sonra, recallSessionID
bağlayıp aşağıdaki talimatları uygulayarak
sunucu tarafında geri çağırma jetonlarını depolamak, almak veya silmek için Java API'yi kullanma.
Mağaza jetonları
Kullanıcıların karakter ve oyun jetonu, LinkPersonaRequest
kullanılarak depolanabilir
nesnesini tanımlayın. Google API'lerini çağırmak için GoogleCredential
kullanmanız gerekir (bkz. Arama
Google
API'ler
). 1:1 kardinaliteye göre
kısıt, yalnızca bir karakter bağlayabilirsiniz.
Tek seferde bir PGS profiline bağlanabilir (veya tam tersi).Çözünürlüğü,
politikasını dikkate almanızı öneririz.
İsteğe bağlı olarak, jeton üzerinde ne kadar süreyle geçerli olacak bir TTL ayarlamayı seçebilirsiniz.
jetonun geçerli olup olmadığını kontrol etmek için
Süreler
nesnesini tanımlayın. Bunu, aşağıda gösterildiği gibi SetTtl()
kullanarak ayarlayabilirsiniz:
yöntemde belirtilen zaman aralığındaki son kullanma tarihi veya
setExpireTime()
, jetonların süresinin tam olarak ne zaman dolacağını belirlemenizi sağlar.
Karakter ve oyun jetonunu şifrelemeniz gerekir. Bunlar kişisel bilgi içeremez kimliği tanımlayabilecek bilgilerdir. Karakter ve jeton dizeleri en fazla 256 karakter olabilir uzunluğunda olabilir ve kullanıcı başına en fazla 20 jeton veya karakter depolanabilir. oyuncu sayısı.
Belirli bir zamanda, her oyuncu için karakter başına yalnızca bir jeton depolanabilir. Şunları deniyoruz: aynı karaktere sahip başka bir jetonun depolanması, orijinal jetonun üzerine yazılmasını sağlar.
import com.google.api.services.games.Games.Recall.LinkPersona;
import com.google.api.services.games.model.LinkPersonaRequest;
import com.google.api.services.games.model.LinkPersonaResponse;
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
}
Jetonları al
Oyunlarınızın özelliklerine bağlı olarak jeton almak için üç seçeneğiniz vardır gerekiyor. Şunları yapabilirsiniz: şunları isteyin:
- Oyun kapsamlı geri çağırma jetonları da dahil olmak üzere mevcut oyunla ilişkilendirilen jetonlar.
- Geliştirici hesabına ait tüm oyunlarda depolanan son jeton.
- Geliştirici hesabına ait oyunların listesinde, tüm Recall jetonları her oyunla ilişkilendirilebilir.
Oyun kapsamlı geri çağırma jetonları
Mevcut oyundan geri çağırma jetonlarını almak için
recallSessionId
işlemini istemciden alıp retrieveTokens
API'sine iletir:
import com.google.api.services.games.Games;
import com.google.api.services.games.model.RetrievePlayerTokensResponse;
import com.google.api.services.games.model.RecallToken;
// ...
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
}
Geliştirici hesabına ait tüm oyunlardaki en son geri çağırma jetonu
Geliştiricinin sahip olduğu tüm oyunlarda depolanan en son jetonu almak için
Google Play Console'da hesabınız varsa recallSessionId
lastTokenFromAllDeveloperGames
API'sine iletirsiniz.
aşağıdaki kod snippet'inde gösteriliyor. Yanıt kapsamında şunları denetleyebilirsiniz:
ilişkilendirilmiş Uygulama Kimliği
bu jetonla işlem yapacaksınız.
import com.google.api.services.games.Games;
import com.google.api.services.games.model.RetrieveDeveloperGamesLastPlayerTokenResponse;
import com.google.api.services.games.model.GamePlayerToken;
import com.google.api.services.games.model.RecallToken;
// ...
String recallSessionId = ... // recallSessionID from game client
RetrieveDeveloperGamesLastPlayerTokenResponse response =
gamesApi.recall().lastTokenFromAllDeveloperGames(recallSessionId)
.execute();
if (response.hasGamePlayerToken()) {
GamePlayerToken gamePlayerToken = response.getGamePlayerToken();
// The ID of the application that the token is associated with.
String applicationId = gamePlayerToken.getApplicationId();
// Same string as was written in LinkPersona call.
RecallToken recallToken = gamePlayerToken.getRecallToken();
// Decrypt and recover in-game account.
}
Geliştirici hesabına ait belirli bir oyun listesindeki tüm Recall jetonları
Sahibi olduğu oyunların bir listesiyle ilişkilendirilmiş tüm jetonları almak için
Google Play Console'da geliştirici hesabınıza recallSessionId
gamesPlayerTokens
API'sine iletir. Sağlayın:
Uygulama Kimlikleri listesine gidin.
import com.google.api.services.games.Games;
import com.google.api.services.games.model.RetrieveGamesPlayerTokensResponse;
import com.google.api.services.games.model.GamePlayerToken;
import com.google.api.services.games.model.RecallToken;
// ...
String recallSessionId = ... // recallSessionID from game client
// Application IDs for which you would like to retrieve the recall tokens.
List<String> applicationIds = ...
RetrieveGamesPlayerTokensResponse response =
gamesApiClient
.recall()
.gamesPlayerTokens(recallSessionId)
.setApplicationIds(applicationIds)
.execute();
for (GamePlayerToken gamePlayerToken : response.getGamePlayerTokens()) {
// The ID of the application that the token is associated with.
String applicationId = gamePlayerToken.getApplicationId();
// Same string as was written in LinkPersona call.
RecallToken recallToken = gamePlayerToken.getRecallToken();
// Decrypt and recover in-game account.
}
Geri çağırma jetonunu sil
Gerekirse geri çağırma jetonunu aşağıdaki çağrıyla da silebilirsiniz:
import com.google.api.services.games.Games;
import com.google.api.services.games.model.UnlinkPersonaRequest;
import com.google.api.services.games.model.UnlinkPersonaResponse;
// ...
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();
boolean unlinked = unlinkPersonaResponse.isUnlinked();
Profilsiz modu etkinleştir
Sınırlı Recall API işlevini etkinleştirebilirsiniz aşağıdaki adımları uygulayarak PGS profili olmayan kullanıcılar için:
- Play Console'da PGS oyun projeniz için profilsiz geri çağırmayı etkinleştirin Konsol. .
- Bu bölümün ilerleyen kısımlarında açıklanan ek şartları inceleyin.
- Aşağıdaki meta veri etiketini uygulamanıza ekleyin manifesto içinde görünen)
<meta-data
android:name="com.google.android.gms.games.PROFILELESS_RECALL_ENABLED"
android:value="true" />
Ek şartlar
Bunun yanı sıra, Play Games Hizmetleri Hizmet'in şartlarını kabul edersiniz ve PGS profili olmayan kullanıcılar için Recall API'sini kullanarak, Play Games Hizmetleri profiline sahip olmadan son kullanıcı verilerini Google ile paylaşma, bu tür verileri Google ile paylaşmadan önce son kullanıcıya 1) Google ile veri paylaşımınızı açıklayan uygun bildirim Play Games hesap bağlama özelliği, 2) yönetilecek ayarların kullanılabilirliği aracılığıyla yapılan paylaşımlar ve 3) geri bildirimlerin işlenmesi ve Google Gizlilik Politikası Politikaya tabi ve uygun son kullanıcıyı ve geçerli tüm yasal şartları karşılayan bu tür bir paylaşım için onay almanız gerekir.