Оглавление:
Технически Android 6.0 Marshmallow всего неделя. (Полагаю, если вы посчитаете дату удаления кода, я полагаю.) Но она уже несколько месяцев находится в состоянии предварительного просмотра, и разработчики смогли представить приложения, использующие новый уровень API (и, следовательно, новые разрешения) для немного сейчас
Так что, если вы используете Marshmallow на телефоне Nexus (и вам это действительно нужно), вы начнете сталкиваться с новой схемой разрешений по мере обновления приложений. Один из моих первых примеров этого был с Twitter. (И благодарность Twitter за то, что он был одним из первых.)
Как это делает Твиттер …
Рассмотрите этот скриншот, который вы увидите, когда откроете Twitter в первый раз. Twitter хотел бы использовать мое текущее местоположение, чтобы настроить мой опыт. Хорошо Почему бы и нет. Мне нравится мое местоположение, и мне нравятся лучшие впечатления. Я позволю это.
Затем вступает в силу новое разрешение в «Зефире». Хочу ли я дать Твиттеру доступ к тому, что, как я сказал, я хочу ему предоставить? Да. Вот почему я ударил ОК в первый раз.
Дело в том, что первое диалоговое окно Twitter не имеет никакого отношения к разрешению моего местоположения. Это просто вызывает системный диалог. Но он сформулирован немного более дружелюбно, чем диалог разрешений Android.
Рассматривать:
Twitter: «Twitter хотел бы указать ваше текущее местоположение, чтобы настроить ваш опыт».
Android: «Разрешить Twitter доступ к местоположению этого устройства?»
Два похожих на разрешения вопроса, которые задают один и тот же вопрос, но только один на самом деле разрешает что-либо.
Первый говорит мне, что он хочет сделать, и, что более важно, почему он хочет это сделать. Последнее - в основном то же самое простое, но смутное разрешение, которое мы привыкли ненавидеть с Android. И это вроде как должно быть, я полагаю. Но вот где приложение, запрашивающее разрешение - это первое диалоговое окно из Twitter - становится еще более важным. Вместо того, чтобы сразу давать мне опцию «Не разрешать / ОК», Twitter должен взять еще одно предложение, чтобы сообщить мне, что будет дальше. «Twitter хотел бы указать ваше текущее местоположение, чтобы настроить ваш опыт. Если вы не против, нажмите« Разрешить »на следующем экране ». Или что-то в этом роде. Тогда у вас есть лучший контекст для запроса разрешения, и пользователь готов к тому, что произойдет, - и это не так повторяется.
Это две жесткие остановки для пользователя, и это сложно. Но это единовременная болевая точка. И, я думаю, стоит того, чтобы заставить нас уделять немного больше внимания опасным (это технический термин) приложениям разрешений. С другой стороны, иконография и контекст могут означать, что вам не нужно сообщать мне, что вы собираетесь запросить разрешение на камеру, так как я только что коснулся значка камеры.
Вот как Google описывает это:
В некоторых случаях вы можете захотеть помочь пользователю понять, почему вашему приложению требуется разрешение. Например, если пользователь запускает приложение для фотографий, он, вероятно, не будет удивлен, что приложение запрашивает разрешение на использование камеры, но пользователь может не понимать, почему приложение хочет получить доступ к местоположению или контактам пользователя. Прежде чем запрашивать разрешение, вам следует рассмотреть возможность предоставления объяснения пользователю. Имейте в виду, что вы не хотите перегружать пользователя объяснениями; если вы предоставите слишком много объяснений, пользователь может расстроить приложение и удалить его.
Как это делает Facebook …
Давайте посмотрим, как Facebook - еще одно приложение, которое уже обновлено для новых разрешений.
Аааа, редкий двойной запрос на разрешение. Это то, что вы получаете от Facebook, когда вы нажимаете значок камеры для нового обновления статуса. Хорошо, я немного обманул - вы получаете это двойное уведомление, если вы отказываете в разрешении на хранение в первый раз, когда он пытается заполнить миниатюры того, что находится в вашей галерее. Но это хорошо сделано. Facebook говорит вам, что он хочет и почему он этого хочет.
И тогда ты снова будешь повторять. Да, я бы хотел, чтобы у Facebook было разрешение попросить мой телефон сделать что-нибудь.
Но, опять же, это первая кнопка «Разрешить», с которой у меня проблема. На самом деле он не позволяет ничего, кроме системного диалога, снова запрашивать ту же самую вещь. И вам нужно сделать это только один раз.
Как Hangouts делает это …
Вот еще один пример, на этот раз в Google Hangouts. Нажатие на значки камеры или галереи в разговоре вызовет только системный диалог. Там нет лишнего запроса впереди фактического, который предоставляет разрешения. (И, опять же, я бы сказал, что это нормально. Когда я нажимаю значок камеры, получение запроса на разрешение камеры уже имеет контекст.)
Я думаю, что Google действительно хорошо поработал с этим первым объяснением разрешения для контактов, который абсолютно необходим для работы приложения вообще. Сначала говорится, почему ему нужен доступ к вашим контактам. Нажав «Далее», вы получите запрос на разрешение системы. То, что там написано «Далее», а не «Разрешить» - вот что действительно важно. Один впадает в другой. Вы, очевидно, не хотите выполнять каждый запрос на разрешение в полноэкранном режиме, как это. Но для чего-то достаточно важного, чтобы быть представленным на первом запуске, это очень хорошо сделано.
Переключение на разрешения времени выполнения является большим и важным. Но они могут быть небольшим процессом обучения.
По общему признанию я делаю немного горы из мухи слона здесь. Вы только должны пройти через это в первый раз для приложения. Но разрешения важны. (И я думаю, что переключение на разрешения во время выполнения - это хорошо.) Объяснение разрешений - это хорошо. Даже двойная остановка может быть пропущена во имя того, чтобы вы смотрели перед прыжком. Объясните разрешение пользователю, только не заставляйте его думать, что он уже разрешил его один раз, только чтобы заставить его сделать это на шаг позже в системном запросе. Я просто не люблю повторяться, вот и все.
И как всегда, вы можете отозвать разрешения, когда захотите. Если вы сделаете это, приложение снова запросит ваше разрешение при следующей попытке использовать эту функцию.
Дело в том, что у нас, как у пользователей, есть что-то новое, чтобы привыкнуть к этому. Но и разработчики приложений тоже.
Обновление: для более технического прослушивания всего этого - и, между прочим, подтверждения того, что методы работы Facebook и Twitter не совсем идеальны - ознакомьтесь с Эпизодом 33 подкаста Backstage для Android-разработчиков.