Подтвердить что ты не робот

Преобразование существующего платного приложения iOS в модель freemium с покупкой в ​​приложении

В настоящее время у меня есть платное приложение в магазине. Apple также не предоставила версию "lite", поэтому у меня нет выбора, кроме как обновить текущую платную версию до модели freemium (с покупкой приложения). У меня возникла проблема не потерять функциональность для пользователей v1, которые приобрели приложение в первый раз.

Есть ли способ определить, обновлено ли приложение из ранее установленной версии, чтобы я мог разблокировать оплаченные части приложения?

Два похожих вопроса (от нескольких месяцев назад):

Переход существующего платного приложения на бесплатную версию с покупкой приложения

iPhone + обновление существующего платного приложения в магазине приложений для бесплатного приложения с покупкой приложения + о клиентах, которые уже приобрели платное приложение

4b9b3361

Ответ 1

В iOS7 приложение iOS может проверить получение магазина приложения, которое содержит дату загрузки приложения. Используя эту дату донагрузки, вы можете определить, покупается ли ранее клиент или нет.

Ответ 2

Теперь есть одобренный Apple способ сделать это как на iOS, так и на macOS. Исходную загруженную версию приложения можно получить из квитанции, используя информационный ключ Original Purchased Version. Затем вы можете решить, следует ли разблокировать функции, если эта версия предшествует переключению на IAP.

Например, как только вы получили информацию о квитанции:

NSArray *versionsSoldWithoutIAP = @[@"1.0", @"1.1", @"1.2", @"1.3"];
NSString *originalPurchasedVersion = [receiptInfoDict objectForKey:@"Original Purchased Version"];
for (NSString *version in versionsSoldWithoutIAP) {
    if ([version isEqualToString:originalPurchasedVersion]) {
        // user paid for the currently installed version
    }
}

Подробнее см. видео WWDC 13 Использование квитанций для защиты ваших цифровых продаж. В 5:40 ведущий комментирует: "Я думаю, что самое интересное, что в квитанции в этом году, особенно для вас, ребята, если у вас есть платное приложение в магазине, мы включили информацию в квитанцию, которая позволит вам сделайте переход от платного приложения к бесплатному приложению с покупками в приложении, не оставив позади всех клиентов, которые уже заплатили за ваше приложение".

Ответ 3

Во-первых, я просто хочу сказать, что я лично считаю, что модель freemium великолепна. Для многих разработчиков он разработал очень. Людям нравится скачивать бесплатные приложения и делать это по собственной прихоти, но уделять гораздо больше внимания приложению, прежде чем тратить $0,99 (что из-за эффекта бесплатно - для получения дополнительной информации об этом, зайдите в книгу Дэн Ариэли Предсказуемо Irrational)

Для получения дополнительной информации о freemium, google it - было написано много статей об успехе.


Хорошо, вернемся к актуальному вопросу:

Вот пара способов, которыми вы можете справиться с подобной ситуацией, хотя, к сожалению, ни одна из них не является доказательством дурака.

  • Лучшее решение, вероятно, было бы для ваших пользователей иметь учетные записи. Не зная специфики вашего приложения, я не могу сказать, соответствуют ли учетные записи пользователей для вашего приложения. Учетные записи пользователей, хранящиеся на вашем сервере, имеют много дополнительных преимуществ, включая управление пользователями и отслеживание покупок, сделанных пользователем. Это позволит пользователям, которые удаляют приложение, а затем переустанавливают его или получают новое устройство для сохранения приобретенного контента. Если вы используете покупку в приложении, вы должны проверить покупку на своем собственном сервере (или с Apple), что может сделать система управления пользователями на сервере. Если вы полностью задумаетесь о создании собственного сервера управления пользователями, посмотрите Parse. Его мертвый просто создать замечательный сервер (на самом деле бесплатный)
  • iCloud Key/Value тип системы. Я не очень хорошо знаю, как это будет работать, поэтому я перейду.
  • Другое, не так простое решение (но гораздо быстрее/проще реализовать) - использовать NSUserDefaults. Вы можете сохранить объект, когда пользователь совершает покупку, или с датой, когда пользователь устанавливает ваше приложение. Затем, если вы выпустите обновление, конвертирующее ваше приложение в freemium. Затем в новом обновлении проверьте, какие покупки сделали пользователь, или дату, когда они его установили, и отреагируйте соответствующим образом. Для получения информации о том, как это сделать с NSUserDefaults, ознакомьтесь с моим ответом на другой вопрос об использовании этого: NSUserDefaults и версии приложений. Но это решение представляет собой следующие подводные камни:

  • Если пользователь удаляет ваше приложение, NSUserDefaults теряются навсегда

  • Если пользователь не установил обновление, настроив систему NSUserDefault, но затем установил обновление с новой моделью freemium, приложение обработает их так, как будто они не приобрели контент.

В летнее время это сложный вопрос, при этом не так много простых/идеальных вариантов.

В любом случае,

Надеюсь, что это помогло!

Ответ 4

Я имею дело с тем же и придумал следующую идею: создайте версию freemium под новым именем и идентификатором приложения. Храните существующее платное приложение в магазине приложений, но повысите цену до чего-то абсурдного и четко укажите в описании, которое приложение поддерживает, чтобы поддерживать поддержку существующих пользователей, и что новые пользователи должны попробовать версию freemium.

Существующие платные пользователи не потеряют поддержку своего существующего приложения и могут удалить и установить любое время без повторной покупки.

Вам также не придется обновлять старое платное приложение. Просто сохраните его в магазине приложений.

Недостатком является то, что существующие платные пользователи не смогут плавно переходить на версию freemium, чтобы получить дополнительные возможности, которые вы добавляете в будущем, без повторной оплаты за то, что у них уже есть.

По-прежнему пытаюсь решить, будет ли это работать для меня, но это может быть хорошим вариантом для других. Комментарии оценены.

Ответ 5

Я думал об этой проблеме уже некоторое время. У меня есть значительное количество клиентов, которые заплатили за мое (в App Store) приложение с высокой ценой за нишу, и мне не хотелось бы говорить им о повторной покупке, поскольку я планирую перейти на модель покупки в приложении.

Идея, с которой я столкнулся (и я спрошу Apple о том, является ли она законной), заключается в том, чтобы поэтапно отключить текущее платное приложение, но отправит последнее обновление для него, что позволяет "разблокировать" покупки In-App нового приложения на основе модели In-App. Я думал о схеме ответа на вызов:

  • Пользователь установил платное приложение на своем устройстве.
  • Пользователь устанавливает новое приложение In-App и открывает его. Новое приложение обнаруживает платную версию и предлагает разблокировать покупки In-App (только на этом устройстве и до тех пор, пока приложение не будет удалено).
  • Новое приложение генерирует nonce, подписывает его и вызывает с ним старое приложение через схему URL
  • Старое приложение расшифровывает nonce, добавляет +1 к нему и подписывает его снова. Позволяет вернуться к новому приложению по схеме URL.
  • Новое приложение проверяет отмену и отменяет функции

Схема может быть легко реализована с использованием предварительно разделяемого ключа. Это, конечно, слабость на устройствах, разбитых по тюрьме, но тогда у каждого приложения, хранящего поступления от In-App, есть эти проблемы.