Để 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ý luồng 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.xmlcủ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_idbằ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().
}
});
Ngăn việc tạo hồ sơ được kích hoạt tự động
Bạn có thể tắt lời nhắc tạo hồ sơ được kích hoạt tự động thông qua tệp kê khai. Điều này cho phép người dùng không có hồ sơ Dịch vụ trò chơi của Play tiếp tục tải trò chơi mà không được nhắc tạo hồ sơ Dịch vụ trò chơi của Play. Để biết thêm thông tin, hãy xem phần Các lựa chọn tạo hồ sơ.
Để sử dụng tính năng này, hãy đảm bảo bạn đáp ứng các điều kiện sau:
- Không có hồ sơ dịch vụ trò chơi của Play nào trong bất kỳ Tài khoản Google nào đã đăng nhập trên thiết bị.
- Trò chơi của bạn được tích hợp với SDK Dịch vụ trò chơi của Play
com.google.android.gms:play-services-games-v2:21.0.0trở lên.
Để ngăn các lời nhắc tạo hồ sơ tự động xuất hiện, hãy hoàn tất các bước sau:
Trong tệp
AndroidManifest.xml, hãy thêm thẻcom.google.android.gms.games.SUPPRESS_GAME_PROFILE_CREATIONvào phần tử<meta-data>và các thuộc tính vào phần tử<application>:<application> ... <meta-data android:name="com.google.android.gms.games.SUPPRESS_GAME_PROFILE_CREATION" android:value="true" /> ... </application>Việc đặt cờ này thành true sẽ thông báo cho Dịch vụ trò chơi của Play rằng trò chơi của bạn sẽ xử lý quy trình tạo hồ sơ. Do đó, Dịch vụ trò chơi của Play sẽ không tự động hiển thị giao diện người dùng tạo hồ sơ cho những người dùng trên thiết bị không có hồ sơ Dịch vụ trò chơi của Play.
Khi bạn gọi bất kỳ API nào của Dịch vụ trò chơi của Play, mã trạng thái
GamesClientStatusCodes.SIGN_IN_REQUIREDsẽ cho biết rằng lệnh gọi không thành công vì người dùng không thể được xác thực tự động do không có hồ sơ Dịch vụ trò chơi của Play.Điều này cho phép người dùng không có hồ sơ Dịch vụ trò chơi của Play tiếp tục sử dụng các phương thức xác thực mà bạn đã triển khai mà không cần phải tạo hồ sơ Dịch vụ trò chơi của Play ngay lập tức. Bạn có thể bắt đầu tạo hồ sơ bằng cách gọi
GamesSignInService.signin().import com.google.android.gms.games.PlayGames; ... // Get the achievements client using Play Games services. AchievementsClient achievementsClient = PlayGames.getAchievementsClient(getActivity()); achievementsClient.getAchievementsIntent() .addOnFailureListener( new OnFailureListener() { @Override public void onFailure(@NonNull Exception exception) { int statusCode = ((ApiException) exception).getStatusCode(); if (statusCode == GamesClientStatusCodes.SIGN_IN_REQUIRED) { // SIGN_IN_REQUIRED: The user needs to sign in with Play Games Services. // Call GamesSignInService.signin() to prompt for // authentication at a suitable time which will trigger the // profile creation UI. // (e.g., after a tutorial). Use GamesSignInService.isAuthenticated() to check auth status. } } });
Sau khi thêm thẻ chặn, hãy sử dụng cửa sổ
logcatđể xác minh việc thêm. Đầu ralogcatchứa một thông báo tương tự như sau: "Game opted out of automatic profile creation prompt (using manifest)" (Trò chơi chọn không sử dụng lời nhắc tạo hồ sơ tự động (sử dụng tệp kê khai)).