Перейти к содержанию
Fire Monkey от А до Я
  • 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

Ссылка на комментарий

Рекомендуемые сообщения

  • 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
  • Модераторы
8 минут назад, Anatoliy сказал:

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


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

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

 

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

Ссылка на комментарий
  • 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
Ссылка на комментарий

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить на вопрос...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

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

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