上下文:
通过Parse Server
作为后端和Firebase Cloud
消息服务
目标:从Parse
向主题Android应用发送推送通知
问题:
将类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
答案 0 :(得分:3)
FirebaseInstanceIdService
不再可用。使用最新版本的parse和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>
答案 1 :(得分:0)
只需添加到Asaduzzaman女士的答案中,请像在this教程中一样,确保在自定义FirebaseMessagingService中覆盖onNewToken()方法。 (我只是找到了该教程,并认为如果其他人也遇到同样的问题,最好将其共享)。
@Override
public void onNewToken(String s) {
super.onNewToken(s);
Log.i("NEW_TOKEN", s);
}
我们需要覆盖它,因为:
“ FirebaseInstanceIdService:不推荐使用此类。建议在FirebaseMessagingService中重写onNewToken。
一旦实施,便可以安全地删除此服务。”