AndroidManifest中未解析的类ParseFirebaseInstanceIdService

时间:2019-10-17 11:12:56

标签: android parse-platform firebase-cloud-messaging android-manifest

上下文: 通过Parse Server

在Android上实现云推送通知

作为后端和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

2 个答案:

答案 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。

一旦实施,便可以安全地删除此服务。”