#ios #swift #in-app-purchase #app-store
#iOS #swift #покупка в приложении #app-store
Вопрос:
Я выпустил приложение для App Store, а также несколько обновлений для него. В настоящее время приложение является бесплатным. Я планирую, что это будет бесплатно для скачивания, но с ограниченным использованием. С помощью покупки в приложении пользователь может разблокировать неограниченную версию.
Поэтому я хочу, чтобы существующие пользователи могли пользоваться приложением по-прежнему бесплатно, но у новых пользователей будет ограниченное использование, если они не купили неограниченную версию через IAP. Итак, как мне следует подойти к этому сценарию? Я прочитал несколько статей о получении квитанции app Store и чтении original_app_version, но здесь немного заблудился. Это единственный путь?
Приветствую, JM
Ответ №1:
Правильным решением было бы полагаться на оригинальную версию приложения. Таким образом, от ваших пользователей не требуется никаких действий (как и следовало ожидать каждому пользователю), и вам не нужно объяснять им, почему они теперь должны что-то покупать, это бесплатно. Также как насчет пользователей, которые в настоящее время не установили ваше приложение или не используют его на этапе переключения?
Использование оригинальной версии приложения гораздо надежнее и удобнее для вас и ваших пользователей. Кроме того, вы можете пропустить этап переключения и начать напрямую зарабатывать на новых пользователях.
Поскольку вы хотите интегрировать покупку в приложении, вам все равно придется научиться работать с квитанцией. Так почему бы не сделать это с самого начала.
Как мне получить доступ к квитанции и получить оригинальную версию приложения?
Моя рекомендация для доступа к квитанции — TPInAppReceipt. Его легко интегрировать, и он регулярно обновляется. В вашем компоненте для подтверждения получения и покупок вам нужно всего лишь выполнить:
do {
/// Initialize receipt
let receipt = try InAppReceipt.localReceipt()
let originalAppVersion = receipt.originalAppVersion
if Float(originalAppVersion) < YOUR_LATEST_FREE_VERSION {
// unlock all features
}
} catch {
// handle no receipt error
}
Комментарии:
1. Да, это правда. Как вы упомянули, в 1-м кандидате на решение есть некоторые недостатки. Благодарим вас за рекомендацию получить доступ к квитанции. Я тоже проверю это. До сих пор я старался избегать использования какого-либо стороннего кода…
2. Кстати, было ли так, что номер сборки фактически сравнивался, а не фактическая версия приложения? В настоящее время мои номера сборок не уникальны, но поскольку теперь у меня все выпущенные версии помечены как build ‘1’ -> Позже я мог бы начать увеличивать его в каждом выпуске.
3. Поле orignalAppVersion в квитанции соответствует значению CFBundleVersion (в iOS) или CFBundleShortVersionString (в macOS) в файле Info.plist при первоначальном совершении покупки. Вы можете установить это значение на все, что захотите. Мы используем количество коммитов
Ответ №2:
Что я хотел бы сделать, так это настроить покупку в приложении сейчас, но сделать ее бесплатной. Это позволит существующим пользователям приобретать приложение бесплатно. Затем, в какой-то момент в будущем, измените цену на любую, какую захотите, и пользователи, которые уже приобрели ее бесплатно, смогут просто восстановить покупку позже, если им когда-нибудь понадобится, без необходимости платить за нее.
Комментарии:
1. Приятно! На самом деле это было бы очень простым решением! Спасибо 🙂
2. @jmaggis Нет проблем, теперь, когда вы затронули эту тему, я подумываю о том, чтобы сделать что-то подобное с одним из моих собственных приложений, чтобы увеличить количество загрузок и получить импульс.