You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.15 20:24:54