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

GCM defaultSenderID

Может кто-нибудь, пожалуйста, помогите мне понять, что gcm_defaultSenderId находится в следующем коде (найденном в onHandleIntent в RegistrationIntentService.java):

InstanceID instanceID = InstanceID.getInstance(this);
            String token = instanceID.getToken(getString(R.string.gcm_defaultSenderId),
                    GoogleCloudMessaging.INSTANCE_ID_SCOPE, null);
            // [END get_token]
            Log.i(TAG, "GCM Registration Token: " + token);

Это пример приложения Google для внедрения GCM в ваше приложение, и он даже не компилируется в приложении! Я уверен, что это что-то конкретное для каждого приложения. Я уже добавил GCM API в свое приложение, просто не знаю, что это за строка! Спасибо!

4b9b3361

Ответ 1

Цитата ЭТО документ, где вы можете найти информацию об этой реализации:

String authorizedEntity = PROJECT_ID; // Project id from Google Developers Console
String scope = "GCM"; // e.g. 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);

Итак, как вы можете видеть, первым параметром, который вы должны передать на getToken(), является authorizedEntity, который должен быть вашим идентификатором проекта от разработчиков Google:)

Даже если проект в GitHub имел эту строку, это не принесет вам никакой пользы, так как этот authorizedEntity является чем-то уникальным для каждого приложения.

Ответ 2

gcm_defaultSenderId - это строка, включенная плагином google-services gradle. Убедитесь, что у вас есть:

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

в файле build.gradle.

Этот плагин должен быть доступен в последней версии инструментов сборки.

Как и Vesko, это ваш идентификатор отправителя, который в этом случае является номером проекта в вашем проекте консоли разработчика. Плагин google-services извлекает это из вашего загруженного файла конфигурации проекта.

Ответ 3

Чтобы решить эту проблему, просто добавьте apply plugin: 'com.google.gms.google-services' в ваш gradle.app module и classpath 'com.google.gms:google-services:1.3.0' к зависимостям вашего проекта gradle.app

и, конечно же, не забудьте добавить compile 'com.google.android.gms:play-services-gcm:8.1.0' в свой gradle

Ответ 4

Я ненавижу эти багги Gradle плагины, и попытка заставить плагин google-services работать в проекте с несколькими вариантами тоже не забавна.

В результате я получил идентификатор отправителя по имени:

InstanceID instanceID = InstanceID.getInstance(this);
String gcmDefaultSenderId = getString( getResources().getIdentifier("gcm_defaultSenderId", "string", this.getPackageName()) );
String token = instanceID.getToken( gcmDefaultSenderId, GoogleCloudMessaging.INSTANCE_ID_SCOPE, null);