Что такое authorizedEntity? Не удается найти gcm_defaultSenderId в собственном приложении.

Я пытаюсь запустить приложение Google Cloud Messaging. Я следую приложениям быстрого запуска Google Cloud Messaging, которое можно найти здесь, на github .

В свое приложение быстрой загрузки в какой-то момент мы спрашиваем службу Google Cloud Messaging для регистрационного маркера, чтобы этот экземпляр нашего приложения мог разговаривать с облаком.

Я нахожу эту строку кода:

RegistrationIntentService.java::onHandleIntent(Intent intent): InstanceID instanceID = InstanceID.getInstance(this); String gcmRegistrationToken = instanceID.getToken(getString(R.string.gcm_defaultSenderId), GoogleCloudMessaging.INSTANCE_ID_SCOPE, null); 

Часть, которая меня сбивает с толку, это значение: R.string.gcm_defaultSenderId Оно определено в их быстром старте, но оно автоматически генерируется.

Как я должен получить свое приложение для создания этой ценности?

Я просматриваю документы для InstanceID.getToken, которые здесь getToken(java.lang.String, java.lang.String)

InstanceID.getoken возвращает токен, который разрешает Entity (пример: облачный сервис) выполнять действие от имени приложения, идентифицированного идентификатором экземпляра. Это похоже на токен OAuth2 за исключением того, что он применяется к экземпляру приложения вместо пользователя.

Заголовок функции выглядит так:

 public String getToken (String authorizedEntity, String scope) 

Я вижу, что первый аргумент, что getToken хочет, – это String authorizedEntity . Так, какова эта санкционированная строка, которая должна быть?
Он четко идентифицирует экземпляр приложения, делающего запрос, но как я должен его генерировать? В приложении quickstart я не могу найти его в res/value/strings.xml , я могу найти его только в файлах R.java и app/build/generated/res/google-services/debug/values/values.xml

Это выглядит как:

 <resources> <string name="gcm_defaultSenderId">175643285</string> </resources> 

В этом файле есть только одна строка, и этот файл глубоко погружен в структуру проекта. Я не могу найти нигде в коде, где этот gcm_defaultSenderId генерируется программно.

Я смущен, потому что, как я должен был знать, что там была строка? Я никогда не определял эту строку, а googling для «не может решить gcm_DefaultSenderId » не дает никаких результатов. Я пытаюсь реализовать Google Cloud Messaging в своем собственном приложении, поэтому, конечно, мое собственное приложение не будет автоматически знать, чтобы сгенерировать эту строку. Как я должен сделать этот идентификационный номер?

Вот почему я считаю важным, что я понимаю, что эта строка authorizedEntity, что InstanceID.getToken хочет, так что я могу правильно генерировать один, чтобы дать getToken. Возможно, моя идея совершенно неверна, возможно, я не должен генерировать gcm_defaultSenderId, но я знаю, что я не должен изменять R.java, а файл values.xml также находится в «сгенерированной» папке.

Помоги пожалуйста? Если я найду ответ в своих поисках, я с радостью отправлю ответ. Любая помощь очень ценится, обратите внимание: мой проект был экспортирован в Gradle из Eclipse , поэтому у него все еще будет структура проекта / папки Eclipse, которая не должна вызывать никаких проблем, но файл values.xml находится в другом месте.

Solutions Collecting From Web of "Что такое authorizedEntity? Не удается найти gcm_defaultSenderId в собственном приложении."

Значение R.string.gcm_defaultSenderId генерируется плагином google-services Gradle, который использует файл google-services.json с определенными константами.

Плагин применяется в Gradle:

 apply plugin: 'com.google.gms.google-services' 

Для получения дополнительной информации: Внесите GCM Client на Android и посмотрите, как получить файл google-services.json и настроить Gradle & app в консоли разработчика.

Это идентификатор проекта, который нам нужно заполнить вместо этой строки. Пожалуйста, обратитесь к следующей ссылке.

https://developers.google.com/instance-id/guides/android-implementation

Для создания токенов требуется идентификатор проекта, созданный Google Developers Console.

 String authorizedEntity = PROJECT_ID; // Project id from Google Developers Console String scope = “GCM”; // eg communicating using GCM, but you can use any // URL-safe characters up to a maximum of 1000, or // you can also leave it blank. String token = InstanceID.getInstance().getToken(authorizedEntity,scope);