PGS Recall API'yi oyununuza entegre edin

Bu sayfada, Recall API'sini oyununuzda nasıl uygulayacağınız 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şturma

Hizmet oluşturma talimatlarını uygulayın: hesap. Sonunda, hizmet hesabı kimlik bilgilerini içeren bir JSON dosyanız olmalıdır.

Play Oyun Hizmetleri için sunucu tarafında 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ı

İstemcinizde Java SDK'sını kurun, ve mutlaka com.google.android.gms:play-services-games-v2:19.0.0 ve Gradle'ınızda com.google.android.gms:play-services-tasks:18.0.2 veya daha yüksek dosyası olarak kaydedebilirsiniz.

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 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ı

LinkPersonaRequest nesnesini kullanarak kullanıcının karakterini ve oyun jetonunu depolayın. Google'ı aramak için GoogleCredential numaralı hattı kullanın API'ler. 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, jeton üzerinde ne kadar süreyle geçerli olacak bir TTL ayarlamayı seçebilirsiniz. jetonun geçerli olup olmadığını kontrol etmek için Durations 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. Denemek için aynı karaktere sahip başka bir jetonu saklamak için sistem, jeton.

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ı al

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 geri çağırma jetonunu aşağıdaki çağrıyla 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ştir

Sınırlı Recall API işlevini etkinleştirebilirsiniz aşağıdaki adımları uygulayarak PGS profili olmayan kullanıcılar için:

  1. Play Developer'da PGS oyun projeniz için profilsiz geri çağırmayı etkinleştirin Konsol. Etiketli seçeneği belirleyin .
  2. Bu bölümün ilerleyen kısımlarında açıklanan ek şartları inceleyin.
  3. 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'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ı 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.