25

Sto iniziando a utilizzare Firebase Cloud Messaging.Nessun metodo statico zzUr() in Firebase quando provo a utilizzare Analytics con le notifiche

Ho solo il codice di esempio della guida per utilizzare le notifiche e Analytics. Se non installare le notifiche Analytics funziona bene, ma quando aggiungo in Gradle Analytics devo ottenere questo errore quando provo ad inviare una notifica:

java.lang.NoSuchMethodError: No static method zzUr()Landroid/content/Intent; in class Lcom/google/firebase/iid/FirebaseInstanceIdInternalReceiver; or its super classes (declaration of 'com.google.firebase.iid.FirebaseInstanceIdInternalReceiver' appears in /data/app/com.myapp.newapp-2/base.apk) at com.google.firebase.messaging.FirebaseMessagingService.zzz(Unknown Source) at com.google.firebase.iid.zzb.onStartCommand(Unknown Source) at android.app.ActivityThread.handleServiceArgs(ActivityThread.java:3316) at android.app.ActivityThread.access$2200(ActivityThread.java:177) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1547) at android.os.Handler.dispatchMessage(Handler.java:102) at android.os.Looper.loop(Looper.java:145) at android.app.ActivityThread.main(ActivityThread.java:5951) at java.lang.reflect.Method.invoke(Native Method) at java.lang.reflect.Method.invoke(Method.java:372) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1400) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1195)

ho in Gradle:

compile 'com.google.firebase:firebase-messaging:9.0.2' 
compile 'com.google.firebase:firebase-core:9.2.0' 

mio MyFirebaseMessagingService:

@Override 
public void onMessageReceived(RemoteMessage remoteMessage) { 
    // TODO(developer): Handle FCM messages here. 
    // If the application is in the foreground handle both data and notification messages here. 
    // Also if you intend on generating your own notifications as a result of a received FCM 
    // message, here is where that should be initiated. See sendNotification method below. 
    Log.d(TAG, "From: " + remoteMessage.getFrom()); 
    Log.d(TAG, "Notification Message Body: " + remoteMessage.getNotification().getBody()); 

    sendNotification(remoteMessage.getNotification().getBody()); 
} 

private void sendNotification(String messageBody) { 
    Intent intent = new Intent(this, MainActivity.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) 
      .setContentText(messageBody) 
      .setAutoCancel(true) 
      .setSound(defaultSoundUri) 
      .setVibrate(new long[] { 1000, 1000, 1000, 1000, 1000 }) 
      .setContentIntent(pendingIntent); 

    NotificationManager notificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE); 

    notificationManager.notify(0 /* ID of notification */, notificationBuilder.build()); 
} 

Qualsiasi aiuto sarà apprezzato!

risposta

48

provare questo:

aggiungere

compile 'com.google.firebase:firebase-analytics:9.2.0' 

e cambiare questo:

compile 'com.google.firebase:firebase-messaging:9.0.2' 

a questa (stessa versione su tutti)

compile 'com.google.firebase:firebase-messaging:9.2.0' 

se questo non lo fa lavoro, metti tutte le versioni di Firebase a 9.0.2, o 9.0.0

+2

Hi Daniel, sì, per qualche motivo devo usare la stessa versione. Funziona! –

7

L'utilizzo di librerie Firebase o Google Play Service di versioni diverse non è supportato. Tutte le librerie sono proguardate insieme in modo che il nome dei metodi/classi interni corrisponda a diverse librerie. Quando usi librerie di versioni diverse probabilmente vedrai classi e metodi mancanti (come in questo caso). Anche le librerie di missaggio di versioni diverse non sono testate. Anche se ti capita di eseguire correttamente l'app, è probabile che le cose non funzionino come previsto.

Si prega di utilizzare sempre le librerie dalla stessa identica versione.

2

Provare a modificare le versioni di Firebase in build.gradle. Funziona per me!

Le versioni devono essere gli stessi:

compile 'com.google.firebase:firebase-analytics:9.2.0' 
compile 'com.google.firebase:firebase-messaging:9.2.0' 
compile 'com.google.firebase:firebase-core:9.2.0' 
13

ho avuto lo stesso problema, come altri hanno detto che ho usato la stessa versione per tutti i firebase librerie, ma non ha funzionato:

compile 'com.google.firebase:firebase-core:9.6.0' 
compile 'com.google.firebase:firebase-messaging:9.6.0' 

ho scoperto che devo usare la stessa versione per play-services:

compile 'com.google.android.gms:play-services-analytics:9.6.0' 
compile 'com.google.android.gms:play-services-base:9.6.0' 
compile 'com.google.android.gms:play-services-gcm:9.6.0' 
2

Per me, questo funziona. Ho cambiato le versioni.

compile 'com.google.android.gms:play-services-maps:9.4.0' 
compile 'com.google.firebase:firebase-core:9.4.0' 
compile 'com.google.firebase:firebase-database:9.4.0' 
2

mantenere stessa versione di tutti i Firebase enter image description here strumenti che si utilizza ...