Để truy cập chức năng Dịch vụ trò chơi của Google Play, trò chơi của bạn cần cung cấp tài khoản người chơi đã xác thực. Tài liệu này mô tả cách triển khai trải nghiệm xác thực liền mạch trong trò chơi của bạn.
SDK Dịch vụ trò chơi của Play phiên bản 2 mang đến một vài điểm cải tiến giúp tăng số lượng người dùng được xác thực vào trò chơi của bạn, đồng thời tạo điều kiện cho việc phát triển dễ dàng hơn:
- Những cải tiến cho người dùng:
- Sau khi chọn một tài khoản mặc định, người dùng sẽ được xác thực mà không cần tương tác với lời nhắc.
- Người dùng không cần phải tải Ứng dụng Play Games xuống để xác thực bằng Dịch vụ trò chơi của Play hoặc tạo một tài khoản mới.
- Giờ đây, người dùng có thể quản lý tài khoản Dịch vụ trò chơi của Play cho nhiều trò chơi từ một trang.
- Điểm cải tiến dành cho nhà phát triển:
- Mã ứng dụng khách không cần xử lý quy trình xác thực hoặc đăng xuất nữa, vì hệ thống sẽ tự động kích hoạt luồng đăng nhập khi trò chơi bắt đầu, đồng thời xử lý hoạt động quản lý tài khoản trong các chế độ cài đặt hệ điều hành.
Tích hợp ứng dụng mới
Phần này sẽ hướng dẫn cách tích hợp ứng dụng mới với SDK Đăng nhập Dịch vụ trò chơi của Play phiên bản 2.
Thêm phần phụ thuộc
Thêm phần phụ thuộc SDK Dịch vụ trò chơi của Play vào tệp
build.gradle
gốc của ứng dụng. Nếu đang sử dụng Gradle, bạn có thể thêm hoặc cập nhật phần phụ thuộc như bên dưới:
dependencies {
implementation "com.google.android.gms:play-services-games-v2:+"
}
Xác định mã dự án
Để thêm mã dự án SDK dịch vụ trò chơi của Play vào ứng dụng, hãy hoàn tất các bước sau:
Trong tệp
AndroidManifest.xml
của ứng dụng, hãy thêm các thuộc tính và phần tử<meta-data>
sau đây vào phần tử<application>
:<manifest> <application> <meta-data android:name="com.google.android.gms.games.APP_ID" android:value="@string/game_services_project_id"/> </application> </manifest>
Xác định tham chiếu tài nguyên chuỗi
@string/game_services_project_id
bằng cách sử dụng mã dự án Dịch vụ trò chơi của trò chơi làm giá trị. Bạn có thể tìm thấy mã dự án dịch vụ trò chơi trong tên trò chơi tại trang Cấu hình trên Google Play Console.Trong tệp
res/values/strings.xml
, hãy thêm một tham chiếu tài nguyên chuỗi và đặt mã dự án làm giá trị. Trong Google Play Console, bạn có thể tìm thấy mã dự án bên dưới tên trò chơi ở trang Cấu hình. Ví dụ:<!-- res/values/strings.xml --> <resources> <!-- Replace 0000000000 with your game’s project id. Example value shown above. --> <string translatable="false" name="game_services_project_id"> 0000000000 </string> </resources>
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
.
import com.google.android.gms.games.PlayGamesSdk;
...
@Override
public void onCreate(){
super.onCreate();
PlayGamesSdk.initialize(this);
}
Nhận kết quả xác thực
Khi phát hành, trò chơi sẽ luôn cố gắng xác thực người dùng. Để xác thực người dùng, bạn phải xác minh người dùng đã xác thực thành công, sau đó lấy Mã người chơi của họ.
Để xác minh hoạt động xác thực, hãy gọi GamesSignInClient.isAuthenticated()
và sử dụng addOnCompleteListener
để truy xuất kết quả. Ví dụ:
GamesSignInClient gamesSignInClient = PlayGames.getGamesSignInClient(getActivity());
gamesSignInClient.isAuthenticated().addOnCompleteListener(isAuthenticatedTask -> {
boolean isAuthenticated =
(isAuthenticatedTask.isSuccessful() &&
isAuthenticatedTask.getResult().isAuthenticated());
if (isAuthenticated) {
// Continue with Play Games Services
} else {
// Show a sign-in button to ask players to authenticate. Clicking it should
// call GamesSignInClient.signIn().
}
});
Nếu người dùng chọn không xác thực khi trò chơi khởi động, bạn nên tiếp tục hiển thị một nút có biểu tượng Play Games hoặc cho người dùng thấy một màn hình đăng nhập có nút có biểu tượng Play Games làm một trong các lựa chọn xác thực, sau đó thử xác thực lại người dùng bằng cách gọi GamesSignInClient.signIn()
nếu người dùng nhấn nút.
Sau khi xác minh rằng người dùng đã được xác thực, bạn có thể truy xuất Mã nhận dạng người chơi để xác định người dùng. Ví dụ:
PlayGames.getPlayersClient(activity).getCurrentPlayer().addOnCompleteListener(mTask -> {
// Get PlayerID with mTask.getResult().getPlayerId()
}
);