Без геолокации нельзя заказать. Почему?
Человек выбирает пункт выдачи рядом с работой. Приложение просит геолокацию. Он отказывает: заказ нужен в другом районе, положение телефона сейчас неважно. Список пунктов сменяется заглушкой «Разрешите доступ для продолжения».
Это условный пример. В нём отказ обработан без падения, но возможность заказать исчезла. Причина не в настройках телефона: задача «выбрать место получения» оказалась привязана к одному источнику данных.
Точные координаты не говорят, куда человек хочет заказать товар. Он может оформлять доставку родителям или выбирать магазин по дороге домой. Ручной адрес здесь не запасной режим для непослушных пользователей, а обычный способ сообщить намерение.
Поэтому полезнее разделить действия. Поле адреса и список пунктов доступны сами по себе. Кнопка «Рядом со мной» отдельно просит доступ. После отказа человек остаётся в том же поиске, с введённым текстом, а не отправляется в настройки и обратно в начало корзины.
Похожую зависимость легко создать в поддержке: для одного снимка упаковки потребовать доступ к медиатеке. Но системный выбор фотографии позволяет человеку передать конкретный файл, не открывая приложению всю библиотеку. Во Flutter это можно реализовать через image_picker; в полном разборе есть код и ограничения Android/iOS.
С уведомлениями вопрос ещё проще: почему отказ от push должен мешать посмотреть статус заказа? Уведомление привлекает внимание к изменению, а не заменяет историю. И разрешение на баннер не гарантирует, что человек его увидит.
Разумеется, без камеры нельзя обещать съёмку, а без нужного доступа — фоновое отслеживание. Ограничивать стоит действие с реальной зависимостью. Если обращение требует фото, нельзя отправить его без снимка и показать успех. Но сохранить текст до добавления вложения — отдельная возможность.
На ревью важнее проверить не наличие ветки «отказано», а то, что остаётся доступным после неё. Что именно невозможно? Есть ли другой источник данных? Не потеряется ли введённое после настроек и перезапуска? Если координаты придут позже, не затрут ли они ручной адрес?
Высокий процент разрешений здесь не обязательно означает доверие. Когда отказ блокирует оформление, он может означать, что выбора просто не было.
Полная статья «Без доступа к геолокации приложение бесполезно. Или так решили разработчики?» — на ArkTelos Lab: примеры API, поведение платформ и вопросы к требованиям. ArkTelos · Lab RU · Lab EN · ArkTelos RU · ArkTelos EN.