Мы получили вот такую жалобу от игрока:
Периодически играю в бурить копать и столкнулся с тем, что в последнее время не сохраняется прогресс. То есть, я играю, покупаю улучшения. Все хорошо. Потом выхожу, и когда захожу снова через некоторое время(через час-2)снова появляется уведомление о том, что получены ящики за вход в игру и прогресс тот же который был в первый заход. Сейчас даже включил облачные сохранения, но и после этого прогресс не сохранился
Было непонятно, что с этим делать, поэтому решено было смотреть логи. Встал вопрос, как максимально дружелюбно для игрока собрать логи?
С помощью Unity события
Application.logMessageReceived настроил сборку логов в файл, а с помощью плагина UnityNativeShare добавил кнопку "отправить логи", которая вызывает стандартное меню "поделиться" андроида. Сбилдил игру, выложил APK на наш сайт и попросил игрока обновить игру и отправить логи.В логах были успешные записи о авторизации, чтении и записи сохранения в файл и в Google Play Services. Это насторожило, ведь игрок сказал, что у него Huawei без сервисов Google.
Предположил, что проблема в сервисах Google (получаем всегда старое сохранение, новое не записывается). Так как используется автоматическое разрешение конфликтов по времени сохранения, добавил в логи информацию о времени из метаданных сохранения.
Отправил новый билд игроку, получил от него новые логи.
В логах виду, что время загруженного сохранения 01.01.1970 0:00:00. Хотя такого не может быть по контракту самого API гугл сервисов.
/// <summary>
/// A timestamp corresponding to the last modification to the underlying saved game. If the
/// saved game is newly created, this value will correspond to the time the first Open
/// occurred. Otherwise, this corresponds to time the last successful write occurred (either by
/// CommitUpdate or Resolve methods).
/// </summary>
/// <value>The last modified timestamp.</value>
DateTime LastModifiedTimestamp { get; }
Уточняю у игрока, как такое может быть, что игра успешно соединяется с сервисами Google, хотя он пишет, что у него их нет. Получаю ответ
Да, у меня установлено приложение GBox для установки приложений, которых нет в Rustore и AppGallery, а так же MicroG который идут в комплекте к GBox
Понятно. На устройстве какая-то кривая заглушка для сервисов Google, которая некорректно работает. Добавляю проверку на валидность даты в метаданных сохранения, и, если дата кривая, игнорирую сохранения от сервисов Google и использую только локальные файлы (как если бы сервисы Google полностью отсутствовали).
Игрок подтвердил, что проблема решена.
#android