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