wake-up-neo.com

GCM defaultSenderID

Könnte mir bitte jemand helfen zu verstehen, was die gcm_defaultSenderId im folgenden Code enthält (zu finden in onHandleIntent in 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);

Dies ist aus der Google-Beispiel-App für die Implementierung von GCM in Ihre App, und es wird nicht einmal in ihrer App kompiliert! Ich bin sicher, dass es für jede App etwas Besonderes ist. Ich habe die GCM-API bereits zu meiner Anwendung hinzugefügt. Sie wissen nur nicht, was diese Zeichenfolge sein soll. Vielen Dank!

26
Brandon

DIESES -Dokument zitieren, in dem Sie Details zu dieser Implementierung finden können:

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

Wie Sie sehen können, ist der erste Parameter, den Sie an getToken() übergeben sollten, die authorizedEntity, die Ihre Projekt-ID von Google Developers sein sollte :)

Selbst wenn das Projekt in GitHub diese Zeichenfolge hätte, würde es Ihnen nichts bringen, da diese authorizedEntity für jede App einzigartig ist.

8
Vesko

Die gcm_defaultSenderId ist eine Zeichenfolge, die im google-services Gradle Plugin enthalten ist. Stellen Sie sicher, dass Sie Folgendes haben:

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

in Ihrer build.gradle -Datei.

Dieses Plugin sollte in der neuesten Version der Build-Tools verfügbar sein.

Wie Vesko gesagt hat, ist dies Ihre Sender ID, in diesem Fall die Projektnummer in Ihrem Dev Console-Projekt. Das Google-Services-Plugin extrahiert dies aus Ihrer heruntergeladenen Projektkonfigurationsdatei.

28
Arthur Thompson

Ich hasse diese fehlerhaften Gradle-Plugins, und der Versuch, das Google-Services-Plugin in einem Projekt mit mehreren Varianten zu betreiben, macht auch keinen Spaß.

Am Ende bekam ich die Absender-ID nach Namen:

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

Um dies zu lösen, müssen Sie lediglich apply plugin: 'com.google.gms.google-services' zu Ihrem gradle.app-Modul und classpath 'com.google.gms:google-services:1.3.0' zu den Abhängigkeiten Ihres gradle.app-Projekts hinzufügen

und natürlich vergessen sie nicht, compile 'com.google.Android.gms:play-services-gcm:8.1.0' zu ihrem gradle hinzuzufügen 

1

Es gibt noch eine weitere wichtige Sache: Erstellen Sie die Datei google-services.json

Nur für den Fall, dass jemand anderes über dieses Problem stolpert.

1
Lisandro