Hướng dẫn này mô tả cách di chuyển mã ứng dụng của bạn từ Dịch vụ trò chơi của Play phiên bản 1 sang 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ì sử dụng
GoogleSignInClient
của SDKGoogleSignIn
để thực hiện quá trình đăng nhập, bạn có thể sử dụngGamesSignInClient.isAuthenticated()
để tìm nạp kết quả của lần đăng nhập tự động. - 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ẽ tự động yêu cầu). - Giờ đây, mã thông báo xác thực được cung cấp qua
GamesSignInClient.requestServerSideAccess()
trong SDK Dịch vụ trò chơi của Play. - Phương thức đăng xuất sẽ bị xoá và chúng tôi sẽ không yêu cầu nút (trong trò chơi) để đă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 việc đăng nhập tự động khi trò chơi khởi động. Do đó, bạn nên xem lại phần quản lý hạn mức để đảm bảo 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 bản dựng Gradle, bạn có thể thực hiện bằng cách thay đổi phần phụ thuộc thành 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. 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 bằng
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() } );
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. Biến thể này đã ngừng hoạt động từ cuối năm 2017, và được thay thế bằng các ứng dụng "không có kết nối". Để 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 sẽ phải làm theo hướng dẫn trên trang này để di chuyển trò chơi từ phiên bản 1 sang phiên bản 2.
Dưới đây là bản đồ ánh xạ 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