Реализация 30 [закрытых] пробных версий дневного времени

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

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

46
задан Jonas 22 February 2011 в 13:28
поделиться

8 ответов

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

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

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

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

.
60
ответ дан 26 November 2019 в 20:14
поделиться

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

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

Дополнительно внедрите эти вещи в конфигурационный файл.

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

Зарегистрировав метку времени, вы можете избежать этих обходных путей:

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

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

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

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

.
24
ответ дан 26 November 2019 в 20:14
поделиться

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

1
ответ дан 26 November 2019 в 20:14
поделиться

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

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

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

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

Для программы это может быть чересчур, но она определенно работает.

2
ответ дан 26 November 2019 в 20:14
поделиться

Наименьшее зло - просто попросить пользователя удалить программу через месяц или заплатить за нее ;)

.
4
ответ дан 26 November 2019 в 20:14
поделиться

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

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

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

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

11
ответ дан 26 November 2019 в 20:14
поделиться

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

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

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

7
ответ дан 26 November 2019 в 20:14
поделиться

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

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

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

2
ответ дан 26 November 2019 в 20:14
поделиться
Другие вопросы по тегам:

Похожие вопросы: