การตรวจสอบสิทธิ์แพลตฟอร์มสำหรับเกม Android

เกมของคุณต้องระบุบัญชีของผู้เล่นที่ผ่านการตรวจสอบสิทธิ์แล้วเพื่อให้เข้าถึงฟังก์ชันการทำงานของบริการเกมของ Google Play ได้ เอกสารนี้อธิบายวิธีติดตั้งใช้งานประสบการณ์การตรวจสอบสิทธิ์ที่ราบรื่นในเกม

SDK บริการเกมของ Play v2 มีการปรับปรุงหลายอย่างที่ช่วยเพิ่มจำนวนผู้ใช้ที่ผ่านการตรวจสอบสิทธิ์ในเกมของคุณ และทำให้การพัฒนาเกมง่ายขึ้น ดังนี้

  • การปรับปรุงสำหรับผู้ใช้
    • หลังจากเลือกบัญชีเริ่มต้นแล้ว ผู้ใช้จะผ่านการตรวจสอบสิทธิ์โดยไม่ต้องโต้ตอบกับข้อความแจ้ง
    • ผู้ใช้ไม่จำเป็นต้องดาวน์โหลดแอป Play Games เพื่อตรวจสอบสิทธิ์ด้วยบริการเกมของ Play หรือสร้างบัญชีใหม่
    • ตอนนี้ผู้ใช้สามารถจัดการบัญชีบริการเกมของ Play สำหรับเกมหลายเกมได้จากหน้าเดียว
  • การปรับปรุงสำหรับนักพัฒนาแอป
  • โค้ดฝั่งไคลเอ็นต์ไม่จำเป็นต้องจัดการขั้นตอนการตรวจสอบสิทธิ์หรือการออกจากระบบอีกต่อไป เนื่องจากระบบจะทริกเกอร์การเข้าสู่ระบบโดยอัตโนมัติเมื่อเกมเริ่มต้น และการจัดการบัญชีจะจัดการในการตั้งค่าระบบปฏิบัติการ

การผสานรวมไคลเอ็นต์ใหม่

ส่วนนี้แสดงวิธีผสานรวมไคลเอ็นต์ใหม่กับการลงชื่อเข้าใช้บริการเกมของ Play v2

เพิ่มทรัพยากร Dependency

เพิ่มทรัพยากร Dependency ของ SDK บริการเกมของ Play ลงในไฟล์ build.gradle ระดับรูทของแอป หากใช้ Gradle คุณสามารถเพิ่มหรืออัปเดตทรัพยากร Dependency ได้ดังนี้

dependencies {
 implementation "com.google.android.gms:play-services-games-v2:+"
}

กำหนดรหัสโปรเจ็กต์

หากต้องการเพิ่มรหัสโปรเจ็กต์ SDK บริการเกมของ Play ลงในแอป ให้ทำตามขั้นตอนต่อไปนี้

  1. ในไฟล์ AndroidManifest.xml ของแอป ให้เพิ่ม <meta-data> องค์ประกอบและแอตทริบิวต์ต่อไปนี้ลงในองค์ประกอบ <application>

    <manifest>
      <application>
        <meta-data android:name="com.google.android.gms.games.APP_ID"
                   android:value="@string/game_services_project_id"/>
      </application>
    </manifest>
    

    กำหนดการอ้างอิงทรัพยากรสตริง @string/game_services_project_id โดยใช้รหัสโปรเจ็กต์บริการเกมของเกมเป็นค่า คุณดูรหัสโปรเจ็กต์บริการเกมได้ที่ใต้ชื่อเกมในหน้า การกำหนดค่าใน Google Play Console

  2. ในไฟล์ res/values/strings.xml ให้เพิ่มการอ้างอิงทรัพยากรสตริง และตั้งรหัสโปรเจ็กต์เป็นค่า ใน Google Play Console คุณจะเห็นรหัสโปรเจ็กต์ใต้ชื่อเกมในหน้าการกำหนดค่า เช่น

    <!-- 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>
    

เริ่มต้น SDK

เริ่มต้น SDK บริการเกมของ Play ในการเรียกกลับ onCreate(..) ของคลาส Application

import com.google.android.gms.games.PlayGamesSdk;

...

@Override
public void onCreate(){
  super.onCreate();
  PlayGamesSdk.initialize(this);
}

รับผลการตรวจสอบสิทธิ์

เมื่อเกมเปิดขึ้น เกมจะพยายามตรวจสอบสิทธิ์ผู้ใช้เสมอ หากต้องการตรวจสอบสิทธิ์ผู้ใช้ คุณต้องยืนยันว่าผู้ใช้ผ่านการตรวจสอบสิทธิ์เรียบร้อยแล้ว จากนั้นรับรหัสผู้เล่น

หากต้องการยืนยันการพยายามตรวจสอบสิทธิ์ ให้เรียก GamesSignInClient.isAuthenticated() และใช้ addOnCompleteListener เพื่อดึงข้อมูลผลลัพธ์ เช่น

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

ป้องกันการสร้างโปรไฟล์ที่ทริกเกอร์โดยอัตโนมัติ

คุณสามารถปิดใช้ข้อความแจ้งการสร้างโปรไฟล์ที่ทริกเกอร์โดยอัตโนมัติผ่านไฟล์ Manifest ได้ ซึ่งจะช่วยให้ผู้ใช้ที่ไม่มีโปรไฟล์บริการเกมของ Play สามารถโหลดเกมต่อไปได้โดยไม่ต้องได้รับข้อความแจ้งให้สร้างโปรไฟล์บริการเกมของ Play ดูข้อมูลเพิ่มเติมได้ที่ตัวเลือกการสร้างโปรไฟล์

หากต้องการใช้ฟีเจอร์นี้ โปรดตรวจสอบว่าตรงตามเงื่อนไขต่อไปนี้

  • ไม่มีโปรไฟล์บริการเกมของ Play ในบัญชี Google ใดๆ ที่ลงชื่อเข้าใช้ในอุปกรณ์
  • เกมของคุณผสานรวมกับ SDK บริการเกมของ Play com.google.android.gms:play-services-games-v2:21.0.0 ขึ้นไป

หากต้องการป้องกันข้อความแจ้งการสร้างโปรไฟล์ที่ทริกเกอร์โดยอัตโนมัติ ให้ทำตามขั้นตอนต่อไปนี้

  1. ในไฟล์ AndroidManifest.xml ให้เพิ่มแท็ก com.google.android.gms.games.SUPPRESS_GAME_PROFILE_CREATION ในองค์ประกอบ <meta-data> และแอตทริบิวต์ลงในองค์ประกอบ <application>:

    <application>
        ...
        <meta-data
            android:name="com.google.android.gms.games.SUPPRESS_GAME_PROFILE_CREATION"
            android:value="true" />
        ...
    </application>
    

    การตั้งค่าแฟล็กนี้เป็น "จริง" จะแจ้งให้บริการเกมของ Play ทราบว่าเกมของคุณจะจัดการกระบวนการสร้างโปรไฟล์ ดังนั้น บริการเกมของ Play จะไม่แสดงอินเทอร์เฟซผู้ใช้การสร้างโปรไฟล์โดยอัตโนมัติสำหรับผู้ใช้ในอุปกรณ์ที่ไม่มีโปรไฟล์บริการเกมของ Play อยู่

  2. เมื่อคุณเรียกใช้ API บริการเกมของ Play GamesClientStatusCodes.SIGN_IN_REQUIRED รหัสสถานะจะบ่งชี้ว่าการเรียกใช้ไม่สำเร็จเนื่องจากระบบไม่สามารถ ตรวจสอบสิทธิ์ผู้ใช้โดยอัตโนมัติได้เนื่องจากไม่มีโปรไฟล์บริการเกมของ Play

    ซึ่งจะช่วยให้ผู้ใช้ที่ไม่มีโปรไฟล์บริการเกมของ Play สามารถใช้วิธีการตรวจสอบสิทธิ์ที่คุณติดตั้งใช้งานได้โดยไม่ต้องได้รับข้อความแจ้งให้สร้างโปรไฟล์บริการเกมของ Play ทันที คุณสามารถเริ่มสร้างโปรไฟล์ได้โดยเรียกใช้ 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.
                }
              }
            });
  3. หลังจากเพิ่มแท็กการระงับแล้ว ให้ใช้หน้าต่าง logcat เพื่อยืนยันการเพิ่ม เอาต์พุต logcat จะมีข้อความคล้ายกับ "Game opted out of automatic profile creation prompt (using manifest)"