Не волнуйтесь, я не пытаюсь взломать чужое приложение, если это - то, что Вы думаете =).
Я хочу иметь 2 версии своего приложения, бесплатной версии и роскошной версии. Мой план состоял в том, чтобы использовать покупку в приложении для включения роскошной версии путем устанавливания булева значения в plist файле.
Мой вопрос: это безопасно, или это легко обходится? И если это не безопасно, кто-то может предложить простую альтернативу? Я не хочу загружать дополнительное содержание, я сохранил бы всю функциональность в рамках приложения и включил бы его так или иначе.
Править: Я не имею в виду приложение plist файл, но что-то как пользовательский файл значений по умолчанию.
Вы должны сохранить это в связке ключей, вот что я сделаю. Связка ключей намного безопаснее, чем .plist или пользовательские значения по умолчанию (которые, насколько мне известно, тоже .plist). Взгляните на SFHFKeychainUtils , вы сможете использовать это или просто реализовать лучший метод именно для того, чтобы сохранить простой bool.
Сохранение состояния по умолчанию не более и не менее безопасно с точки зрения конфиденциальности, чем наличие двух версий вашего приложения. Пираты либо пиратят роскошную версию, либо пиратскую унифицированную версию с установленным флагом.
Я бы порекомендовал прочитать статью , подтверждающую покупки в приложении . Мне кажется, вы пытаетесь внедрить свою собственную систему проверки покупок в приложении, которая может быть связана с проблемами, о которых вы, возможно, еще не задумывались. Вы должны быть осторожны с покупками своих пользователей, чтобы они не вели себя в вашем приложении так же, как и в любом другом, чтобы вы не потеряли их доверие (и будущие продажи!)
У любого пирата есть взломанный iPhone. Любое взломанное устройство предоставляет полный доступ к файловой системе с помощью таких инструментов, как PhoneDisk и т.д. Любой доступ к файловой системе позволяет людям изменять значения в .plist файле ваших приложений
Игра окончена.
Теперь, это не тривиально, чтобы обернуть это для скриптовых детей, но опять же, это не так сложно.
У меня нет ответа, но кажется, что редактировать ваш файл plist динамически невозможно, если я доверяю этой теме :
Вы не можете редактировать файл info.plist динамически. Когда вы отправляете свое приложение в App Store, ваш набор приложений, который включает info.plist, не может измениться, потому что подпись создается , когда вы скомпилировать ваше приложение на основе пакета.
Почему бы вместо того, чтобы беспокоиться о файле Info.plist, просто не задать предпочтение? Где-то в вашем коде это даст вам логическое значение:
[[NSUserDefaults standardUserDefaults] boolForKey:@"someKey"];
Если значение не существует, результатом будет nil
. Этот код устанавливает значение:
[[NSUserDefaults standardUserDefaults] setBool:YES forKey:@"someKey"];
Кроме того, эти значения будут скопированы в iTunes, поэтому, если пользователь перенесет свою резервную копию на новый iPhone или просто восстановит из резервной копии, значения будут восстановлены.