• 0
Anatoliy

Политика конфиденциальности

Вопросы

У меня в разрешениях приложения стоит только две галочки - Internet и READ_PHONE_STATE. ZuBy где то писал, что READ_PHONE_STATE для корректной работы пушей надо.

При попытке опубликовать приложение в консоли гугл получаю:

В вашем приложении есть APK-файл версии 2, в котором применяются следующие разрешения: android.permission.READ_PHONE_STATE,android.permission.GET_ACCOUNTS. Чтобы их использовать, необходимо настроить политику конфиденциальности.

Научите как настраивать политику конфиденциальности и откуда берется разрешение GET_ACCOUNTS, у меня только две галочки в разрешениях Internet и READ_PHONE_STATE. Берлин со всеми апдейтами.

Спасибо.

 

432.jpg

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

20 ответов на этот вопрос

  • 0

C GET_ACCOUNTS понятно. Очередной баг студии:

https://quality.embarcadero.com/browse/RSP-17799

Обсуждение:

https://forums.embarcadero.com/thread.jspa?threadID=248971

Не до конца понимаю обсуждение - надо сделать манипуляции с targetSdkVersion или правильным решением будет добавить свой манифест в деплоймент чтобы избавиться от GET_ACCOUNTS или как?

Цитата

My app works fine with or without GET_ACCOUNTS permission (I supplied an alternative manifest without GET_ACCOUNT permission thru the deployment list), in both ways I can receive remote notification from FCM on my Android 6.0 device.
But since GET_ACCOUNTS is considered a dangerous permission, one should not request it if it is not needed.

 

Изменено пользователем Anatoliy

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0

а там не пришли к единому мнению. Но с учетом At present, doing so is not officially supported with Delphi. (это про высокую версию SDK) - лучше (имхо) обойтись targetSdkVersion.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0
В 06.07.2017 в 15:19, Anatoliy сказал:

Научите как настраивать политику конфиденциальности

Вероятно, вам требуется добавить ссылку на политику конфиденциальности в Консоли разработчика.

Делается это так:

1) Заходим в консоль разработчика

2) Выбираем приложение

3) В меню открываем вкладку "Настройка страницы приложения" и жмём по "Описание приложения"

4) Спускаемся в самый низ, там будет раздел "Политика конфиденциальности", вставляем ссылку на страничку/документ

5) Сохраняем и публикуем новые настройки

Скрытый текст

Снимок.PNG

 

Про GET_ACCOUNTS.

Как убрать разрешение:

  1. Собираем приложение (Build)
  2. Открываем "Проект\AndroidManifest.template.xml", выставляем минимальную и целевую версию СДК.
  3. Делаем Clear проекта и снова Собираем приложение (Build)
  4. Находим файл "Проект\Android\Debug\AndroidManifest.xml", открываем и удаляем строку с разрешением, сохраняем.
  5. Делаем деплой и заливаем в консоль.

Если нужно оставить разрешение для старых версий АПИ, то можно сделать так:

  1. Собираем приложение (Build)
  2. Находим файл "Проект\Android\Debug\AndroidManifest.xml", открываем, и в строку с разрешением добавляем " android:maxSdkVersion="Версия АПИ" ", версию выбираем исходя из ответа на вопрос "на какой версии АПИ данное разрешение перестало требоваться?", сохраняем.
  3. Делаем деплой и заливаем в консоль.

Разрешение будет запрашиваться на всех версиях до той (включительно), которую вы указали.

 

Если вам необходимо запрашивать разрешение на версиях АПИ 23 и выше, то необходимо добавить специальный метод в ваше приложение, я максимально упростил эту задачу. Статья с описанием: Добавляем метод onRequestPermissionsResult в приложение. Либа для скачивания:CustomActivityAndListener

 

p.s. Надеюсь, правильно понял ваши вопросы...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0

Минимальная версия СДК - это версия на которой приложение может работать, т.к. поддерживает его (в основном касается запросов в АПИ)

Целевая версия СДК - это версия на которой приложение разрабатывалось/тестировалось.

Например: android:minSdkVersion="14" android:targetSdkVersion="23".

Приложение разрабатывалось для 23 АПИ, но будет работать и на 14. Тут важно предусмотреть ситуации, когда методы из 23 АПИ не будут работать на 14 АПИ, т.е. перед тем как запрашивать метод из АПИ, нужно сделать проверку СДК/АПИ на устройстве, иначе, в большинстве случаев, вывалится ошибка.

Пример:

Метод is5GHzBandSupported, как видим, добавлен в 21 АПИ, значит не будет работать в АПИ ниже этой версии.

В коде мы напишем что-то подобное:

        if (TJBuild_VERSION.JavaClass.SDK_INT >= 21) then
        begin
          Запрос метода is5GHzBandSupported
        end;

 

p.s. Не успел отправить ответ, сообщение уже удалили...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0
Цитата

Например: android:minSdkVersion="14" android:targetSdkVersion="23".

То ли это ночь на меня влияет, но я так и не понял для чего это указывают разработчики. Ведь Delphi указывает в манифесте 14 и 14, при этом программа работает от Android 4.0.1 до 7+ .

И кстати, эти параметры можно изменить только вручную редактируя манифест?

@Andrey Efimov

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0
10 часов назад, ENERGY сказал:

То ли это ночь на меня влияет, но я так и не понял для чего это указывают разработчики. Ведь Delphi указывает в манифесте 14 и 14, при этом программа работает от Android 4.0.1 до 7+ .

И кстати, эти параметры можно изменить только вручную редактируя манифест?

Да, на данный момент, только вручную.

Если смотреть поверхностно, то

android:minSdkVersion="14" android:targetSdkVersion="14"

означает:

1) Приложение может запускаться на версиях от 14 АПИ (minSdkVersion)

2) Приложение разработано для 14 АПИ (targetSdkVersion)

3) Приложение при установке на АПИ отличное от версии 14 (targetSdkVersion) будет работать в режиме совместимости. Как известно в Андроиде существует обратная совместимость версий, что несомненно является плюсом, иначе просто пришлось бы собирать приложение для каждой версии Андроида

4) Эти параметры используются в Google Play и всех версиях Андроида начиная с 4 АПИ (если мне не изменяет память...)

 

Т.о. если вы разрабатываете и тестируете на версии Андроид 6.0 (23 АПИ), т.е. вы используете новые методы АПИ и т.п., и при этом хотите оставить поддержку старых версий Андроида, вам необходимо:

1) Указать параметр "targetSdkVersion" равный 23 АПИ и разработать приложение в соответствии с требованиями 23 АПИ

2) Решить насколько старые устройства должны поддерживаться вашим приложением, допустим мы решили, что это будут устройства с Андроид 4.1.2 (16 АПИ) на борту, значит вам необходимо:

  • указать параметр minSdkVersion равный 16 АПИ
  • сделать проверку версии АПИ для всех методов из нового АПИ, в данном случае 23

3) И самое главное, протестировать приложение на Андроид 4.1.2 (16 АПИ) и Андроид 6.0 (23 АПИ)

Про совместимость версий, раньше было написано в Гугл документации, сейчас не знаю... В некоторых моментах, поведение приложения будет разным. Например, при запросе разрешений в АПИ 19 и АПИ 23 (при вот таких параметрах android:minSdkVersion="16" android:targetSdkVersion="23"), обо всём этом написано в справке гугла.

 

p.s. Из трёх сообщений можно статью уже запилить... :D

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0
Цитата

Из трёх сообщений можно статью уже запилить

Что то совсем запуталась, а тема мне также интересна.

Приложение разработано в Берлине. Приложение должно получать пуши. Все! Весь код приложения это код из блога ZuBy.

http://blog.rzaripov.kz/2017/02/firebase-android-ios-2.html

Что надо сделать по шагам, чтобы работало на большинстве устройств и чтобы не было разрешения GET_ACCOUNTS чтобы не сочинять политику конфиденциальности.

Если можно по пунктам сухим тоном, чтобы блондинки тоже поняли... :)

 

 

 

 

 

 

Изменено пользователем Ingalime

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0

Ну смотрите, если я правильно понял, то данное разрешение требуется до Андроид 4.0.4 (включительно). И учитывая тот факт, что вы хотите поддерживать максимальное количество устройств, то должен сработать такой способ (описанный в сообщении выше):

Цитата

 

Если нужно оставить разрешение для старых версий АПИ, то можно сделать так:

  1. Собираем приложение (Build)
  2. Находим файл "Проект\Android\Debug\AndroidManifest.xml", открываем, и в строку с разрешением добавляем " android:maxSdkVersion="Версия АПИ" ", версию выбираем исходя из ответа на вопрос "на какой версии АПИ данное разрешение перестало требоваться?", сохраняем.
  3. Делаем деплой и заливаем в консоль.

 

Строка будет выглядеть так:

    <uses-permission android:name="android.permission.GET_ACCOUNTS"  android:maxSdkVersion="15" />

Разрешение будет запрашиваться на всех версиях до той (включительно), которую вы указали.

Но, опять же нужно протестировать приложение как минимум на версиях Андроид 4.0 - 4.1.2 и Андроид 4.4.2 и выше. Это очень важно сделать, т.к. поведение может отличаться от ожидаемого. (мне с пушами пока не особо доводилось связываться, в теории, изменение в манифесте должно помочь). Если проверите, то обязательно отпишитесь сюда о результатах.

Изменено пользователем Andrey Efimov
Поправил версию АПИ

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0
Цитата

Если нужно оставить разрешение для старых версий АПИ, то можно сделать так:

Если я оставлю разрешение GET_ACCOUNTS, то гугл консоль его обнаружит и заставит сочинять политику конфиденциальности. Правильно?

Как вычленить это разрешение напрочь? Пуст пострадают некоторые устройства.

Мне надо сделать это?:

Цитата
  1. Собираем приложение (Build)
  2. Открываем "Проект\AndroidManifest.template.xml", выставляем минимальную и целевую версию СДК.
  3. Делаем Clear проекта и снова Собираем приложение (Build)
  4. Находим файл "Проект\Android\Debug\AndroidManifest.xml", открываем и удаляем строку с разрешением, сохраняем.
  5. Делаем деплой и заливаем в консоль.

и все?

Второй пункт это так?

<uses-sdk android:minSdkVersion="14" android:targetSdkVersion="%targetSdkVersion%" />

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0
7 минут назад, Ingalime сказал:

Если я оставлю разрешение GET_ACCOUNTS, то гугл консоль его обнаружит и заставит сочинять политику конфиденциальности. Правильно?

Судя по сообщению ТС - ответ Да.

7 минут назад, Ingalime сказал:

Как вычленить это разрешение напрочь? Пуст пострадают некоторые устройства.

Тогда должно помочь:

21 час назад, Andrey Efimov сказал:

Как убрать разрешение:

  1. Собираем приложение (Build)
  2. Открываем "Проект\AndroidManifest.template.xml", выставляем минимальную и целевую версию СДК.
  3. Делаем Clear проекта и снова Собираем приложение (Build)
  4. Находим файл "Проект\Android\Debug\AndroidManifest.xml", открываем и удаляем строку с разрешением, сохраняем.
  5. Делаем деплой и заливаем в консоль.

Во втором пункте будет так:

<uses-sdk android:minSdkVersion="16" android:targetSdkVersion="16" /> 
В targetSdkVersion можете указать версию на которой тестируете разрабатываете приложение или оставить так, как я написал выше.

 

После этого, проверьте работу пушей на устройстве с Андроид 4.1.2 и выше.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0

А на сколько критично будет если оставить 14 во втором пункте?

<uses-sdk android:minSdkVersion="14" android:targetSdkVersion="14" /> 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0
8 минут назад, Anatoliy сказал:

А на сколько критично будет если оставить 14 во втором пункте?


<uses-sdk android:minSdkVersion="14" android:targetSdkVersion="14" /> 

Вероятно, почти очевидно, что на устройствах с АПИ 14 будет вываливаться ошибка о том, что нет необходимого разрешения. Прочитайте 3 последних сообщения, где я привёл примеры касательно пушей.

 

Ну и от себя могу добавить, зачем вам поддерживать столь древние устройства? Если верить Platform Versions, таких устройств осталось всего 0.7%. Сейчас можно смело ставить minSdkVersion = 16.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0

Очень интересная тема и большое спасибо Андрею Ефимову!

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0

И вдогонку, а почему студия вставляет сама по себе разрешение:

<uses-permission android:name="android.permission.WAKE_LOCK" />

?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 1
14 минуты назад, Ingalime сказал:

И вдогонку, а почему студия вставляет сама по себе разрешение:

<uses-permission android:name="android.permission.WAKE_LOCK" />

?

Чтобы будить устройство.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0

Поставил

<uses-sdk android:minSdkVersion="16" android:targetSdkVersion="16" /> 

Закинул apk на хостинг. Скачал на телефон. При попытке установить, пишет будет поиск аккаунтов на устройстве и интернет. Следовательно GET_ACCOUNTS сохранился...

Поставил

<uses-sdk android:minSdkVersion="14" android:targetSdkVersion="14" />

Все нормально. Пишет что нужен только интернет.

Темень в этом вопросе....

P.S.

Сейчас попробую все по новой. Может где-то ошибся...

Изменено пользователем Anatoliy

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0

Нет все нормально. Видимо билд запустил, а не деплой, и он мне изменил манифест...

Сколько танцев с бубном надо делать в этой студии... баг за багом...а без этого форума вообще не возможно этой студией пользоваться...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0
11 минуту назад, Anatoliy сказал:

Поставил


<uses-sdk android:minSdkVersion="16" android:targetSdkVersion="16" /> 

Закинул apk на хостинг. Скачал на телефон. При попытке установить, пишет будет поиск аккаунтов на устройстве и интернет. Следовательно GET_ACCOUNTS сохранился...

Поставил

<uses-sdk android:minSdkVersion="14" android:targetSdkVersion="14" />

Все нормально. Пишет что нужен только интернет.

Темень в этом вопросе....

P.S.

Сейчас попробую все по новой. Может где-то ошибся...

Вопросы:

На какой версии Андроида проверяете?

Вы точно удалили разрешение из манифеста? Проверьте итоговый манифест.

 

Чуть позже, сам смогу проверить на разных версиях Андроид.

Можете приложить файл манифеста из папки Проект/Android/Debug или Realese/.

 

Ап.

P.s. ок, вижу, вопрос решился.

Изменено пользователем Andrey Efimov
Ап

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0

если мне память не изменяет, то гугл будет ругать на разрешение READ_PHONE_STATE т.к. оно даёт доступ к многим параметрам устройства, для нее нужна политика конфиденциальности

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0

Ух... БОЛЬШОЕ ВСЕМ СПАСИБО. Залил в консоль приложение для получения пушей без GET_ACCOUNTS, заодно убрал READ_PHONE_STATE. Без READ_PHONE_STATE пуши приходят нормально... Приложение готово к публикации. Сейчас опубликую - получу отказ от гугла, и буду высылать им разрешающий документ... :)

Со стороны выглядит полным маразмом... Неужели в консоли не могли предусмотреть раздел где можно было бы сразу перед публикацией прикрепить разрешающий документ? Очень странно это все выглядит у гугла, представляю что твориться в магазине apple - две мега корпорации для разработчиков - все для людей... :D:ph34r:

P.S.

Автору форума - памятник при жизни! Спасибо.

Изменено пользователем Anatoliy

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти

  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу