GCM defaultSenderID

quelqu'un pourrait-il s'il vous plaît m'aider à comprendre ce qu'est le gcm_defaultSenderId dans le code suivant (trouvé dans onHandleIntent dans 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);

cela vient de L'application Google sample pour implémenter GCM dans votre application, et cela ne se compile même pas dans leur application! Je suis sûr que c'est quelque chose de spécifique à chaque application. J'ai déjà ajouté L'API GCM à mon application, mais je ne sais pas ce que cette chaîne est censée être! Merci!

25
demandé sur Brandon 2015-06-07 17:43:14

5 réponses

Citant document, où vous pouvez trouver des détails sur cette mise en œuvre:

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);

Donc comme vous pouvez le voir, le premier paramètre que vous devriez passer à getToken() est le authorizedEntity, qui devrait être votre ID de projet de Google Developers :)

même si le projet dans GitHub avait cette chaîne, il ne vous servirait pas bien, comme ceci authorizedEntity est quelque chose d'unique pour chaque application.

8
répondu Vesko 2015-08-15 19:22:50

le gcm_defaultSenderId est une chaîne de caractères incluse par le plugin Google-services gradle. Assurez-vous d'avoir:

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

dans votre construction.dossier gradle.

Ce plugin devrait être disponible dans la dernière version des outils de construction.

comme Vesko a dit c'est votre ID D'expéditeur qui dans ce cas est le numéro de projet dans votre projet de console de développement. Le plugin google-services extrait ceci de votre fichier de configuration de projet téléchargé.

28
répondu Arthur Thompson 2016-01-30 18:15:30

je déteste ces plugins Buggy Gradle, et essayer de faire fonctionner le plugin google-services dans un projet aux multiples saveurs n'est pas amusant non plus.

j'ai fini par obtenir L'ID de L'expéditeur par son nom:

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);
3
répondu Vaiden 2016-08-17 11:48:03

pour résoudre ce que vous avez juste à ajouter apply plugin: 'com.google.gms.google-services' pour votre gradle.module app etclasspath 'com.google.gms:google-services:1.3.0' aux dépendances de votre Grad.projet d'application

et bien sûr, n'oubliez pas d'ajouter compile 'com.google.android.gms:play-services-gcm:8.1.0' pour votre gradle

1
répondu Gabriel Ferreira 2015-12-10 17:08:07

il y a une chose plus importante, créer le google-services.json fichier.

Juste au cas où quelqu'un tombe sur ce problème.

1
répondu Lisandro 2018-08-12 16:01:58