studio receive notification firebaseinstanceidservice example data android firebase push-notification firebase-cloud-messaging

android - receive - Firebase handleIntent AbstractMethodError



push notifications android (3)

Acabo de limpiar el proyecto y funcionó

Cuando recibo una notificación de inserción en Android, aparece el siguiente error. Realmente no puedo encontrar ninguna información al respecto. ¿Alguien puede ayudar? Estoy realmente perdido.

EXCEPCIÓN FATAL: pool-1-thread-1 Proceso: com.mycompany.myerror, PID: 22712 java.lang.AbstractMethodError: método abstracto "void com.google.firebase.iid.zzb.handleIntent (android.content.Intent)" en com.google.firebase.iid.zzb $ 1.run (Fuente desconocida) en java.util.concurrent.ThreadPoolExecutor.runWorker (ThreadPoolExecutor.java:1113) en java.util.concurrent.ThreadPoolExecutor $ Worker.run (ThreadPoolExecutor.java : 588) en java.lang.Thread.run (Thread.java:818)

dependencies { compile fileTree(include: [''*.jar''], dir: ''libs'') androidTestCompile(''com.android.support.test.espresso:espresso-core:2.2.2'', { exclude group: ''com.android.support'', module: ''support-annotations'' }) compile ''com.android.support:multidex:1.0.1'' compile ''com.android.support:appcompat-v7:25.3.0'' compile ''com.android.support:support-v4:25.3.0'' compile ''com.android.support:design:25.3.0'' //https://developers.google.com/android/guides/setup compile ''com.google.android.gms:play-services-places:10.2.1'' compile ''com.google.android.gms:play-services-maps:10.2.1'' compile ''com.google.android.gms:play-services-location:10.2.1'' compile ''com.google.android.gms:play-services-vision:10.2.1'' compile ''com.google.android.gms:play-services-gcm:10.2.1'' compile ''com.google.firebase:firebase-messaging:10.0.1'' compile ''com.google.firebase:firebase-core:10.0.1'' compile ''com.squareup.picasso:picasso:2.5.2'' compile ''com.google.zxing:core:3.2.0'' compile ''com.journeyapps:zxing-android-embedded:3.5.0'' compile ''com.loopj.android:android-async-http:1.4.9'' testCompile ''junit:junit:4.12'' }

FirebaseMessagingService.java

public class FirebaseMessagingService extends FirebaseMessagingService { private static final String TAG = "FCM Service"; @Override public void onMessageReceived(RemoteMessage remoteMessage) { super.onMessageReceived(remoteMessage); try { sendNotification(remoteMessage); } catch (Exception e) { e.printStackTrace(); } } private void sendNotification(final RemoteMessage remoteMessage) throws Exception { Calendar calendar = Calendar.getInstance(); Calendar c = Calendar.getInstance(); SimpleDateFormat sdf = new SimpleDateFormat("h:mm a"); String strDate = sdf.format(c.getTime()); String contentTitle = "New Push Message"; String contentText = "Received at " + strDate; Utilities.sendNotification(getApplicationContext(), getNotificationIcon(), contentTitle, contentText, 0, HomeActivity.class, Utilities.getNotificationId(getApplicationContext())); }

Utilidades

public static void sendNotification(Context appContext, int icon, String title, String msg, long when, Class<? extends Context> classToLaunch, long processId) { //Define notification msg Intent launchIntent = null; if (classToLaunch != null) { launchIntent = new Intent(appContext, classToLaunch); } else { launchIntent = new Intent(); } // This is dummy data for just differentiate Pending intent // only set value that is check IntentFilter launchIntent.addCategory("CATEGORY" + new Date(System.currentTimeMillis())); launchIntent.addFlags((int) System.currentTimeMillis()); launchIntent.setAction("ACTION" + new Date(System.currentTimeMillis())); // also make launch mode to singleTop in manifest for that activity launchIntent.setFlags( Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_TOP | Intent.FLAG_ACTIVITY_CLEAR_TASK | Intent.FLAG_ACTIVITY_NEW_TASK); // intent to be launched when click on notification PendingIntent pendingIntent = PendingIntent.getActivity(appContext, 0, launchIntent, PendingIntent.FLAG_UPDATE_CURRENT); //Instantiate the notification NotificationCompat.Builder builder = new NotificationCompat.Builder(appContext); //(icon, msg, when); builder.setContentTitle(title); builder.setSmallIcon(icon); builder.setWhen(when); builder.setTicker(msg); builder.setContentText(msg); builder.setContentIntent(pendingIntent); builder.setAutoCancel(true); builder.setDefaults(Notification.DEFAULT_LIGHTS); builder.setDefaults(Notification.DEFAULT_SOUND); NotificationManager notificationManager = (NotificationManager) appContext.getSystemService(Context.NOTIFICATION_SERVICE); notificationManager.notify((int) processId, builder.build()); }

HomeActivity

@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_home); if (getIntent().getExtras() != null) { for (String key : getIntent().getExtras().keySet()) { Object value = getIntent().getExtras().get(key); if (BuildConfig.DEBUG_APPLICATION) { Log.d(TAG, "Key: " + key + " Value: " + value); } } } }


Debes mantener la versión de libraties de Firebase y las bibliotecas de servicios de Google Play similares. Así que actualice los números de versión de las bibliotecas de Firebase a 10.2.1:

Cambio:

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

A:

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


Yout debe tener todas las líneas del servicio google play en la misma versión

compile ''com.google.android.gms:play-services:11.0.1'' compile ''com.google.android.gms:play-services-maps:11.0.1'' compile ''com.google.firebase:firebase-core:11.0.1'' compile ''com.google.firebase:firebase-messaging:11.0.1''