Нужно реализовать в виде Dialog (а не Activity!) на языке Java (а не котлине!) диалог по продаже подписок в приложении, с переменным количеством инаппов. Логику покупки инаппов реализовывать не нужно, это будет делать наш класс, нужно просто перехватить нажатие кнопки покупки. Использовать WebView для чего-либо запрещено, все должно быть сделано на API(то есть используя xml с layout) Надо реализовать PaywallDialog. Наш код будет вызывать PaywallDialog.run() для показа диалога, выставив сначала значения статичных членов класса. 1.0 Выглядеть примерно должно вот так adapty.io/mobile-paywall-... (но там не хватает кнопки restore purchases) или как-то так adapty.io/mobile-paywall-... 1.1 Диалог (помимо возможности купить подписку) не дает юзеру пользоваться прогой некоторое время (30 секунд – определяется членом класса seconds_to_block_use). В течение этого времени закрыть диалог никакой возможности (кроме как покупкой товара) нет. 1.2 Где-нибудь внизу в диалоге показывается локализуемая надпись "Purchase subscription or wait to return to the app:" 0:28 (где 0:28  – это таймер, уменьшающийся каждую секунду и обновляемый раз в секунду). После достижения таймером 0 надпись исчезает, и у диалога появляется крестик в правом верхнем углу, (и заместо этой надписи – кнопка Close), нажатие на которые закрывает диалог и приводит к вызову backend.onTmeout() 1.3 когда юзер переключается в другую прогу, вызывается on_app_suspended() когда возвращается - on_app_resumed() чтобы таймер не засчитывал время, когда наша прога в фоне 1.4 Если при вызове конструктора seconds_to_block_use == 0 то таймер обратного отчета запускать не надо, кнопку и крестик для закрытия диалога показывать сразу же. Это значит что прога уже показала юзеру неотключаемую рекламу и юзер может сразу закрывать это окно. 2.1 Если юзер нажмет кнопку EULA – показать в новом диалоге текст из eula_text (видимо старый со списком товаров придется скрыть, а при закрытии юзером этого диалога с текстом EULA – показать диалог со списком товаров. Новый диалог с текстом EULA – должен иметь соответствующий заголовок ("EULA") 2.2 Если юзер нажмет кнопку Privacy – все то же самое как в п2.1 но используем privacy_policy_text 3.1 Для каждого объекта в List products показываем блок с кнопкой которая приводит к вызову purchase() данного товара. Диалог скрывать не надо при вызове этого метода. 3.2 Блоки для товаров показывать строго в порядке в переданном списке (то есть кнопка пожизненной лицензии может быть и в середине или в самом начале) 4.1 Цена недельной подписки может быть не первым элементом списка. 4.2 Если статическая переменная show_savings == true то для каждого товара показывать в красивом виде экономию в % относительно цены одной недели ("Save 37%"), и цену одной недели ("Only $2.33 per week")(см примеры из п1.0). Для пожизненной лицензии – этого не показывать, конечно. Соответственно в конструкторе класса найти в списке недельную цену  чтобы от нее расчитывать выгоду. Цену брать из поля price_micros 5.1 Диалог должен иметь заголовок и многострочный текст перед списком товаров (plain text без форматирования). Оба – определяемые в layout, но с возможностью переопределить через статические переменные title_text и preface_text (если они не null) 6.1 Все строки которые видит юзер должны быть локализуемыми 6.2 Диалог должен приятно смотреться на планшетах и смартфонах, в портретной и альбомной ориентации 6.3 Все используемые цвета (фона, текста, кнопок) должны быть именованные, чтобы их можно было подменять через res\values\colors.xml

Похожие

Посмотрите другие вакансии

Вот самые похожие вакансии

Новый поиск