Запрашивайте разрешение только тогда, когда оно действительно необходимо
Если все необходимые приложению разрешения запрашивать сразу при запуске, то, скорее всего, юзер отклонит большую часть, потому что ему еще не понятно, зачем все они нужны.
Запрашивайте нужное разрешение перед его использованием - это позволит юзеру понять, для чего оно нужно
Старайтесь не блокировать работу приложения при отсутствии каких-нибудь разрешений
По возможности, добавьте другой способ использовать тот функционал приложения, для которого требуются разрешения (нет доступа к геолокации - используйте ввод адреса вручную)
Объясните юзеру, для чего нужны разрешения
Если весь смысл приложения в том, чтобы использовать какое-либо разрешение (геолокацию, доступ к файлам, , соцсеть для публикации фото и тд) то объясняйте юзеру, зачем нужно то или иное разрешение до его запроса (onboarding - картинки с текстом и пояснениями)
Не объединяйте в группы непохожие разрешения
Запрос разрешений можно объединить, чтобы получить сразу все. Делать это следует только в том случае, если они относятся к одному логическому блоку (чтение и запись в файлов, доступ к камере и галерее устройства и тд).
Не стоит объединять запрос таких разрешений: доступ к файлам, геолокации, микрофону, камере, контактам.
Помните, что разрешение может быть отозвано
Юзер может отозвать разрешение в настройках приложения в любой момент, поэтому нужно после каждого переоткрытия приложения проверять актуальное значение разрешения. Актуальность разрешения проверяйте с помощью системы, не пытайтесь сохранить это значение.
Нельзя бесконечно запрашивать разрешения
Если юзер отказался предоставлять разрешения на iOS, то значение разрешения станет DeniedAlways - это значит что показывать системный запрос разрешения больше нельзя
На Android значение разрешения перейдет в DeniedAlways, если:
Юзер не предоставит разрешение и поставит галочку "Не показывать больше"
Юзер не предоставит разрешения два раза подряд
Из состояния DeniedAlways перейти в Granted можно только изменив разрешение в настройках приложения, поэтому необходимо реализовать переход пользователя в настройки приложения для изменения разрешений