Как лучше хранить купленные через In-App Purchase плюшки?
Первый раз работаю с In-App Purchase, появился небольшой вопрос. В игровом приложении планируются потребляемые плюшки, имеющие определенное количество. Изначально доступно некоторое количество, можно тратить. Выдаваться плюшки могут кучей способов, в том числе для самых богатых и ленивых — покупаться (стандартное поведение большинства игр).
В чем, собственно, проблема. Свой сервер для хранения плюшек делать затратно. На главном экране всегда выводится количество «у вас N плюшек» и делать постоянные запросы тоже не хотелось бы, надо хранить локально. Но в то же время если пользователь потратил половину зарплаты на плюшки, а после переустановки приложения все их потеряет, тоже будет не очень правильно.
Пока что сделал через NSUserDefaults, вот думаю может давно есть какие-нибудь способы это сделать, например, через GameCenter, iCloud или еще как-то, о которых я не знаю?
А если нельзя на сервере проверить «валидность» покупки? Например, в Blackberry AppWorld или в Google Play? Если я правильно помню — там такой возможности не было.
Имхо, таки лучше сервер. Во-первых, как уже писали, не поломают, а во-вторых — если пользователь переустановит приложение — без сервера выданные или купленные плюшки не сохранятся.
Мне для общего развития: плюшки тратятся в игре в результате действий пользователя или могут быть какие-нить «внешние причины»? Если первый вариант (т.е. только локально, в приложении и в ответ на действие пользователя), то мне кажется оптимальным решением была бы синхронизация изредка с удаленным сервером, а не запросы в real-time.
А можно не городить свой велосипед, а просто воспользоваться готовым бекендом для мобильных платформ, например www.quickblox.com. Бесплатно и есть отличное SDK для iOS. Если хотите, могу рассказать подробнее в ЛС.
Agent_Smith на самом деле их достаточно много. А могу ли я поинтересоваться Вы использовали ее как бекенд для мобильного приложения или какого-то другого?
MKStoreKit умеет хранить данные об in-app-ах в keychain так, что после удаления и установки на том же девайсе данные не теряются. Для синхронизации между девайсами нужен NSUbiquityStore (то же что и NSUserDefaults, только через iCloud)