29

我开始使用 Firebase 云消息传递。

我只有使用通知和分析的指南的示例代码。如果我不安装 Analytics 通知可以正常工作,但是当我在 gradle 中添加 Analytics 时,我在尝试发送通知时收到此错误:

java.lang.NoSuchMethodError: 没有静态方法 zzUr()Landroid/content/Intent; 在 Lcom/google/firebase/iid/FirebaseInstanceIdInternalReceiver 类中;或其超类(“com.google.firebase.iid.FirebaseInstanceIdInternalReceiver”的声明出现在 /data/app/com.myapp.newapp-2/base.apk 中)在 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:

我在毕业典礼上:

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

我的 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());
}

任何帮助将不胜感激!

4

7 回答 7

53

试试这个:

添加

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

并改变这个:

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

到这个(所有相同的版本)

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

如果这不起作用,请将所有 firebase 版本设置为 9.0.2 或 9.0.0

于 2016-07-05T11:51:19.707 回答
14

我遇到了同样的问题,正如其他人所说,我对所有firebase库都使用了相同的版本,但它没有用

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

我发现我必须使用相同的版本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'
于 2016-09-24T11:35:37.767 回答
9

不支持使用不同版本的 Firebase 或 Google Play 服务库。所有库都被一起保护,因此内部方法/类的名称在不同的库之间匹配。当您使用来自不同版本的库时,您可能会看到缺少的类和方法(就像您在本例中所做的那样)。也未测试混合来自不同版本的库。即使您碰巧成功运行了该应用程序,它也很可能无法按设计运行。

请始终使用来自完全相同发行版本的库。

于 2016-07-06T16:54:44.767 回答
4

保持您正在使用的所有 Firebase在此处输入图像描述工具的相同版本...

于 2017-07-15T08:38:09.293 回答
2

尝试更改 build.gradle 中的 Firebase 版本。它对我有用!

版本必须相同:

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'
于 2016-07-28T18:28:36.793 回答
2

对我来说,这行得通。我更改了版本。

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'
于 2017-03-25T12:55:36.050 回答
0

(对于希望解决问题的人,同时参考最新的 Play-services 和 firebase 库的上述答案)

从所有 Play 服务和 Firebase 库的版本 15 开始,版本号遵循语义版本控制方案。

每个与 com.google.android.gms:play-services-* 和 com.google.firebase:firebase-* 匹配的 Maven 依赖项不再需要具有相同的版本号才能在构建时和运行时正常工作。

有关更详细的说明,请参阅此处:宣布新的 SDK 版本控制

希望它对使用最新 SDK 版本的人们有所帮助。

对于尚未迁移到 AndroidX 并尝试将其 Firebase 和 Play 服务基础 SDK 更新到最新版本 17.0.0 的人,请参阅以下内容:2019 年 6 月 17 日发行说明

现在让您知道我为解决我的问题所做的工作是具有如下依赖项:

应用程序不适用于以下库:

implementation 'com.google.firebase:firebase-core:16.0.9'
implementation 'com.google.firebase:firebase-messaging:18.0.0'
implementation 'com.google.firebase:firebase-analytics:16.5.0'

应用程序使用以下内容:

implementation 'com.google.android.gms:play-services-base:16.1.0'
implementation 'com.google.android.gms:play-services-location:16.0.0'
implementation 'com.google.android.gms:play-services-analytics:16.0.8'

implementation 'com.google.android.gms:play-services-ads:17.2.1'

implementation 'com.google.firebase:firebase-core:16.0.8'
implementation 'com.google.firebase:firebase-messaging:17.3.3'
implementation 'com.google.firebase:firebase-analytics:16.4.0'

所以基本上我降低了我的firebase消息版本以及分析,它就像一个魅力......

于 2019-07-02T05:09:17.577 回答