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