Ich habe Probleme beim Aktualisieren von Token in Firebase. Ich bin durch die Dokumentation gegangen und habe genau die Schritte von android verfolgt. In meinem Protokoll finde ich die Verbindung zum Firebase als erfolgreich. Ich bin mir nicht sicher, warum ich den Instanz-Token nicht bekomme. Ich bin in der Anfangsphase und versuche, das Token in logcat zu bekommen.Nicht aktualisiert Token Firebase android
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.project.application"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk
android:minSdkVersion="9"
android:targetSdkVersion="17" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.GET_ACCOUNTS" />
<uses-permission android:name="android.permission.VIBRATE" />
<uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" />
<application
android:allowBackup="false"
android:icon="@drawable/icon"
android:label="@string/app_name" >
<activity
android:name=".ProjectName"
android:configChanges="keyboard|keyboardHidden|orientation|screenSize"
android:icon="@drawable/icon"
android:label="@string/app_name"
android:theme="@android:style/Theme.Light.NoTitleBar">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
<meta-data
android:name="com.google.android.gms.version"
android:value="@integer/google_play_services_version" />
</activity>
<service
android:name=".MyInstanceIDListenerService">
<intent-filter>
<action android:name="com.google.firebase.INSTANCE_ID_EVENT" />
</intent-filter>
</service>
<service
android:name=".MyFirebaseInstanceIDService">
<intent-filter>
<action android:name="com.google.firebase.INSTANCE_ID_EVENT"/>
</intent-filter>
</service>
</application>
</manifest>
public class MyInstanceIDListenerService extends FirebaseInstanceIdService{
private static final String TAG = "MyFirebaseIIDService";
@Override
public void onTokenRefresh() {
// Get updated InstanceID token.
String refreshedToken = FirebaseInstanceId.getInstance().getToken();
Log.d(TAG, "Refreshed token: " + refreshedToken);
sendRegistrationToServer(refreshedToken);
}
public class MyFirebaseMessagingService extends FirebaseMessagingService {
private static final String TAG = "MyFirebaseMsgService";
@Override
public void onMessageReceived(RemoteMessage remoteMessage) {
// TODO(developer): Handle FCM messages here.
Log.d(TAG, "From: " + remoteMessage.getFrom());
String messageBody = null;
// Check if message contains a data payload.
if (remoteMessage.getData().size() > 0) {
Log.d(TAG, "Message data payload: " + remoteMessage.getData());
}
if (remoteMessage.getNotification() != null) {
messageBody = remoteMessage.getNotification().getBody();
Log.d(TAG, "Message Notification Body: " + remoteMessage.getNotification().getBody());
}
sendNotification(messageBody);
}
private void sendNotification(String messageBody) {
Intent intent = new Intent(this, SplashActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
PendingIntent pendingIntent = PendingIntent.getActivity(this, 0 /* Request code */, intent,
PendingIntent.FLAG_ONE_SHOT);
Uri defaultSoundUri= RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION);
NotificationCompat.Builder notificationBuilder = new NotificationCompat.Builder(this)
.setSmallIcon(R.drawable.ic_stat_ic_notification)
.setContentTitle("FCM Message")
.setContentText(messageBody)
.setAutoCancel(true)
.setSound(defaultSoundUri)
.setContentIntent(pendingIntent);
NotificationManager notificationManager =
(NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
notificationManager.notify(0 /* ID of notification */, notificationBuilder.build());
}
}
Token nur einmal generieren. Sie müssen Ihre App-Daten löschen, um ein neues Push-Token zu erhalten. – ZeroOne
Ich habe nicht mal ein einziges Mal wenn ich dich richtig verstanden habe. Ich habe die Schritte in Firebase andriod verfolgt und ich habe den Token in log erwartet. Aber ich kann diesen Log.d (TAG, "Refreshed token:" + refreshedToken) überhaupt nicht sehen. Ich sollte zumindest das Log mit "Refreshed Token" bekommen. Aber dafür gibt es im Protokoll keine Aufzeichnung. – jenny
hast du den Dienst mit 'startService (neue Absicht (this, MyFirebaseMessagingService.class)) gestartet;' –