Подтвердить что ты не робот

Разрешение GET_ACCOUNTS при использовании GCM - зачем это нужно?

У меня есть приложение с включенными Push-уведомлениями.

Я хочу понять причину, по которой нам нужно "GET_ACCOUNTS" (android.permission.GET_ACCOUNTS) при реализации GCM? Некоторые пользователи вызывают озабоченность этим разрешением. Я использовал это разрешение в манифесте, как он был указан на официальном сайте здесь.

Насколько безопасно это разрешение? и если я удалю это, из моего манифеста, будут ли push-уведомления работать?

4b9b3361

Ответ 1

Он использует существующее соединение для служб Google. Для pre-3.0 устройств, для этого требуется, чтобы пользователи настраивали свою учетную запись Google на своих мобильные устройства. Учетная запись Google не является обязательной для устройств работает под управлением Android 4.0.4 или выше.

SO, это является основанием для требования разрешения

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

чтобы прочитать учетную запись Google.

Подробнее об этом Обзор GCM


Вход в учетную запись Google больше не нужен для работы GCM. Поэтому вам не нужно разрешение android.permission.GET_ACCOUNTS.

Если вы используете GCM API с GoogleCloudMessaging.register), вам больше не нужно настраивать учетную запись Google на любой версии Android. Но если вы используете устаревшую библиотеку (GCMRegistrar.register), вам все равно нужна учетная запись Google в старых версиях (до ICS).

Подробнее на https://groups.google.com/forum/#!topic/android-gcm/ecG-RfH-Aso. Другой поток симулятора - Почему для работы GCM для устройств ниже 4.0.4 ОС требуется?

Ответ 2

Для работы GCM больше не требуется разрешение GET_ACCOUNTS. Раньше это требовалось для регистрации в GCM, но последнее обновление Play Services прекратило использование учетной записи Google даже на Froyo и Gingerbread. Если вы регистрируетесь в GCM с помощью Служб Службы (т.е. С помощью GoogleCloudMessaging.register), вам больше не нужно это разрешение на любую версию Android. Если вы используете устаревшую библиотеку (GCMRegistrar.register), вам все равно нужна учетная запись Google для версии 4.0.4, для которой требуется это разрешение.

Источник (размещен на android-gcm Google Group разработчиком Google):

Некоторая предыстория:

Регистрация Froyo и Gingerbread осуществляется в GoogleServicesFramework, используя учетную запись Google для регистрации. Это привело к множеству ошибок auth для людей, где учетная запись был не в хорошем состоянии.

Начиная с ICS, GCM не зависит или использует учетную запись Google - вы может использовать его перед добавлением учетной записи или без каких-либо учетных записей.

Обновление "Служебные услуги" реализует новую схему на всех устройства - но, похоже, небольшое количество устройств имеет проблемы с это, мы расследуем - но цифры намного ниже, чем те со старой схемой.

Ответ 3

Как говорили все остальные, GET_ACCOUNT требуется для устройств Android ниже 4.0.4.

Если вы похожи на меня и установили библиотеку, которая автоматически добавляет это разрешение, но вам это не нужно, вы можете сообщить AndroidManifest удалить это разрешение, добавив разрешение с атрибутом tools:node="remove"

В вашем файле AndroidManifest.xml убедитесь, что атрибут xmlns:tools он определен в тэге manifest, а затем добавьте разрешение с помощью remove set:

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
          xmlns:tools="http://schemas.android.com/tools"
          ...>

  ...

  <uses-permission android:name="android.permission.GET_ACCOUNTS" tools:node="remove" />

  ...

</manifest>

Слово или предупреждение, что это никогда не работает для меня, но я знаю, что он работал для других. Если вы можете увидеть, что я могу делать неправильно или получить дополнительную информацию об этом, прокомментируйте!

* Изменить: есть отчет об ошибке, открывающий эту функцию: https://bugzilla.xamarin.com/show_bug.cgi?id=48153

Ответ 4

когда вы используете

компилировать 'com.google.android.gms: play-services: 7.5.0' добавить файл build.gradle означает, что автоматически добавлено разрешение GET_ACCOUNT.

  • forexample, если разработчику необходимо использовать только admob в проекте, только укажите это разрешение в файле build.gradle компилировать 'com.google.android.gms: play-services-ads: 7.5.0' если есть какие-либо другие разъяснения, см. ссылку https://developers.google.com/android/guides/setup

Ответ 5

Я не думаю, что это на самом деле. Я тестировал его на свежее устройство factory reset Gingerbread с новой учетной записью Gmail, и я мог получать сообщения GCM просто отлично без этого разрешения. Поэтому документация НЕПРАВИЛЬНАЯ.

Ответ 6

GET_ACCOUNT - проверить, синхронизирует ли пользователь аккаунт Google на мобильном устройстве и генерирует ключевое значение для каждого пользователя (каждый аккаунт Google). Это необходимо, если на устройстве установлена ​​версия ниже Android 4.0.4.