Хотите улучшить этот вопрос? Переформулируйте вопрос так, чтобы он был сосредоточен только на одной проблеме.
Закрыт 4 года назад .
Есть идея для приложения и хотелось бы сделать 30 дней пробную триал версию с возможностью купить полную версию по истечению срока. Как это можно реализовать?
Отслеживать
13.6k 12 12 золотых знаков 43 43 серебряных знака 72 72 бронзовых знака
задан 23 окт 2018 в 13:18
336 1 1 серебряный знак 11 11 бронзовых знаков
1 ответ 1
Сортировка: Сброс на вариант по умолчанию
Вариантов много, информации мало. Например, как будет происходить оплата (разовый платеж или подписка) (прием оплаты через playmarket или сторонний сервис). С конкретным примером не помогу, но как варианты:
1) Сохраняешь в preferences при первом запуске дату, после при каждом запуске сравниваешь, если прошло более 30 дней урезаешь функционал, либо вообще оставляешь только вариант с приобретением.
2) Есть ли серверная часть для приложения? Информацию можно хранить там например.
Установка и активация триальной версии Снегопата
3) Необходимо больше информации, т.к. реализация зависит от требований.
Не уверен что есть конкретный пример, т.к. все зависит от требований и условий которые сильно влияют на конечный результат.
P.S. Как работать с playmarket не представляю даже, т.к. сам принимаю оплату через агрегатора и вся информация о продлении подписки находится на сервере. В приложении же сложная логика ограничения/отключения PRO функционала пока не будет продлена подписка опять же через приложение.
Еще важный момент, не уверен точно, но попадалась информация, что не каждое приложение можно монетезировать сторонними способами в обход платежных систем google. Не гарантирую актуальности следующей информации:
По правилам Google Play и AppStore разработчик мобильного приложения имеет право принимать платежи с использованием сторонних платежных систем только для продажи нецифровых товаров, или цифровых товаров, которые можно использовать вне приложения.
UPD: ВАЖНО. В первом варианте сбрасывается до триала простой очисткой данных и кэша приложения. Т.е. опять же, степень «заморочитости» зависит от требований. Лучше переформулировать вопрос.
Источник: ru.stackoverflow.com
Создание триальных приложений в Delphi
Если Вы делаете коммерческое или шароварное приложение, Вы должны защитить Ваши приложения от незаконного использования. Имеется много способов защиты приложений Delphi, но как сделать крутую защиту, да еще простую в разработке?
Приложение за пару секунд на Java
Только одна программа за сеанс Windows
Если Вам нужно позволить пользователю выполнить Ваше приложение только один раз за сеанс Windows, Вы можете использовать следующую «уловку»:
Для простоты форма будет называться FormMain.
Для создания приложения TrialSessionWindows, Вы должны вручную отредактировать исходный текст проекта (DPR).
Использование функций API GlobalFindAtom и GlobalAddAtom, Вам потребуется использование модуля Windows в секции uses.
Когда пользователь запускает приложение, код проверяет создана ли строка УНИКАЛЬНЫЙ-ТЕКСТ в глобальной таблице атомов Windows. Если атом не найден, приложение запускается, а строка добавляется в таблицу атомов.
Когда пользователь запускает приложение второй раз, выскакивает предупреждение Защита триальной версии, а приложение прекращает работу, даже не запустившись.
Пользователь может только запустить это приложение во второй раз, когда перезапустит Windows (когда будет очищена глобальная таблица переменных атомов).
program OncePerSessionTrialTest; uses Windows, Forms, mainUnit in ‘mainUnit.pas’ ; begin Application.Initialize; if 0 = GlobalFindAtom(‘УНИКАЛНЫЙ-ТЕКСТ’) then begin GlobalAddAtom(‘УНИКАЛЬНЫЙ-ТЕКСТ’) ; Application.CreateForm(TFormMain, FormMain) ; Application.Run; end else begin Application.MessageBox( ‘Вы можете выполнить триальную версию ‘ + #13 + ‘этого приложения ‘ + #13 + ‘только один раз за сеанс Windows!’, ‘Защита Триальной Версии’) ; end; end.
Примечание: В Windows таблица атомов — это определенная системой таблица, которая хранит строки и соответствующие идентификаторы. Приложение помещает строку в таблицу атомов и получает 16-разрядное целое число, которое называется атомом, который может использоваться для обращения к строке.
Источник: codeplace.ru
Как сделать триальную программу
LoadVariable(«TrialProject»,»number»)
If (number <> 0) Then
Else
number=1
SaveVariable(«TrialProject»,»number»)
End
LoadVariable(«TrialProject»,»number»)
A = 20-number
If (A=0) Then
Message(«Срок использования программы истёк!»,»»)
Exit()
End
Осталось запусков = 20-number
number = number+1
SaveVariable(«TrialProject»,»number»)
Message(«Внимание! Вы используете демонстрационную версию!»,»Осталось запусков»)
Скрипт нужно написать в старте первой страницы. Имя ключа TrialProject
замените на то, что вам нужно.
По истечении 20 запусков программа больше работать не будет. Чтобы сбросить
блокирование, нужно найти в реестре ключ с именем TrialProject и удалить его.
В сущности, обычный юзер никак не сможет догадаться, как это сделать. И даже
немного продвинутый, но не знакомый с ММВ, тоже. Откуда ему знать, какой ключ
надо искать в реестре?
Вот Ещё один скрипт для создания триальной программы
CurrentYear=CBK_Year
CurrentMonth=CBK_MonthNum
CurrentDay=CBK_DateNum
LoadVariable(«Year»,»Year»)
LoadVariable(«Month»,»Month»)
LoadVar iable(«Day»,»Day»)
If (Year=0 Day=0) Then
SaveVariable(«Year»,»CurrentYear»)
Year=CurrentYear
SaveVariable(«Month»,»CurrentMonth»)
Month=CurrentMonth
SaveVariable(«Day»,»Cu rrentDay»)
Day=CurrentDay
End
Year=CurrentYear-Year
If (Year>=2) Then
Exit()
End
If (Year=1) Then
Month=Month-CurrentMonth
If (Month<>11) Then
Exit()
Else
Day=31-Day+CurrentDay
If (Day>15) Then
Exit()
End
End
End
If (Year=0) Then
Month=CurrentMonth-Month
If (Month>=2) Then
Exit()
End
If (Month=1) Then
If (CurrentMonth=5 | CurrentMonth=7 | CurrentMonth=10 | CurrentMonth=12) Then
Day=30-Day+CurrentDay
If (Day>15) Then
Exit()
End
End
If (CurrentMonth=2 | CurrentMonth=4 | CurrentMonth=6 | CurrentMonth=8 | CurrentMonth=9 | CurrentMonth=11) Then
Day=31-Day+CurrentDay
If (Day>15) Then
Exit()
End
End
If (CurrentMonth=3) Then
Day=28-Day+CurrentDay
If (Day>15) Then
Exit()
End
End
End
If (Month=0) Then
Day=CurrentDay-Day
If (Day>15) Then
Exit()
End
End
End
If (Year Exit()
End
Источник: mmbuilder.ru