Нет, это небезопасно .
Содержимое NSUserDefaults хранится в виде простого текста. К ним можно получить доступ и изменить их с помощью таких инструментов, как iExplorer . Это также работает на устройствах, которые не были взломаны.
Это означает, что если вы сохраните информацию о покупке в NSUserDefaults, пользователи смогут разблокировать ваш контент, не совершая фактическую покупку.
Чтобы сохранить флаги так, чтобы их было нелегко «взломать», вы можете сделать одно из следующих действий:
Сохраните дополнительный соленый хеш вашей сохраненной информации. Используйте хеш для проверки того, что пользователь не изменил информацию. Вы можете найти реализацию этой концепции здесь .
Сохраните флаги в цепочке для ключей. Подробнее читайте в Apple Руководство по программированию Keychain Services . Вы можете найти несколько реализаций этой концепции на GitHub, например, Lockbox .
Обновление: Начиная с iOS 8.3, доступ к изолированной программной среде приложения несколько ограничен. Хотя это добавляет некоторую безопасность, я все равно не рекомендую использовать NSUserDefaults, так как доступ к песочнице по-прежнему возможен для взломанных устройств, приложений, в которых включен общий доступ к файлам iTunes , и, конечно, устройств, работающих под управлением старых версий iOS.