Нотатки · жовтень 2026
Після вивантаження з Base44 на телефон застосунок нікого не впускав.
Одне порожнє налаштування, що повертає його виправлення, що й далі ламається і що робить вивантаження, хоча ніхто не просив.
Base44 збирає робочий вебзастосунок з опису. Рано чи пізно засновник хоче бачити його в App Store і Google Play, і звичайний шлях туди — вивантажити код і загорнути його в застосунок для телефона. У цій нотатці цим шляхом проходить один застосунок.
Це невеликий застосунок для запису в студію йоги, зібраний для цієї нотатки в редакторі Base44 з одного повідомлення звичайними словами і відповідями на три запитання, які поставив редактор. Клієнти входять, записуються на заняття й бачать лише власні записи. Студія вигадана, два клієнти — тестові акаунти, а працювало все на безкоштовному акаунті Base44. Код вивантажили власним інструментом командного рядка Base44, загорнули в Capacitor — звичайну обгортку для вебзастосунків — і запустили на емуляторі Android.
1. До Base44 нічого не доходить
У вивантаженому вигляді застосунок відкривається на сторінці входу, і далі ніхто не проходить. Вводиш правильні пошту й пароль, натискаєш «Log in», і застосунок мовчки повертається на ту саму сторінку. Повідомлення про помилку немає.
Причина — одне налаштування. Вивантажений код лишає адресу сервера Base44 порожньою, тож кожен запит іде на «адресу, звідки прийшла ця сторінка». У вебверсії це власний сайт застосунку, і все працює. Усередині застосунку для телефона сторінка приходить із самого телефона, тож вхід і все, що після нього, іде на телефон, а там нічого не відповідає.
Виправлення — один рядок: вписати в це налаштування адресу Base44. У власному шаблоні Base44, створеному з командного рядка, адреса так само порожня, тож це не випадкова помилка одного застосунку.
2. Увійти можна, вийти — ні
Коли адресу вписано, сторінки самого застосунку працюють як слід і всередині застосунку для телефона. Новий клієнт реєструється, отримує код на пошту, вводить його, входить і записується на заняття. Вхід лишається в застосунку, і жоден браузер не відкривається.
Дві кнопки все одно не працюють. І «Continue with Google», і «Sign out» закінчуються екраном «404 Page Not Found» усередині застосунку. Обом потрібна друга адреса — сайт застосунку, а вивантаження її не вписує. Та й коли її вписати, це ще не все: Google не дозволяє показувати свій вхід у вбудованому вікні застосунку, тож вхід пішов би в Chrome, і потім ніщо не поверне людину назад у застосунок. У застосунку для телефона входу через Google потрібен свій шлях назад, і його треба окремо зробити й перевірити.
3. Правила доступу втрималися, з однією шпариною
Я чекав, що саме тут буде погано, але ні. Редактор сам написав правила доступу: запис може прочитати, змінити чи видалити лише його клієнт або адміністратор студії, а створювати записи може лише функція запису на заняття. І вони втрималися. Клієнт B не бачив запису клієнта A ні в списку, ні за номером, ні через фільтр, не міг його змінити чи видалити, а список користувачів був для нього закритий. Без входу не можна було нічого ні прочитати, ні створити.
Шпарина — у тому, що клієнт може робити з власним записом. Правило дозволяє клієнтові змінювати його напряму, а не лише кнопками застосунку. Клієнт A скасував запис кнопкою, а потім прямим запитом повернув йому статус «booked», і Base44 це прийняв. Перевірка вільних місць працює лише тоді, коли запис створюють, тож лічильник так і не зрушив. Застосунок показував «1 of 1 places left», а наступний клієнт отримав відповідь, що місць на заняття немає. Якби хтось інший тим часом зайняв це місце, одне місце мали б двоє клієнтів. Випадково такого не зробиш, потрібен намір, але все потрібне для цього є в кожного клієнта.
Щоб закрити шпарину, треба дозволити клієнтові змінювати запис лише через функцію, яка перевіряє місця, — так, як це вже робить створення запису.
Варто знати одну різницю. У проєкті, створеному з шаблону командного рядка Base44, правил доступу не було взагалі: будь-хто, у кого є застосунок, міг читати, додавати, змінювати й видаляти кожен запис у базі. Застосунки з редактора отримують правила, а код, який починається з шаблону, — ні.
4. Вивантаження публікує копію
Вивантаження коду зробило більше, ніж просто вивантажило його. Без жодного питання воно створило в акаунті другу копію застосунку, відправило до неї таблиці даних і функції й одразу опублікувало сайт цієї копії. Для засновника «дай мені код» непомітно перетворюється на «виклади в мережу другу публічну копію». Тут сайт копії за кілька хвилин замінили порожньою сторінкою, а справжніх даних у копії не було. Зі справжнім застосунком після вивантаження перевірте, чи не з'явилася в акаунті нова копія, і вирішіть, що вона має показувати.
Перш ніж відправляти в магазини
- Впишіть у вивантажений код обидві адреси, сервера й сайту, і спробуйте вхід, вихід і вхід через Google у застосунку на телефоні, а не в браузері.
- Прочитайте правило доступу кожної таблиці даних. Для кожної спитайте: чи може людина змінити цей запис напряму і чи не оминає вона так перевірку, яку роблять кнопки?
- Після вивантаження знайдіть нову копію у своєму акаунті Base44.
- Далі — власні правила магазинів, як для будь-якого застосунку для телефона: оплата через покупки самого магазину, видалення акаунта зсередини застосунку, посилання на політику приватності й умови.
Що не пробували
Збірку для iPhone: не було Mac. Вхід через Google зі справжнім акаунтом Google. Власну вкладку Mobile у редакторі, яка робить файли для магазинів лише на платному тарифі Builder у Base44. Що відбувається зі входом через Google на зворотному шляху, прочитано з коду бібліотеки Base44, а не перевірено запуском.