Bu sayfada, Recall API'nin oyununuza nasıl uygulanacağı açıklanmaktadır. İlk olarak oyun sunucunuzu ve istemcinizi API'yı destekleyecek şekilde ayarlayıp jetonların saklanması ve alınması.
Oyun sunucusu kurulumu
Oyun sunucunuzu, Google sunucularına Recall API çağrıları yapacak şekilde ayarlayın.
Play Games Hizmetleri projenizi oluşturun
(Henüz yapmadıysanız) Google Play'i Kurma Oyun Hizmetleri.
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 olur.
Play Oyun Hizmetleri için sunucu tarafı Java kitaplığını indirme
En son google-api-services-games
sürümünü indirin
kitaplık
ve bunu sunucunuza yükleyin.
Recall API çağrıları için kimlik bilgilerini hazırlama
Bkz. Yetki verilmiş bir 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ı
Java SDK'sını istemcinizde ayarlayın ve Gradle dosyanıza com.google.android.gms:play-services-games-v2:19.0.0
ile com.google.android.gms:play-services-tasks:18.0.2
veya daha yeni bir sürüm eklediğinizden emin olun.
Google'ın sunucularıyla doğru bilgilerle iletişim kurmak için Oyununuzun sunucusuna gönderdiğiniz istemci SDK'sından oturum kimliğini geri çağırın:
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 });
Oyun sunucunuzda Recall API'yi kullanma
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ı
LinkPersonaRequest
nesnesini kullanarak kullanıcının kişiliğini ve oyun jetonunu saklayın.
Google API'lerini çağırmak için GoogleCredential
öğesini kullanın.
1:1 kardinaliteyi takip etmek için
kontrol edin,
Aynı anda yalnızca bir karakter, bir PGS profiline bağlanır. Bunun tersi de geçerlidir. Ayarlayın:
bu PGS profilinin başka bir PGS profiline zaten bağlanmış olması durumunda kullanabileceğiniz bir çözüm politikası
çok önemlidir.
İsteğe bağlı olarak, jetonda bir TTL ayarlayabilirsiniz. Bu ayar, Durations
nesnesi kullanılarak jetonun ne kadar süreyle geçerli olacağını belirtir. 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.
Kimliği tanımlayabilecek bilgiler içermemesi gereken kimlik ve oyun jetonunu şifrelemeniz gerekir. Kişi ve jeton dizeleri en fazla 256 karakter uzunluğunda olabilir ve her oyunda oyuncu başına en fazla 20 jeton veya kişi depolanabilir.
Belirli bir zamanda, her oyuncu için karakter başına yalnızca bir jeton depolanabilir. Aynı kişiliğe sahip başka bir jeton depolamaya çalışırsanız sistem, orijinal jetonun üzerine yazar.
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
}
Jetonları alma
Geri çağırma jetonunu almak için istemciden recallSessionId
öğesini alın ve
retrieveTokens
API'sine iletin:
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
}
Geri çağırma jetonunu sil
Gerekirse aşağıdaki çağrıyla geri çağırma jetonunu da silebilirsiniz:
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();
Profilsiz modu etkinleştirme
Aşağıdaki adımları uygulayarak PGS profili olmayan kullanıcılar için sınırlı Recall API işlevini etkinleştirebilirsiniz:
- 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.
- Uygulama manifestinize aşağıdaki meta veri etiketini ekleyin:
<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'i kullanıyorsanız Recall API'yi izin veren bir PGS profili olmayan kullanıcılar için 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ı Politika ve ilgili 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.