Как лучше хранить купленные через In-App Purchase плюшки?

Первый раз работаю с In-App Purchase, появился небольшой вопрос. В игровом приложении планируются потребляемые плюшки, имеющие определенное количество. Изначально доступно некоторое количество, можно тратить. Выдаваться плюшки могут кучей способов, в том числе для самых богатых и ленивых — покупаться (стандартное поведение большинства игр).


В чем, собственно, проблема. Свой сервер для хранения плюшек делать затратно. На главном экране всегда выводится количество «у вас N плюшек» и делать постоянные запросы тоже не хотелось бы, надо хранить локально. Но в то же время если пользователь потратил половину зарплаты на плюшки, а после переустановки приложения все их потеряет, тоже будет не очень правильно.


Пока что сделал через NSUserDefaults, вот думаю может давно есть какие-нибудь способы это сделать, например, через GameCenter, iCloud или еще как-то, о которых я не знаю?
  • Вопрос задан
  • 4821 просмотр
Пригласить эксперта
Ответы на вопрос 5
Screatch
@Screatch
Ruby On Rails front-end developer
Правильней всё-таки хранить эту информацию на сервере. VPS например, сейчас стоят не так уж и дорого.
Ответ написан
Krypt
@Krypt
Имхо, таки лучше сервер. Во-первых, как уже писали, не поломают, а во-вторых — если пользователь переустановит приложение — без сервера выданные или купленные плюшки не сохранятся.
Ответ написан
Комментировать
keyf
@keyf
Человек из маркетинга с тяжелым ИТ-прошлым
Зависит от популярности игры, конечно, но простенький VPS, как предлагает автор выше, вполне должен справиться даже с 100 запросов к базе в минуту.

Если внешний сервер это все-таки совсем нет-нет, то вот результат экспресс гуглежа: stackoverflow.com/questions/7810157/can-i-use-icloud-to-sync-the-nsuserdefaults-plist-file.

Мне для общего развития: плюшки тратятся в игре в результате действий пользователя или могут быть какие-нить «внешние причины»? Если первый вариант (т.е. только локально, в приложении и в ответ на действие пользователя), то мне кажется оптимальным решением была бы синхронизация изредка с удаленным сервером, а не запросы в real-time.
Ответ написан
Комментировать
usgleb
@usgleb
А можно не городить свой велосипед, а просто воспользоваться готовым бекендом для мобильных платформ, например www.quickblox.com. Бесплатно и есть отличное SDK для iOS. Если хотите, могу рассказать подробнее в ЛС.
Ответ написан
Pilot34
@Pilot34
MKStoreKit умеет хранить данные об in-app-ах в keychain так, что после удаления и установки на том же девайсе данные не теряются. Для синхронизации между девайсами нужен NSUbiquityStore (то же что и NSUserDefaults, только через iCloud)
Ответ написан
Ваш ответ на вопрос

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

Похожие вопросы