Hướng dẫn này mô tả cách di chuyển mã ứng dụng khách của bạn từ Dịch vụ trò chơi của Play từ phiên bản 1 đến phiên bản 2.
SDK mới chứa bốn thay đổi chính để tăng thành công khả năng đăng nhập mà bạn cần lưu ý:
- Tính năng đăng nhập sẽ được kích hoạt tự động khi trò chơi của bạn khởi động. Thay vì
bằng
GoogleSignInClient
của SDK GoogleSignIn để thực hiện đăng nhập, bạn có thể sử dụngGamesSignInClient.isAuthenticated()
để tìm nạp kết quả của thao tác tự động đăng nhập. - Các lớp nhà máy của ứng dụng (Client Factory) sẽ không cần truyền đối tượng
GoogleSignInAccount
nữa. Không thể yêu cầu phạm vi OAuth bổ sung (GAMES_LITE
sẽ là tự động yêu cầu). - Mã thông báo xác thực hiện được cung cấp bằng
GamesSignInClient.requestServerSideAccess()
trong Dịch vụ trò chơi của Play SDK. - Phương thức đăng xuất sẽ bị xoá và chúng tôi sẽ không yêu cầu sử dụng trong trò chơi nữa để đăng nhập hoặc đăng xuất khỏi Dịch vụ trò chơi của Play.
Ngoài ra, trò chơi của bạn sẽ gặp phải tình trạng đăng nhập bổ sung do đăng nhập khi trò chơi khởi động. Do đó, bạn nên xem xét quản lý hạn mức để đảm bảo rằng trò chơi của bạn không vượt quá hạn mức yêu cầu đăng nhập.
Nhắm đến kho lưu trữ SDK Maven mới
Nếu đang sử dụng hệ thống xây dựng Gradle, bạn có thể thực hiện việc này bằng cách thay đổi
phần phụ thuộc vào cấu phần phần mềm com.google.android.gms:play-services-games-v2:+
trong
tệp build.gradle
của mô-đun của bạn. Ví dụ:
dependencies {
implementation "com.google.android.gms:play-services-games-v2:+"
}
Khởi chạy SDK
Khởi chạy SDK Play Games trong lệnh gọi lại onCreate(..)
của lớp
Application
. Ví dụ:
import com.google.android.gms.games.PlayGamesSdk;
...
@Override
public void onCreate(){
super.onCreate();
PlayGamesSdk.initialize(this);
}
Xoá lệnh gọi đăng nhập và đăng xuất
Nếu bạn chỉ định không có phạm vi bổ sung, việc di chuyển trường hợp sử dụng của bạn sẽ khá đơn giản.
Dùng GoogleSignIn API để xoá lệnh gọi đăng nhập. Việc đăng nhập sẽ luôn được thực hiện khi khởi động trò chơi. Thay vào đó, hãy theo dõi kết quả của lần đăng nhập tự động bằng
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(). } });
Hãy xoá tất cả các cuộc gọi để đăng xuất, vì hoạt động quản lý tài khoản hiện nằm trong tuỳ chọn cài đặt ứng dụng Play và hệ điều hành.
Nếu người chơi đã đăng nhập thành công, vui lòng xoá nút đăng nhập vào Play Games khỏi trò chơi của bạn. Nếu người dùng chọn không đăng nhập khi trò chơi khởi động, bạn có thể chọn tiếp tục hiển thị nút có biểu tượng Play Games và kích hoạt quy trình đăng nhập với
GamesSignInClient.signIn()
.Sau khi xác minh người dùng đã đăng nhập, bạn có thể truy xuất Mã nhận dạng người chơi để xác định người dùng.
PlayGames.getPlayersClient(activity).getCurrentPlayer().addOnCompleteListener(mTask -> { // Get PlayerID with mTask.getResult().getPlayerId() } );
Hãy xoá phần phụ thuộc trên API GoogleSignIn nếu không còn dùng đến.
Cập nhật tên lớp ứng dụng
Khi tạo ứng dụng (chẳng hạn như LeaderboardsClient
hoặc AchievementsClient
), vui lòng sử dụng PlayGames.getFooClient()
thay vì Games.getFooClient()
.
Yêu cầu quyền truy cập phía máy chủ
Khi yêu cầu quyền truy cập phía máy chủ, vui lòng sử dụng GamesSignInClient.requestServerSideAccess()
thay vì 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.
}
});
Xoá các phạm vi thừa
Với Dịch vụ trò chơi của Play phiên bản 2, bạn không thể yêu cầu thêm phạm vi nào. Nếu có nhu cầu thêm phạm vi, bạn nên sử dụng SDK đăng nhập bằng Google cùng với Dịch vụ trò chơi của Play.
Di chuyển từ GoogleApiClient
Đối với các chế độ tích hợp hiện có từ trước, có thể trò chơi đang phụ thuộc vào biến thể API GoogleApiClient thuộc SDK Dịch vụ trò chơi của Play. Đây là
không dùng nữa từ cuối năm 2017
và được thay thế bằng "không có kết nối" khách hàng. Để di chuyển, bạn có thể thay thế lớp GoogleApiClient
bằng một lớp tương đương “không có kết nối”. Sau đó, bạn cũng sẽ
bạn phải làm theo hướng dẫn trên trang này để di chuyển trò chơi của mình từ phiên bản 1 sang phiên bản 2.
Sau đây là sơ đồ liên kết các lớp phổ biến:
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