Я пытаюсь запустить приложение с облачными сообщениями Google. Я следую за быстрым приложением Google Cloud Messaging Quickstart, которое можно найти здесь на github.
В своем приложении быстрого запуска в какой-то момент мы попросим службу облачных сообщений Google зарегистрировать токен регистрации, чтобы этот экземпляр нашего приложения мог разговаривать с облаком.
Я нахожу эту строку кода:
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
находится в другом месте.