Бесплатно HTML в APK
← Все шаблоны
💪
Заработок

Шаблон приложения «Фитнес Плюс»

Приложение «тренировка дня» с ежемесячной или годовой подпиской Google Play, строкой о пробном периоде и ссылкой «Управление».

ЗаработокНужен интернет3 функции телефона

✏️ Редактировать и собрать онлайн Открыть на весь экран

Это шаблон в работе. Функции телефона, такие как камера, вибрация и уведомления, работают в приложении, которое вы соберёте.

Функции телефона, которые использует этот шаблон

Они работают через JavaScript-мост FreeApp, который есть в каждом приложении, собранном в Free HTML to APK. В обычном браузере шаблон тоже работает, просто эти вызовы ничего не делают.

Покупки в приложении

FreeApp.billing.*

Всплывающие сообщения

FreeApp.toast()

Короткое встроенное всплывающее сообщение.

Вибрация

FreeApp.vibrate()

Одиночная вибрация (по умолчанию 50 мс) или шаблон [пауза, вибрация, пауза, вибрация…].

Как шаблон их вызывает

const [p] = await FreeApp.billing.products(['premium']);
const monthly = p.offers.find(o => o.basePlan === 'monthly');
FreeApp.billing.buy('premium', { offer: 'monthly' });
if (FreeApp.billing.isOwned('premium')) FreeApp.billing.manageSubscriptions('premium');

Сделайте его своим с помощью ИИ

Скопируйте этот промпт в ChatGPT, Gemini или Claude, замените идею на свою и вставьте ответ обратно в редактор. Он уже объясняет ИИ оболочку приложения и функции телефона.

Показать промпт для ИИ
Build a single-file mobile web app (index.html with inline CSS/JS) for Android WebView.

The app: Fitness Plus — a workout-of-the-day app with timed workouts, free basic workouts and premium workouts unlocked by the subscription premium with base plans monthly and yearly; the paywall shows each plan's price and period in plain words and a free-trial line. Workout-of-the-day app with a monthly or yearly Google Play subscription, free trial line and Manage link.

Requirements:
- Mobile-first, touch-friendly UI (min 44px tap targets), works in portrait, supports light and dark mode.
- Use <meta name="viewport" content="width=device-width, initial-scale=1, viewport-fit=cover"> and pad for env(safe-area-inset-*).
- You may load libraries from a CDN (jsDelivr/unpkg); show a friendly message if the device is offline.

The page runs inside an Android app that injects a native bridge as window.FreeApp. Available APIs:
- FreeApp.billing.{available, products(ids: string[]): Promise<[{id, title, description, type: 'inapp'|'subs', price /* formatted, local currency */, priceMicros, currency, period?, offers?: [{basePlan, offer, tags, phases: [{price, priceMicros, currency, period, cycles}]}], owned, consumable}]>, buy(id, {offer?}): Promise<{id, products, token, orderId, quantity, autoRenewing, alreadyOwned?}> (rejects with err.code: 'cancelled' | 'pending' | 'network' | 'busy' | 'unavailable' | 'developer_error' | 'not_found' | 'already_owned' | 'error'), restore(): Promise<{purchases, owned}>, consume(idOrToken), owned(): string[], isOwned(id): boolean, isAdFree(): boolean, manageSubscriptions(id?), on(cb: (e: {event: 'purchase'|'pending'|'owned'|'failed'|'unavailable', …}) => void)} — Google Play Billing; only present when Purchases is on in the builder. Unlock non-consumables from isOwned()/owned() at startup plus the 'owned' and 'purchase' events (not only in the click handler); grant consumables only in the 'purchase' event, deduplicated by e.token saved in localStorage; use buy()'s promise only for UI; show prices from products(), never hard-coded; say "Payment pending" on 'pending', stay silent on 'cancelled'; always offer a Restore purchases button and, for subscriptions, a Manage subscription link (manageSubscriptions); in a normal browser simulate purchases with a demo store
- FreeApp.toast(message: string): void — short native toast
- FreeApp.vibrate(ms?: number | number[]): void — one-shot buzz (default 50 ms) or an [off, on, off, on…] pattern

Rules for the bridge:
- Always guard calls with `window.FreeApp &&` (or `if (window.FreeApp) { … }`) and provide a browser fallback so the page also works in a normal browser.
- The bridge may be injected after your script runs: do native setup inside `window.addEventListener('freeappready', …)` and also run it immediately if window.FreeApp already exists.
- Do not use alert/confirm for normal feedback; prefer FreeApp.toast when available.

Return the complete index.html in one code block.

My idea: [DESCRIBE YOUR APP IDEA HERE]

Превратите его в Android-приложение

  1. Нажмите Редактировать и собрать онлайн. Шаблон откроется в онлайн-редакторе.
  2. Измените текст, цвета и код, затем выберите название приложения, иконку и имя пакета.
  3. Соберите. Вы получите подписанный APK для установки и AAB для Google Play — бесплатно, без аккаунта и без водяного знака.

✏️ Редактировать и собрать онлайн СКАЧАЙТЕ БЕСПЛАТНО ВGoogle Play

Другие шаблоны в категории «Заработок»

🧠

Вечер викторин

Раунды викторины с подсказкой 50/50 за рекламу с вознаграждением, полноэкранной рекламой каждый 3-й раунд и баннером только на экране результатов.

💬

Цитаты дня

Карточки с цитатами и избранным; реклама каждые 8 цитат по кнопке «Далее», а реклама с вознаграждением открывает бонусный набор на 24 ч.

🪙

Кликер монет

Idle-кликер с улучшениями, ускорением 2× на 60 с за рекламу с вознаграждением, рекламой при повышении уровня каждый 3-й уровень и баннером в магазине.

📖

Читалка историй

История из пяти глав; следующая глава открывается бесплатно через 10 минут или сразу после рекламы с вознаграждением.

🦘

Прыгун

Бесконечный раннер на Canvas: одно «Продолжить» за рекламу с вознаграждением в каждом забеге, реклама после каждого 3-го проигрыша и баннер на экране проигрыша.

📒

Заметки Pro

Приложение для заметок с разовой покупкой Pro: темы, закрепление, экспорт в .txt и безлимитные заметки через Google Play.