Я сейчас работаю над этим.
Что я делаю, я генерирую случайный код / guid и сохраняю его в базе данных моего веб-сервиса. Тогда дайте этот код тому, кому вы когда-либо захотите. Они вводят этот код, и он вызывает веб-сервис, передающий код и UDID устройства. WebService возвращает другой код, указывающий, был ли этот промокод действительным. Если он действителен, приложение добавит эту покупку в NSUserDefaults или в базовые данные (однако вы отслеживаете покупки).
Если у вас не запущен и не запущен сервер (скажем, контент уже находится в комплекте приложений), и вы не хотите, чтобы сервер потребовал от вас создания алгоритма для генерации ключей, которые проверяет ваше приложение. Однако это гораздо менее надежно. Использование веб-службы позволяет предотвратить распространение 1 рабочего ключа между всеми пользователями, поскольку вы можете привязать 1 промо-код к 1 устройству.