@Zimaell

Что делать если PlayerPrefs обнуляются на телефоне?

Данные создаются, сохраняются и берутся у меня так
public int AdsOff = 0;
/* --- вначале задаются --- */
if(!PlayerPrefs.HasKey("AdsOff")){
  PlayerPrefs.SetInt("AdsOff", AdsOff);
  PlayerPrefs.Save();
  }else AdsOff = PlayerPrefs.GetInt("AdsOff");
/* --- так при покупке они сохраняются ---*/
public void ProcessPurchase(string TypePurchase){
  switch(TypePurchase){
    case "EnAdsOff": PlayerPrefs.SetInt("AdsOff", 1); PlayerPrefs.Save(); break;
    .............................
    }
  }

При тесте в юнити все работает отлично, купил, данные сохранились, открыл новый тест и переменная уже равна 1 так как уже купилась, все логично, все нормально....

Но вот я залил это уже в рабочую версию на гугл маркет, скачал ( там на другой телефон), установил, поигрался все норм, и вот сделал покупку, например как в этом примере отключил рекламу, деньги снялись, реклама отключена, все вроде ок.... но когда я закрыл приложение и зашел заново в него, эта функция уже отключена, как будто и не покупалась, то есть получается что PlayerPrefs обнуляются что-ли, это проблема, и я бы сказал большая....
Как её решить и из-за чего такое может быть???
(покупки конечно в игре я приостановил)
  • Вопрос задан
  • 28 просмотров
Пригласить эксперта
Ответы на вопрос 1
B-Erolskiy
@B-Erolskiy
Junior C#/PHP Developer
Не советую использовать ТОЛЬКО PlayerPrefs как способ сохранения покупки.
Если игрок покупает за реальные деньги в магазине, то у UnityIAP есть отличное свойство класса Product (товара) - . hasReceipt, которое работает с товарами типа Subscription и Non Costumable.

У меня в коде реализовано так: при покупке сохраняю в PlayerPrefs, а проверяю так: если есть интернет соединение - запрашиваю наличие чека с помощью . hasReceipt, иначе смотрю в PlayerPrefs.

PlayerPrefs могут очищаться пользователем, также и при обновлении или удалении приложения, а игрок то покупку оплатил - вот тебе и недовольный покупатель, и плохой отзыв
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы