Android集成Play Game Services:启用Saved Game仍无法使用Snapshots报错求助
问题解决:Play Games Snapshots报错“未启用Saved Game功能”
问题背景
已在Android应用中集成Google Play Game Services,登录功能正常,但调用存档功能时触发错误:
java.lang.IllegalStateException: Cannot use snapshots without enabling the 'Saved Game' feature in the Play console
已在Google Play控制台启用Saved Game功能,且改用CredentialManager替代已弃用的GoogleSignInClient,配置了Google Drive权限并完成授权,等待一天后问题仍未解决。
可能的解决方案
1. 验证Play控制台配置的有效性
- 确认**对应构建版本(内部测试/正式版)**已启用Saved Game:开发者常犯的错误是在正式版启用,但测试用的是未配置的测试版本,需进入控制台的“游戏服务”→“Saved Games”,检查所有需要测试的版本是否都已启用该功能并保存设置。
- 核对应用包名与控制台完全一致,无拼写或大小写错误。
2. 完善Play Games身份绑定流程
当前仅通过CredentialManager完成了Google账号授权,但Snapshots API依赖Play Games玩家身份,需额外完成Play Games服务的登录绑定:
在handleSignIn方法的CustomCredential分支中,获取GoogleIdToken后添加Play Games登录逻辑:
// 新增:完成Play Games服务登录 PlayGames.getGamesClient(this@MainActivity) .signIn() .addOnSuccessListener { Log.i("PlayGames", "Play Games身份验证成功") // 原有Drive权限请求逻辑放在此处 val requestedScopes = listOf(Scope(DriveScopes.DRIVE_APPDATA)) val authorizationRequest = AuthorizationRequest.builder() .setRequestedScopes(requestedScopes) .build() Identity.getAuthorizationClient(this@MainActivity) .authorize(authorizationRequest) .addOnSuccessListener { if (it.hasResolution()) { val pendingIntent = it.pendingIntent val intentSenderRequest = pendingIntent?.intentSender?.let { it1 -> IntentSenderRequest.Builder(it1).build() } intentSenderRequest?.let { it1 -> authorizationLauncher.launch(it1) } } else { Toast.makeText(this@MainActivity, "权限已授予", Toast.LENGTH_LONG).show() } }.addOnFailureListener { Toast.makeText(this@MainActivity, "权限请求失败: ${it.message}", Toast.LENGTH_LONG).show() } } .addOnFailureListener { Toast.makeText(this@MainActivity, "Play Games登录失败: ${it.message}", Toast.LENGTH_LONG).show() }
3. 检查依赖与权限配置
- 确保AndroidManifest.xml中包含必要权限:
<uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="com.google.android.gms.permission.GAMES" /> <uses-permission android:name="com.google.android.gms.permission.DRIVE_APPFOLDER" /> - 更新Play Games Services依赖到最新版本,避免版本兼容问题:
implementation "com.google.android.gms:play-services-games-v2:+" implementation "com.google.android.gms:play-services-auth:20.7.0" implementation "com.google.android.libraries.identity.googleid:googleid:1.1.0"
4. 确认API调用时机
确保调用Snapshots相关方法前,Play Games服务已完成初始化且玩家身份验证成功。可通过监听GamesClient的登录状态回调,确认登录完成后再触发存档逻辑。
内容的提问来源于stack exchange,提问作者BraveEvidence
相关产品推荐
相关产品推荐

