คำแนะนำนี้จะอธิบายวิธีย้ายข้อมูลโค้ดไคลเอ็นต์จากบริการเกมของ Play v1 ถึง v2
SDK ใหม่มีการเปลี่ยนแปลงที่สำคัญ 4 ประการเพื่อเพิ่มความสำเร็จในการลงชื่อเข้าใช้ ควรทราบ:
- ระบบจะทริกเกอร์การลงชื่อเข้าใช้โดยอัตโนมัติเมื่อมีการเปิดตัวเกมของคุณ แทนที่จะเป็น
โดยใช้
GoogleSignInClient
ของ GoogleSignIn SDK เพื่อลงชื่อเข้าใช้ คุณสามารถใช้GamesSignInClient.isAuthenticated()
เพื่อดึงข้อมูลผลการตรวจสอบ ความพยายามในการลงชื่อเข้าใช้ - คลาส Client Element จะไม่จำเป็นต้องใช้ออบเจ็กต์
GoogleSignInAccount
อีกต่อไป ผ่านเข้ามา ไม่สามารถขอขอบเขต OAuth เพิ่มเติม (GAMES_LITE
จะ โดยอัตโนมัติ) - ระบุโทเค็นการตรวจสอบสิทธิ์แล้วโดยใช้
GamesSignInClient.requestServerSideAccess()
ภายในบริการเกมของ Play SDK - ระบบจะนำวิธีการออกจากระบบออก และเราจะไม่ต้องใช้ในเกมอีก เพื่อลงชื่อเข้าใช้หรือออกจากระบบบริการเกมของ Play
นอกจากนี้ เกมของคุณจะมีการเข้าสู่ระบบเพิ่มเติมเนื่องจาก ลงชื่อเข้าใช้เมื่อเกมเริ่ม ดังนั้น คุณจึงควรตรวจสอบ การจัดการโควต้าเพื่อให้มั่นใจว่าเกมจะไม่เกิน โควต้าคำขอเข้าสู่ระบบ
กำหนดเป้าหมายที่เก็บ SDK Maven ใหม่
หากใช้ระบบบิลด์ Gradle อยู่ คุณสามารถทำได้โดยเปลี่ยน
การอ้างอิงกับอาร์ติแฟกต์ com.google.android.gms:play-services-games-v2:+
ใน
ไฟล์ build.gradle
ของโมดูล เช่น
dependencies {
implementation "com.google.android.gms:play-services-games-v2:+"
}
เริ่มต้น SDK
เริ่มต้น Play Games SDK ใน Callback onCreate(..)
ของ
ชั้นเรียนApplication
เช่น
import com.google.android.gms.games.PlayGamesSdk;
...
@Override
public void onCreate(){
super.onCreate();
PlayGamesSdk.initialize(this);
}
นำสายลงชื่อเข้าใช้และออกจากระบบออก
หากไม่ได้ระบุขอบเขตเพิ่มเติม คุณควรย้ายข้อมูล Use Case ตรงไปตรงมา
นำการโทรเพื่อลงชื่อเข้าใช้ออกโดยใช้ GoogleSignIn API การลงชื่อเข้าใช้จะ ทุกครั้งเมื่อเปิดเกม แต่ให้ฟังผลลัพธ์ของ การพยายามลงชื่อเข้าใช้โดยอัตโนมัติโดยใช้
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(). } });
นำการโทรทั้งหมดออกเพื่อออกจากระบบ เนื่องจากขณะนี้คือการจัดการบัญชี ที่อยู่ในการตั้งค่าระบบปฏิบัติการและแอป Play Games
หากลงชื่อเข้าใช้โปรแกรมเล่นสำเร็จ ให้นำปุ่มลงชื่อเข้าใช้ Play Games ออก จากเกมของคุณ หากผู้ใช้เลือกที่จะไม่ลงชื่อเข้าใช้เมื่อเกมเปิดตัว คุณจะ คุณอาจเลือกแสดงปุ่มที่มีไอคอน Play Games ต่อไป และ เรียกใช้กระบวนการเข้าสู่ระบบด้วย
GamesSignInClient.signIn()
หลังจากยืนยันว่าผู้ใช้ลงชื่อเข้าใช้แล้ว คุณสามารถเรียกดูรหัสผู้เล่นเพื่อระบุตัวผู้ใช้ได้
PlayGames.getPlayersClient(activity).getCurrentPlayer().addOnCompleteListener(mTask -> { // Get PlayerID with mTask.getResult().getPlayerId() } );
ไม่ต้องพึ่งพา GoogleSignIn API อีกต่อไปหากไม่ได้ใช้งานแล้ว
อัปเดตชื่อคลาสของไคลเอ็นต์
เมื่อสร้างไคลเอ็นต์ (เช่น LeaderboardsClient
หรือ AchievementsClient
) ให้ใช้ PlayGames.getFooClient()
แทน Games.getFooClient()
ขอสิทธิ์เข้าถึงฝั่งเซิร์ฟเวอร์
เมื่อขอการเข้าถึงฝั่งเซิร์ฟเวอร์ ให้ใช้ GamesSignInClient.requestServerSideAccess()
แทน 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.
}
});
นำขอบเขตเพิ่มเติมออก
เมื่อใช้บริการเกมของ Play v2 คุณจะขอขอบเขตเพิ่มเติมไม่ได้ หากคุณ ยังต้องขอขอบเขตเพิ่มเติม เราขอแนะนำให้คุณใช้ SDK สำหรับ Google Sign-In ควบคู่กับบริการเกมของ Play
การย้ายข้อมูลจาก GoogleApiClient
สำหรับการผสานรวมแบบเก่าที่มีอยู่ เกมของคุณอาจขึ้นอยู่กับ
รูปแบบ GoogleApiClient API ของ SDK บริการเกมของ Play นี่คือ
เลิกใช้งานในช่วงปลายปี 2017
และแทนที่ด้วย "การเชื่อมต่อแบบไร้การเชื่อมต่อ" ลูกค้า ในการย้ายข้อมูล คุณสามารถแทนที่
GoogleApiClient
คลาสที่เทียบเท่ากับ "การเชื่อมต่อแบบไร้การเชื่อมต่อ" นอกจากนี้คุณจะ
โปรดทำตามคำแนะนำในหน้านี้เพื่อย้ายเกมของคุณจากเวอร์ชัน 1 ไปยังเวอร์ชัน 2
การแมปชั้นเรียนทั่วไปมีดังนี้
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