我已经使用 Flutter 一年了,但这是我第一次使用推送通知。我正在尝试在旧项目中添加推送通知。我已经编写了云 Firebase 函数来推送通知。
但是当通知发送到android手机的token时。 Android 应用程序崩溃并显示以下错误消息。
2021-01-13 00:49:37.011 6127-6127/com.app.oldProject E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.app.oldProject, PID: 6127
java.lang.RuntimeException: Unable to instantiate receiver com.google.firebase.iid.FirebaseInstanceIdReceiver: java.lang.ClassNotFoundException: Didn't find class "com.google.firebase.iid.FirebaseInstanceIdReceiver" on path: DexPathList[[zip file "/data/app/com.app.oldProject-wnxma3Smq-VCUX1eO04_kg==/base.apk"],nativeLibraryDirectories=[/data/app/com.app.oldProject-wnxma3Smq-VCUX1eO04_kg==/lib/arm64, /data/app/com.app.oldProject-wnxma3Smq-VCUX1eO04_kg==/base.apk!/lib/arm64-v8a, /system/lib64]]
at android.app.ActivityThread.handleReceiver(ActivityThread.java:3633)
at android.app.ActivityThread.access$1400(ActivityThread.java:237)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1889)
at android.os.Handler.dispatchMessage(Handler.java:106)
at android.os.Looper.loop(Looper.java:224)
at android.app.ActivityThread.main(ActivityThread.java:7081)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:604)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:928)
Caused by: java.lang.ClassNotFoundException: Didn't find class "com.google.firebase.iid.FirebaseInstanceIdReceiver" on path: DexPathList[[zip file "/data/app/com.app.oldProject-wnxma3Smq-VCUX1eO04_kg==/base.apk"],nativeLibraryDirectories=[/data/app/com.app.oldProject-wnxma3Smq-VCUX1eO04_kg==/lib/arm64, /data/app/com.app.oldProject-wnxma3Smq-VCUX1eO04_kg==/base.apk!/lib/arm64-v8a, /system/lib64]]
at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:134)
at java.lang.ClassLoader.loadClass(ClassLoader.java:379)
at java.lang.ClassLoader.loadClass(ClassLoader.java:312)
at android.app.AppComponentFactory.instantiateReceiver(AppComponentFactory.java:84)
at androidx.core.app.CoreComponentFactory.instantiateReceiver(CoreComponentFactory.java:60)
at android.app.ActivityThread.handleReceiver(ActivityThread.java:3626)
at android.app.ActivityThread.access$1400(ActivityThread.java:237)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1889)
at android.os.Handler.dispatchMessage(Handler.java:106)
at android.os.Looper.loop(Looper.java:224)
at android.app.ActivityThread.main(ActivityThread.java:7081)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:604)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:928)
Suppressed: java.lang.NoClassDefFoundError: Failed resolution of: Landroidx/legacy/content/WakefulBroadcastReceiver;
at java.lang.VMClassLoader.findLoadedClass(Native Method)
at java.lang.ClassLoader.findLoadedClass(ClassLoader.java:738)
at java.lang.ClassLoader.loadClass(ClassLoader.java:363)
... 12 more
Caused by: java.lang.ClassNotFoundException: Didn't find class "androidx.legacy.content.WakefulBroadcastReceiver" on path: DexPathList[[zip file "/data/app/com.app.oldProject-wnxma3Smq-VCUX1eO04_kg==/base.apk"],nativeLibraryDirectories=[/data/app/com.app.oldProject-wnxma3Smq-VCUX1eO04_kg==/lib/arm64, /data/app/com.app.oldProject-wnxma3Smq-VCUX1eO04_kg==/base.apk!/lib/arm64-v8a, /system/lib64]]
at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:134)
at java.lang.ClassLoader.loadClass(ClassLoader.java:379)
at java.lang.ClassLoader.loadClass(ClassLoader.java:312)
... 15 more
我正在为我的项目共享下面的 pubspec.yaml 和 gradle,以便您可以查看依赖项。
pubspec.yaml:
environment:
sdk: ">=2.7.0 <3.0.0"
dependencies:
flutter:
sdk: flutter
cloud_firestore: ^0.9.7+2
firebase_storage: ^2.1.0+1
firebase_core: ^0.3.0
image_cropper: ^1.2.3
firebase_auth: ^0.8.3
image: ^2.0.7
cupertino_icons: ^1.0.0
path_provider: ^1.6.21
firebase_messaging: ^4.0.0+1
这些是 app\build.gradle 中的依赖
dependencies {
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
implementation 'com.android.support:multidex:1.0.3'
implementation 'com.google.firebase:firebase-core:16.0.1'
}
我的颤振代码是
configurePushNotifications() {
_firebaseMessaging.getToken().then((token) {
print("Firebase Messaging Token: $token\n");
usersRef.document(currentUser.id).updateData({"token": token});
});
_firebaseMessaging.configure(
onLaunch: (Map<String, dynamic> message) async {
print("here in the on Launch");
},
onResume: (Map<String, dynamic> message) async {
print("here in the on Resume ");
},
onMessage: (Map<String, dynamic> message) async {
print("on message: $message\n");
},
);
}