返回

Google Play 游戏服务:如何解决 ISavedGameMetadata 中的内部错误

Android

如何解决 Google Play 游戏服务中 ISavedGameMetadata 返回的内部错误

简介

在使用 Google Play 游戏服务 (GPS) 时,您可能会遇到尝试获取已保存游戏元数据时返回内部错误的情况。本指南将引导您完成步骤,以帮助您诊断和解决此问题。

问题症状

  • 当您尝试使用 ISavedGameMetadata 获取已保存游戏时,您会收到内部错误。
  • 在尝试使用 ShowCloudSaveSelectUI() 打开标准界面以选择或创建已保存的游戏条目时,也会出现内部错误。

可能的原因

造成此内部错误的原因可能有多种,包括:

  • 凭证问题
  • 过时的 GPS 版本
  • GPS 配置不当
  • 回调处理不当

解决方案

为了解决此问题,请遵循以下步骤:

步骤 1:检查凭据

确保您已使用正确的 Google 帐户登录,并且该帐户具有访问云存档的权限。

步骤 2:更新 GPS 版本

检查您使用的 GPS 版本是否是最新版本。过时的版本可能会导致内部错误。

步骤 3:启用 Drive API

虽然不是必需的,但启用 Google 云端硬盘 API 可以提高稳定性并解决某些内部错误。要在 Google 开发者控制台中启用此功能,请导航至 API 和服务 > 启用 API 和服务,然后搜索 Google 云端硬盘 API 并启用它。

步骤 4:使用正确的类

请使用 IPlayGamesPlatform 而不是 Social.Active 来访问 GPS 功能。

步骤 5:配置 GPS

创建 PlayGamesClientConfiguration 实例,如下所示:

PlayGamesClientConfiguration config = new PlayGamesClientConfiguration.Builder()
    .EnableSavedGames()
    .Build();

然后使用此配置实例初始化 IPlayGamesPlatform

IPlayGamesPlatform platform = PlayGamesPlatform.InitializeInstance(config);

步骤 6:处理回调

仔细处理 OnSavedGameSelectedCallbackOpenSaveCallback 等回调,以响应保存游戏的选择和打开。

步骤 7:其他提示

如果您在遵循上述步骤后仍然遇到问题,请尝试以下其他提示:

  • 确保您正在使用正确的文件名称来打开已保存的游戏。
  • 尝试使用不同的设备或模拟器。
  • 联系 Google Play 游戏服务支持团队以获取进一步的帮助。

示例实现

以下是一个经过更新的实现示例,显示了如何使用正确的配置和类:

// 标准界面,用于选择/创建已保存的游戏条目
public void ShowCloudSaveSelectUI()
{
    uint maxNumToDisplay = 5;
    bool allowCreateNew = false;
    bool allowDelete = true;

    IPlayGamesPlatform platform = PlayGamesPlatform.InitializeInstance(config);
    ISavedGameClient savedGameClient = platform.SavedGame;
    savedGameClient.ShowSelectSavedGameUI("Select saved data",
        maxNumToDisplay,
        allowCreateNew,
        allowDelete,
        OnSavedGameSelectedCallback);
}

// 打开保存的文件
public void OpenSavedGame(string filename)
{
    IPlayGamesPlatform platform = PlayGamesPlatform.InitializeInstance(config);
    ISavedGameClient savedGameClient = platform.SavedGame;

    if (savedGameClient != null)
    {
        savedGameClient.OpenWithAutomaticConflictResolution(filename,
        DataSource.ReadCacheOrNetwork,
        ConflictResolutionStrategy.UseMostRecentlySaved,
        OpenSaveCallback);
    }
    else
    {
    }
}

结论

通过遵循本指南中的步骤,您应该能够解决 Google Play 游戏服务中 ISavedGameMetadata 元数据返回的内部错误。如果您仍然遇到问题,请不要犹豫,联系 Google Play 游戏服务支持团队以获取帮助。

常见问题解答

1. 为什么我需要启用 Google 云端硬盘 API?

虽然不是必需的,但启用 Google 云端硬盘 API 可以提高稳定性并解决某些内部错误。

2. 我如何处理回调?

回调非常重要,用于响应保存游戏的选择和打开。仔细处理这些回调,以确保适当处理结果。

3. 为什么我使用错误的类?

使用 Social.Active 类访问 GPS 功能已不再受支持。请使用 IPlayGamesPlatform 而不是 Social.Active

4. 我如何获得最新的 GPS 版本?

最新版本的 GPS 可通过 Google Play 开发者控制台获得。

5. 如果我仍然遇到问题,我该怎么办?

如果您在遵循本指南中的步骤后仍然遇到问题,请不要犹豫,联系 Google Play 游戏服务支持团队以获取帮助。