หากต้องการเข้าถึงฟังก์ชันการทำงานของบริการเกมของ Google Play เกมของคุณต้องระบุบัญชีของผู้เล่นที่ผ่านการตรวจสอบสิทธิ์ เอกสารนี้อธิบายวิธี ใช้ประสบการณ์การตรวจสอบสิทธิ์ที่ราบรื่นในเกม
SDK บริการเกมของ Play เวอร์ชัน 2 มีการปรับปรุงหลายอย่างที่ช่วยเพิ่ม จำนวนผู้ใช้ที่ได้รับการตรวจสอบสิทธิ์ในเกมของคุณ และช่วยให้การพัฒนาเกมง่ายขึ้น ดังนี้
- การปรับปรุงสำหรับผู้ใช้มีดังนี้
- หลังจากเลือกบัญชีเริ่มต้นแล้ว ระบบจะตรวจสอบสิทธิ์ผู้ใช้โดยไม่ต้อง โต้ตอบกับข้อความแจ้ง
- ผู้ใช้ไม่จำเป็นต้องดาวน์โหลดแอป 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 ลงในแอป ให้ทำตามขั้นตอนต่อไปนี้
ในไฟล์
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ในไฟล์
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 Games ใน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ขึ้นไป
หากไม่ต้องการให้ข้อความแจ้งการสร้างโปรไฟล์ที่ทริกเกอร์โดยอัตโนมัติปรากฏขึ้น ให้ทำตาม ขั้นตอนต่อไปนี้
ในไฟล์
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 อยู่
เมื่อเรียกใช้ 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. } } });
หลังจากเพิ่มแท็กการระงับแล้ว ให้ใช้
logcatหน้าต่างเพื่อยืนยันการเพิ่ม เอาต์พุตlogcatมีข้อความคล้ายกับข้อความต่อไปนี้ "เกมเลือกไม่ใช้ข้อความแจ้งการสร้างโปรไฟล์อัตโนมัติ (ใช้ไฟล์ Manifest)"