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

Google Play游戏成就解锁正常但退出后无法保存问题求助

问题原因
  • 代码逻辑问题:你当前调用AchievementsClient.unlock()是异步网络请求,未添加回调监听无法确认是否成功上传到服务器;同时onPause生命周期里直接将mAchievementsClient置空,会中断还未完成的同步请求,游戏内的解锁弹窗只是SDK本地缓存的提示,实际数据未成功同步到Google Play服务器,退出再进就会丢失。
  • 配置校验不通过:如果APK签名指纹、成就ID、测试账号权限任意一项和Google Play Console后台的配置不匹配,服务器会拒绝接收成就同步请求,仅保留本地临时显示。
  • 调用时机错误:如果在Google账号还未完成登录、mAchievementsClient还未初始化完成时就触发成就解锁,请求会被直接丢弃,不会同步到服务器。
修复方案

代码层面修改

  1. 为成就解锁请求添加结果监听,方便排查问题,同时增加未初始化时的重试逻辑:
// 新增全局变量存储待补发的成就ID队列
private Vector<String> pendingAchievements = new Vector<>();

public void achieve(String id) {
    if (mAchievementsClient != null) {
        mAchievementsClient.unlock(id)
            .addOnSuccessListener(unused -> Log.d(TAG, "成就同步成功:" + id))
            .addOnFailureListener(e -> {
                Log.e(TAG, "成就同步失败:" + id, e);
                // 失败后加入待补发队列
                pendingAchievements.add(id);
            });
    } else {
        Log.w(TAG, "成就客户端未初始化,加入待补发队列:" + id);
        pendingAchievements.add(id);
    }
}

// 在登录成功的onConnected方法最后补发待同步的成就
private void onConnected(GoogleSignInAccount googleSignInAccount) {
    Log.d(TAG, "onConnected(): connected to Google APIs");

    GamesClient gamesClient = Games.getGamesClient(this, googleSignInAccount);
    gamesClient.setViewForPopups(findViewById(android.R.id.content));
    gamesClient.setGravityForPopups(Gravity.TOP | Gravity.CENTER_HORIZONTAL);

    mAchievementsClient = Games.getAchievementsClient(this, googleSignInAccount);
    
    // 新增:补发之前未同步的成就
    while (!pendingAchievements.isEmpty()) {
        String aid = pendingAchievements.remove(0);
        achieve(aid);
    }
}
  1. 删除onPause方法中mAchievementsClient = null;这行代码,Google Play Games SDK会自动处理生命周期,手动置空会中断未完成的同步任务。

配置层面检查

  • 核对代码中使用的成就ID与Google Play Console游戏服务后台配置的成就ID完全一致,无拼写错误。
  • 核对当前安装APK的签名SHA1指纹,与Google Play Console游戏服务页面配置的指纹一致,调试阶段需要额外把本地调试签名的SHA1加入后台配置。
  • 确认测试账号已经被添加到Google Play Console游戏服务的测试白名单中,未正式发布的游戏只有白名单账号可正常同步数据。
  • 更新Google Play Games应用到最新版本,排除旧版本客户端同步异常的问题。

内容的提问来源于stack exchange,提问作者goob256

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 16:15:07