-1

Я читал GCM Документы и одно дело заставило меня задать этот вопрос: почему мне нужно определить тег разрешения в моем манифесте и использовать разрешение, которое я определил?Почему я должен определять тег разрешения в моем приложении Android для GCM?

Вот код:

<permission android:name="<your-package-name>.permission.C2D_MESSAGE" android:protectionLevel="signature" /> 

<uses-permission android:name="<your-package-name>.permission.C2D_MESSAGE" /> 

не должен это разрешения быть определен в приложении службы, и я просто добавить uses-permission

А если использовать permission тега необходимо, что signature уровня делает здесь?

Я определяю разрешение и не позволяю кому-либо использовать его, кроме меня!

GCM

+1

Вы не совсем правы. Разрешения уровня подписи все еще могут использоваться ОС Android. И именно там появляется это разрешение - он защищает «BroadcastReceiver» или «Сервис», которые вы используете для получения «намерений» GCM, поэтому вы можете быть абсолютно уверены, что получаете подлинные сообщения и что никакое другое приложение не посылает вам злонамеренные «намерения» 'сделаны похожими на сообщения GCM. –

ответ

3

Разрешение уровня пакета необходимо определить только конкретное приложение, чтобы доставить сообщение.

От docs

Ваши + ".permission.C2D_MESSAGE" разрешения для предотвращения других приложений для Android от регистрации и получения сообщений андроида приложения. Название разрешения должно точно матча этот шаблон-иначе Android приложение не будет получать сообщения

Для Рассмотрим например эти разрешения, как номер телефона и андроид этого здания. В процессе создания ссылки на соединение может быть слишком много людей, но у каждого получателя есть собственный уникальный номер телефона, на этой базе к этому конкретному получателю подключен вызов.

уровень подписи: Это, чтобы подтвердить, что заявка подписывается вы имеете в виду на вашей системе, которая имеет тот же SHA-1 ключ, который вы использовали на GCM консоли. Разрешение C2D будет предоставлено немедленно, если эти критерии совпадают.

+1

Часть документации, которую вы цитируете, может быть немного вводить в заблуждение. Разрешение не используется так, чтобы определить правильное приложение, но вместо этого запретить другим приложениям отправлять ему злонамеренные «намерения», сделанные похожими на фактическое сообщение GCM, когда на самом деле это не так. –

+0

Да, я согласен, что он тоже будет работать так же, если у меня есть ключ для блокировки, а другой нет, тогда я могу только попасть внутрь дома (получить сообщение), другой не будет, например, у меня есть только ключ и только я добираюсь, чтобы пойти внутрь дома, и иначе сказать это, у других парней нет ключа, чтобы они не могли войти внутрь дома. –

+1

@PavneetSingh я могу использовать этот вид разрешений в моем приложении? я имею в виду, если у меня есть приложение, которое служит для других приложений, и эти другие приложения не подписаны мной. но они дали мне SHA-1. могу ли я обслуживать только приложения, которые знали SHA-1? или просто Google может? – sajad