Достижения неправильно загружаются из GooglePlay - Unity
Время от времени, чаще всего после переустановки приложения, метод LoadAchievements возвращает completed = false у всех ачивок, даже у тех, что были ранее открыты. Не понимаю в чём может быть проблема.
Связано ли это с тем, что ачивки в Google Console находятся, пока что, в статусе "Готово к публикации" а не "Опубликовано"? И приложение находится на этапе тестирования
После авторизации пользователя в гугл плей запускается данный метод:
public void Init()
{
_Platform = PlayGamesPlatform.Instance;
Internals.Locator.AchievementManager.InitializeAchievements();
}
Метод Internals.Locator.AchievementManager.InitializeAchievements() выглядит так:
public void InitializeAchievements()
{
Debug.Log($"[AchievementManager] CHECKACHIEVEMENT");
CloudController.CloudService.Achievements.LoadAchievements(OnLoad);
CheckAchievements();
}
В котором CloudController.CloudService.Achievements.LoadAchievements выглядит так:
public void LoadAchievements(Action<(string, bool)[]> callback)
{
if (_IsDummy) return;
_Platform.LoadAchievements((items) =>
{
if (items != null)
callback?.Invoke(
items.Where(t => t != null)
.Select(t => (t.id, t.completed))
.ToArray());
});
}
И принимает колбэк OnLoad:
private void OnLoad((string id, bool unlocked)[] result)
{
foreach (var item in result)
{
Debug.Log($"[AchievementManager] ({item.id}) = ({item.unlocked})");
if (_Achievements[item.id] != null)
{
Debug.Log($"[AchievementManager] ({item.id}) is present");
_Achievements[item.id].unlocked = item.unlocked;
}
else
{
Debug.Log($"[AchievementManager] ({item.id}) is NOT present");
}
}
//result.ForEach(t => _Achievements[t.id].unlocked = t.unlocked);
}