Ich benutze FCM zum ersten Mal.
Ich lade ein Beispiel von firebase / quickstart-android herunter und installiere den FCM-Schnellstart. Aber ich kann kein Token aus dem Protokoll erhalten, auch wenn ich in der App auf die Schaltfläche LOG TOKEN geklickt habe .
Dann versuche ich, eine Nachricht mit der Firebase-Konsole zu senden und auf meinen App-Paketnamen zu zielen. Ich habe eingehende Nachrichten erhalten.
Ich möchte wissen, ob FCM verwendet werden kann. GCM, alles ist in Ordnung.
Lösung:
Weil ich kein Android-Entwickler bin, sondern nur ein Backend-Entwickler. Ich brauche also einige Zeit, um es zu lösen. Meiner Meinung nach gibt es einige Fehler in der Beispiel-App.
Code:
RegistrationIntentService.java
public class RegistrationIntentService extends IntentService {
private static final String TAG = "RegIntentService";
public RegistrationIntentService() {
super(TAG);
}
@Override
protected void onHandleIntent(Intent intent) {
String token = FirebaseInstanceId.getInstance().getToken();
Log.i(TAG, "FCM Registration Token: " + token);
}
}
MyFirebaseInstanceIDService.java
public class MyFirebaseInstanceIDService extends FirebaseInstanceIdService {
private static final String TAG = "MyFirebaseIIDService";
/**
* Called if InstanceID token is updated. This may occur if the security of
* the previous token had been compromised. Note that this is called when the InstanceID token
* is initially generated so this is where you would retrieve the token.
*/
// [START refresh_token]
@Override
public void onTokenRefresh() {
// Get updated InstanceID token.
// String refreshedToken = FirebaseInstanceId.getInstance().getToken();
// Log.d(TAG, "Refreshed token: " + refreshedToken);
//
// // TODO: Implement this method to send any registration to your app's servers.
// sendRegistrationToServer(refreshedToken);
//
Intent intent = new Intent(this, RegistrationIntentService.class);
startService(intent);
}
// [END refresh_token]
/**
* Persist token to third-party servers.
* <p>
* Modify this method to associate the user's FCM InstanceID token with any server-side account
* maintained by your application.
*
* @param token The new token.
*/
private void sendRegistrationToServer(String token) {
// Add custom implementation, as needed.
}
}
Fügen Sie dies in der Datei MainActivity.java hinzu.
Intent intent = new Intent(this, RegistrationIntentService.class);
startService(intent);
Nach oben , erhalten Sie das Token in Logcat. Aber schließlich finde ich einen bequemen Weg , um es zu bekommen. Verwenden Sie einfach den Debug-Modus, um die Beispiel-App zu installieren, und Sie können das Token erhalten, wenn Sie es zum ersten Mal installieren.
Ich weiß jedoch nicht, warum das Protokoll bei der Installation nicht gedruckt werden kann. Vielleicht mit dem mobilen System verwandt sein.
Und warum kann ich dann keine Benachrichtigung erhalten? FirebaseMessagingService.onMessageReceived hat sendNotification nicht aufgerufen
String refreshedToken = FirebaseInstanceId.getInstance().getToken(); Log.d(TAG, "Refreshed token: " + refreshedToken);