Преобразуйте существующее платное приложение iOS в модель Freemium с покупкой в ​​приложении - PullRequest
46 голосов
/ 17 сентября 2010

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

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

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

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

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

Ответы [ 5 ]

20 голосов
/ 18 сентября 2013

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

19 голосов
/ 05 сентября 2016

Существует одобренный 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 ведущий комментирует: «Я думаю, что самая захватывающая вещь в чеке в этом году, особенно для вас, ребята, если у вас есть платное приложение в магазине, это то, что мы включили в чек информацию, которая позволит перейдите от платного приложения к бесплатному приложению с покупками в приложении, не оставляя позади всех клиентов, которые уже заплатили за ваше приложение. "

11 голосов
/ 26 февраля 2011

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

Для получения дополнительной информации о Freemium, Google это - было множество статей написано об успехе этого.


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

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

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

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

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

В общем, это сложный вопрос, с небольшим количеством простых / совершенных вариантов.

Во всяком случае,

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

2 голосов
/ 06 июня 2013

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

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

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

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

2 голосов
/ 21 декабря 2012

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

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

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

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

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

...