Đăng nhập vào các trò chơi trên Android

Để 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 đã đăng nhập. Tài liệu này mô tả cách triển khai trải nghiệm đăng nhập 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 đăng nhập 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ẽ đăng nhập mà không cần tương tác với các lời nhắc.
    • Người dùng không cần phải tải Ứng dụng Play Games xuống để đăng nhập bằng Dịch vụ trò chơi của Play, hoặc tạo một tài khoản mới khác.
    • 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.
  • Cải tiến dành cho các nhà phát triển:
    • Mã ứng dụng khách không còn cần xử lý luồng đăng nhập hoặc đăng xuất nữa, vì việc đăng nhập sẽ tự động kích hoạt khi trò chơi bắt đầu, đồng thời hoạt động quản lý tài khoản được xử lý 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:

  1. 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.

  2. 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);
}

Tải kết quả đăng nhập

Khi phát hành, trò chơi sẽ luôn cố gắng đăng nhập người dùng vào trò chơi. Để xác thực người dùng, bạn phải xác minh người dùng đã đăng nhập thành công, sau đó lấy Mã người chơi của họ.

Để xác minh hoạt động đăng nhập, 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 {
    // Disable your integration with Play Games Services or show a
    // login button to ask  players to sign-in. Clicking it should
    // call GamesSignInClient.signIn().
  }
});

Nếu người dùng chọn không đăng nhập khi trò chơi khởi động, bạn có thể tuỳ ý chọn chức năng tiếp tục hiển thị một nút có biểu tượng Play Games, sau đó thử đăng nhập lại người dùng vào trò chơi bằng cách gọi GamesSignInClient.signIn() nếu người dùng nhấn nút.

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. Ví dụ:

PlayGames.getPlayersClient(activity).getCurrentPlayer().addOnCompleteListener(mTask -> {
    // Get PlayerID with mTask.getResult().getPlayerId()
  }
);