Вопрос для инди разработчики Mac там:
Как я реализую пробную версию с 30 дневным временем незлым способом? Помещение счетчика в prefs не является опцией, начиная со стирания prefs один раз в месяц не проблема для среднего пользователя. Помещение счетчика в скрытом файле где-нибудь звучит немного изворотливым - как пользователь, которого я ненавижу, когда приложения опрыскивают мой жесткий диск случайными файлами. Какие-либо идеи?
Этот вопрос неоднократно появляется в списке рассылки какао-дева, и консенсусный ответ всегда делает самую простую вещь. Решительные хакеры сломают все, кроме самого завышенного решения. И в любом случае они вряд ли заплатят за программное обеспечение. Вперед к решению 80/20: простое решение, которое дает 80% эффекта за 20% усилий. В этом случае положите что-нибудь в ~/Library/Application Support/your.app.com/. Вы можете назвать файл чем-то невинным, если захотите немного запутать. Использовать настройки по умолчанию пользователя тоже легко.
Что бы вы ни делали, не используйте MAC-адрес или другой аппаратный идентификатор . Пользователи с сетевым домашним каталогом (например, в настройках общей лаборатории) будут вас ненавидеть. Использование аппаратных идентификаторов - это просто зло.
Если кто-то настолько влюблен в Вашу программу так сильно , что готов нарушить Ваши пробные лимиты, позвольте ему это сделать. Свободные программы ничего вам не стоят, а их добрая воля (и, возможно, рекомендации другим) стоит очень дорого.
Наконец, напишите программы, которыми люди хотят пользоваться, и оцените их по достоинству. Если ваша цена хороша и люди хотят пользоваться ею, большинство людей заплатят за нее.
.я бы предложил реализовать несколько вещей, которые менее навязчивы и позволяют избежать того, чтобы обычный пользователь либо деинсталлировал, либо покупал в течение одного месяца.
Дополнительно внедрите эти вещи в конфигурационный файл.
Зарегистрировав метку времени, вы можете избежать этих обходных путей:
Убедитесь, что ваше приложение не работает без конфигурационного файла. Таким образом, в сущности, вы посылаете зашифрованный серийный номер в файле или, возможно, при вводе серийного номера вы можете создать файл. Так как серийный номер уже имеет дату истечения срока действия, пользователь не может повторно использовать серийный номер.
Я бы не советовал интернет путь, потому что люди злятся, когда приложение пытается подключиться к серверу каждый раз. К тому же, могут возникнуть подозрения, что вы пытаетесь отправить некоторые личные данные пользователей на ваши сервера.
Я бы хотел сказать одну вещь: Независимо от того, насколько сильна антипиратская техника, которую вы используете, кто-то обязательно ее нарушит. Вы делаете свое приложение не для этих ребят. Вы делаете свое приложение для людей, которым нравится ваше программное обеспечение, и они с удовольствием его купят. Так что, не теряйте своих настоящих клиентов, делая ваше приложение слишком навязчивым в течение пробного периода. Одна из мыслей также говорит о том, что если ваше программное обеспечение взламывается, это означает, что оно также становится популярным. Опять же, мнения могут расходиться, и не хотелось бы отступать от этих вопросов.
.Считайте UUID с какого-то аппаратного компонента и проверьте в веб-сервисе, установлено ли уже ваше программное обеспечение в течение 30 дней после запуска программы?
Мы сделали это для одного из наших клиентских приложений. Конечно, это было сделано в .NET для Windows, но те же принципы можно применить и в MAC.
Как уже упоминалось, если у вашего пользователя есть доступ в интернет (или должен быть), то вы можете иметь веб-службу, которая зарегистрирует какой-нибудь уникальный идентификатор с компьютера-хоста с пробной датой начала (MAC-адрес хороший). Таким образом, пользователь не сможет на самом деле обмануть программу, если он не будет рисковать своей сетевой картой каждый месяц.
Теперь, если пользователь по каким-то причинам не имеет доступа к Интернету, вы можете либо отключить программу до тех пор, пока он не подключится к ней, либо воспользоваться льготным периодом. В этом файле записывается последний раз, когда приложение было открыто. Когда Интернет недоступен, мы перестаем записывать время (мы все равно что-то записываем в него, чтобы пользователь не заметил, что файл не обновляется).
Если пользователь заметит, что в этом файле содержится информация, и удалит его (или изменит его, используя имеющуюся у него копию), то необходимо найти способ это компенсировать. Вы можете получить другое значение в другом конфигурационном файле (всегда зашифрованном) и проверить его целостность. Что делать, если вы обнаружите, что пользователь пытается обмануть, зависит от вас, но мы заставляем пользователя подключиться к Интернету, чтобы он заработал.
Для программы это может быть чересчур, но она определенно работает.
Наименьшее зло - просто попросить пользователя удалить программу через месяц или заплатить за нее ;)
.Рассмотрим это. Сколько потенциальных пользователей вашего программного обеспечения, просто зудят, чтобы использовать его в течение следующих 30 дней?
Я подозреваю, что гораздо более обычный случай: Пользователи сталкиваются с новым пакетом программного обеспечения, который решает проблему, которую они имели на таком сайте, как lifeehacker.com. программное обеспечение загружается, с ним кратко проигрывается, а затем откладывается в сторону. Возможно, его mp3 копирования программного обеспечения, и они не имеют никаких компакт-дисков, чтобы рип в то время. Или они просто заняты в тот день, но они получат круглый обзор этого программного обеспечения "скоро".
30 дней прошло. Возможно, больше. Только тогда они покупают компакт-диск, сталкиваются с какой-то "проблемой" и запоминают, "ага, тересы той пробной версии, которую я скачал! Куда я ее положил? Это не имеет значения. Не будучи использованной, "пробная" версия вышла из строя.
Я не могу сосчитать количество программных инструментов, которые упали в это ведро для меня. День, когда программное обеспечение рекомендуется мне, день, когда я вижу положительный отзыв о спасателе, НИКОГДА в день, когда у меня есть необходимость - или даже время - использовать / анализировать программу, которую я загрузил и установил.
Срок действия программы истекает через 30 календарных дней - это плохо, потому что что если кто-то скачает ее, запустит один раз, а потом решит, что оценит ее через месяц? В следующий раз, когда они запустят его, через месяц, они скажут, что срок его действия истек.
Я бы ограничился 14 запусками, или что-то вроде 120 минут использования.
Что касается реализации, файл (скрытый или нет) в папке "Предпочтения" пользователя, с обфусцированным именем, кажется, лучший вариант. Файл не случайно располагается на жестком диске, но пользователь не может легко понять, какой файл удалить.
Во время загрузки предоставьте им пробный серийный номер. Когда они вводят серийный номер, пусть он подключится к вашему серверу и получит информацию об истечении срока действия (хранящуюся и зашифрованную локально, чтобы предотвратить любые дополнительные звонки по телефону домой).
Поступая таким образом, вы усложняете им обход вашего 30-дневного окна, поскольку дата истечения срока действия постоянно хранится на сервере. Вы можете настроить его так, чтобы удаление ключа и его повторный ввод заставляли ваше приложение снова подключаться к вашему серверу и загружать тот же срок действия, что и раньше.
Или вы можете сделать это так же, как WinZip (или это делал раньше?): Предоставьте 30-дневную пробную версию и просто всплывающее окно при каждой загрузке, показывающее, как долго вы его используете, и ссылки для покупки .