От бесплатной покупки до покупки в приложении swift / Приложение для iOS

#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 Нет проблем, теперь, когда вы затронули эту тему, я подумываю о том, чтобы сделать что-то подобное с одним из моих собственных приложений, чтобы увеличить количество загрузок и получить импульс.