未解决 Class AndroidManifest 中的 ParseFirebaseInstanceIdService
Unresolved Class ParseFirebaseInstanceIdService in AndroidManifest
上下文:
通过 Parse Server
在 Android 上实施云推送通知
作为后端和 Firebase Cloud
消息服务
目标: 从 Parse
向主题 Android 应用程序
发送推送通知
问题:
将 class com.parse.fcm.ParseFirebaseInstanceIdService
注入 AndroidManifest.xml
文件时,它无法解析。
已经尝试过的解决方案:
更改 build.gradle
(应用文件)中的 Firebase 和 Parse 包版本以及更改 build.gralde
(项目文件)
中的依赖项版本
项目文件:
AndroidManifest.xml
(发生错误的文件部分)
<service
android:name="com.parse.fcm.ParseFirebaseInstanceIdService"
android:exported="true">
<intent-filter>
<action android:name="com.google.firebase.INSTANCE_ID_EVENT" />
</intent-filter>
</service>
build.gradle(项目)
buildscript {
repositories {
google()
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:3.5.1'
classpath 'com.google.gms:google-services:4.0.1'
}
}
allprojects {
repositories {
google()
jcenter()
maven { url "https://jitpack.io" }
}
}
task clean(type: Delete) {
delete rootProject.buildDir
}
build.gradle(模块)
apply plugin: 'com.android.application'
android {
compileSdkVersion 29
buildToolsVersion "29.0.1"
defaultConfig {
applicationId "com.sytech.uber"
minSdkVersion 24
targetSdkVersion 29
versionCode 1
versionName "1.0"
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
}
}
}
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation 'androidx.appcompat:appcompat:1.1.0'
implementation 'androidx.constraintlayout:constraintlayout:1.1.3'
implementation 'com.google.android.gms:play-services-maps:16.1.0'
implementation 'com.google.firebase:firebase-analytics:17.2.0'
testImplementation 'junit:junit:4.12'
androidTestImplementation 'androidx.test.ext:junit:1.1.1'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.2.0'
//Parse
implementation "com.github.parse-community.Parse-SDK-Android:parse:1.20.0"
implementation "com.github.parse-community.Parse-SDK-Android:fcm:1.20.0"
implementation 'com.parse.bolts:bolts-android:1.4.0'
//Toasty https://github.com/GrenderG/Toasty
implementation 'com.github.GrenderG:Toasty:1.4.2'
//Firebase
implementation'com.google.firebase:firebase-auth:19.1.0'
implementation 'com.google.firebase:firebase-messaging:17.6.0'
implementation 'com.google.firebase:firebase-core:16.0.8'
}
apply plugin: 'com.google.gms.google-services'
com.google.gms.googleservices.GoogleServicesPlugin.config.disableVersionCheck = true
FirebaseInstanceIdService
不再可用。使用最新版本的解析和 FirebaseMessagingService
implementation "com.github.parse-community.Parse-SDK-Android:fcm:1.21.0"
并使用ParseFirebaseMessagingService
<service
android:name="com.parse.fcm.ParseFirebaseMessagingService">
<intent-filter>
<action android:name="com.google.firebase.MESSAGING_EVENT"/>
</intent-filter>
</service>
为了补充 Md.Asaduzzaman 的回答,请确保覆盖自定义 FirebaseMessagingService 中的 onNewToken() 方法,就像 this 教程中那样。 (我刚刚找到教程,我认为如果其他人遇到同样的问题,分享它会很好)。
@Override
public void onNewToken(String s) {
super.onNewToken(s);
Log.i("NEW_TOKEN", s);
}
我们需要覆盖它,因为:
“FirebaseInstanceIdService:此 class 已弃用。支持覆盖 FirebaseMessagingService 中的 onNewToken。
实施后,可以安全地删除此服务。"
上下文:
通过 Parse Server
作为后端和 Firebase Cloud
消息服务
目标: 从 Parse
向主题 Android 应用程序
问题:
将 class com.parse.fcm.ParseFirebaseInstanceIdService
注入 AndroidManifest.xml
文件时,它无法解析。
已经尝试过的解决方案:
更改 build.gradle
(应用文件)中的 Firebase 和 Parse 包版本以及更改 build.gralde
(项目文件)
项目文件:
AndroidManifest.xml (发生错误的文件部分)
<service
android:name="com.parse.fcm.ParseFirebaseInstanceIdService"
android:exported="true">
<intent-filter>
<action android:name="com.google.firebase.INSTANCE_ID_EVENT" />
</intent-filter>
</service>
build.gradle(项目)
buildscript {
repositories {
google()
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:3.5.1'
classpath 'com.google.gms:google-services:4.0.1'
}
}
allprojects {
repositories {
google()
jcenter()
maven { url "https://jitpack.io" }
}
}
task clean(type: Delete) {
delete rootProject.buildDir
}
build.gradle(模块)
apply plugin: 'com.android.application'
android {
compileSdkVersion 29
buildToolsVersion "29.0.1"
defaultConfig {
applicationId "com.sytech.uber"
minSdkVersion 24
targetSdkVersion 29
versionCode 1
versionName "1.0"
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
}
}
}
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation 'androidx.appcompat:appcompat:1.1.0'
implementation 'androidx.constraintlayout:constraintlayout:1.1.3'
implementation 'com.google.android.gms:play-services-maps:16.1.0'
implementation 'com.google.firebase:firebase-analytics:17.2.0'
testImplementation 'junit:junit:4.12'
androidTestImplementation 'androidx.test.ext:junit:1.1.1'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.2.0'
//Parse
implementation "com.github.parse-community.Parse-SDK-Android:parse:1.20.0"
implementation "com.github.parse-community.Parse-SDK-Android:fcm:1.20.0"
implementation 'com.parse.bolts:bolts-android:1.4.0'
//Toasty https://github.com/GrenderG/Toasty
implementation 'com.github.GrenderG:Toasty:1.4.2'
//Firebase
implementation'com.google.firebase:firebase-auth:19.1.0'
implementation 'com.google.firebase:firebase-messaging:17.6.0'
implementation 'com.google.firebase:firebase-core:16.0.8'
}
apply plugin: 'com.google.gms.google-services'
com.google.gms.googleservices.GoogleServicesPlugin.config.disableVersionCheck = true
FirebaseInstanceIdService
不再可用。使用最新版本的解析和 FirebaseMessagingService
implementation "com.github.parse-community.Parse-SDK-Android:fcm:1.21.0"
并使用ParseFirebaseMessagingService
<service
android:name="com.parse.fcm.ParseFirebaseMessagingService">
<intent-filter>
<action android:name="com.google.firebase.MESSAGING_EVENT"/>
</intent-filter>
</service>
为了补充 Md.Asaduzzaman 的回答,请确保覆盖自定义 FirebaseMessagingService 中的 onNewToken() 方法,就像 this 教程中那样。 (我刚刚找到教程,我认为如果其他人遇到同样的问题,分享它会很好)。
@Override
public void onNewToken(String s) {
super.onNewToken(s);
Log.i("NEW_TOKEN", s);
}
我们需要覆盖它,因为:
“FirebaseInstanceIdService:此 class 已弃用。支持覆盖 FirebaseMessagingService 中的 onNewToken。
实施后,可以安全地删除此服务。"