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

Внедрение 30-дневной пробной версии

Вопрос для разработчиков indie Mac:

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

4b9b3361

Ответ 1

Эта проблема неоднократно повторяется в списке рассылки cocoa -dev, и консенсусный ответ всегда делает самое простое. Определенные хакеры разрушат все, кроме самого переработанного решения. И они вряд ли будут платить за программное обеспечение в любом случае. Пойдите для решения 80/20: простое решение, которое получает эффект 80% для 20% усилий. В этом случае, помещая что-то в ~/Library/Application Support/your.app.com/. Вы можете назвать файл чем-то невиновным, если хотите немного запутать вещи. Использование пользовательских настроек по умолчанию также очень просто.

Что бы вы ни делали, не используйте MAC-адрес или другой идентификатор оборудования. Пользователи с сетевым домашним каталогом (например, в настройках общей лаборатории) будут вас ненавидеть. Использование аппаратных идентификаторов - это просто зло.

Если кто-то влюблен в вашу программу настолько, что они готовы нарушить ваши пробные лимиты, пусть они. Бесплатное программное обеспечение ничего не стоит, и их хорошая воля (и, может быть, рекомендация для других) стоит много.

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

Ответ 2

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

  • Используйте специальную серию пробных серийных номеров, в которых хранится дата истечения срока ее действия. Вы можете использовать encrpytion для хранения даты истечения срока действия в серийном номере.
  • Теперь создайте файл конфигурации, который хранит данные в encypted формате и содержит серийный номер.

Кроме того, реализуйте эти вещи в файле конфигурации.

  • Записывать время/дату при каждом запуске приложения.
  • Обратите внимание, что продолжительность приложения времени была открыта.

Выполняя ведение журнала временных меток, вы можете избежать этих обходных решений:

  • Если пользователь меняет дату компьютера, вы должны знать, что приложение уже было запущено в этот день. Скажите, что пользователь запускал приложение в течение 1 и 3 дней. Теперь через 30 дней отменяет дату и устанавливает ее на 2-й месяц. Теперь по файлу конфигурации вы бы знали, что приложение уже работает на 1 и 3, поэтому пользователь набрал даты на компьютере.
  • Разрешается каждый раз, когда пользователь запускает ваше приложение с первой даты установки до 5-го числа месяца. Зарегистрировав время работы вашего приложения, вы увидите, что если общее количество часов в сутки превышает 24, тогда пользователь обманывает.

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

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

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

Ответ 3

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

Я подозреваю, что гораздо более нормальный случай: пользователи сталкиваются с новым программным пакетом, который решает проблему, которая была у них на сайте, например, lifehacker.com. программное обеспечение загружается, воспроизводится ненадолго, а затем откладывается. Возможно, это программное обеспечение для размножения mp3, и у них нет CD-дисков для копирования в это время. Или они просто заняты в тот день, но они скоро приступят к пересмотру этого программного обеспечения.

Проходит 30 дней. Наверное, больше. Только тогда они покупают компакт-диск, сталкиваются с какой-то "проблемой" и помнят, "ага, theres, что пробная версия, которую я загрузил! Где я снова это сделал? Это не имеет значения. Не будучи использованным, "судебное разбирательство" приурочено.

Я не могу подсчитать количество программных инструментов, которые попали в это ведро для меня. В тот день, когда мне рекомендован кусок программного обеспечения, в тот день, когда я вижу положительный отзыв о Lifehacker, НИКОГДА не было ни дня, которое мне действительно нужно - или даже времени - использовать/анализировать программу, которую я загрузил и проиндексировал.

Ответ 4

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

Я бы хотел ограничить 14 запусков или что-то вроде 120 минут использования.

Что касается реализации, то файл (скрытый или нет) в папке "Настройки" пользователя с обфускационным именем кажется лучшим способом. Файл не помещается случайным образом на жесткий диск, но пользователь не может легко определить, какой файл удалить.

Ответ 5

Самый злой способ - попросить пользователя удалить программу через месяц или заплатить за нее;)

Ответ 6

Мы сделали это для одного из наших клиентских приложений. Конечно, это было сделано в .NET для Windows, но те же принципы могут применяться в MAC.

Как упоминается eckesickle, если у вашего пользователя есть доступ к Интернету (или должен), то у вас может быть веб-служба, которая зарегистрирует уникальный идентификатор с главного компьютера с пробной датой начала (MAC-адрес является хорошим), При этом пользователь не может действительно обманывать программу, если только он не рискует своей сетевой картой каждый месяц.

Теперь, если у пользователя нет доступа к Интернету по какой-либо причине, вы можете либо закрыть программу, пока не подключится к ней, либо не используйте льготный период. Этот файл записывает последний раз, когда приложение открыто. Когда Интернет недоступен, мы перестаем писать время (мы все еще пишем что-то в нем, чтобы пользователь не заметил, что файл не обновляется).

Если пользователь замечает, что этот файл содержит информацию и удаляет ее (или меняет ее с использованием имеющейся у него копии), вам нужен способ борьбы с этим. Вы можете получить другое значение в другом файле конфигурации (зашифрованном всегда) и проверить на согласованность. Что вы делаете, если обнаружите, что пользователь пытается обмануть, зависит от вас, но мы заставляем пользователя подключаться к Интернету, чтобы он работал.

Это может быть излишним для программы, но это определенно работает.

Ответ 7

Во время загрузки предоставьте им пробный серийный номер. Когда они вводят серийный номер, подключите его к серверу и получите информацию об истечении срока действия (запомните и зашифруйте локально, чтобы предотвратить любые дополнительные "домашние звонки" ).

Таким образом, вы делаете это довольно сложно для того, чтобы обойти 30-дневное окно, так как дата истечения срока действия постоянно сохраняется на сервере. Вы можете настроить его, чтобы удалить ключ и снова ввести его, чтобы ваше приложение снова подключилось к вашему серверу и загрузило ту же дату истечения срока действия, что и раньше.

Или вы можете сделать это, как WinZip (или используется для этого?): предоставить 30-дневную пробную версию и просто всплывать экран при каждой загрузке, которая показывает, как долго вы его используете, и ссылки на покупку.

Ответ 8

Раньше я предлагал 30-дневную версию моего приложения для iOS, в которое были встроены дата установки и различные даты записи в файле данных экспорта, который пользователь мог загрузить на свой компьютер.

Если пользователь был cheapskate и просто переустановил Lite Edition и попытался повторно импортировать данные, логика заметила бы, что хотя бы одна из дат была старше 30 дней, и приложение установило бы дату установки на самое раннее такая дата из файла, что снова истекло.

В полном платном издании эта логика не существовала, и файл данных можно было легко импортировать.

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

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

В целом, это была лучшая стратегия для оплаты пользователей.

Ответ 9

Прочитайте UUID от некоторого аппаратного компонента и сделайте проверку против своего веб-сервиса, чтобы узнать, было ли ваше программное обеспечение уже установлено в течение 30 дней после запуска программы?