Java 获取设备令牌时发件人Id无效

Java 获取设备令牌时发件人Id无效,java,android,firebase-cloud-messaging,Java,Android,Firebase Cloud Messaging,我正在Android应用程序中进行Firebase云消息设置。我不是第一次做,我已经做过很多次了。但这一次,我在尝试获取设备令牌时遇到一个奇怪的错误“无效发件人ID”。我从未在我的项目中使用过任何发件人ID,除了默认存在于google-services.json文件中的项目编号。请帮助我解决此问题 。我正在使用此方法生成令牌。我已在项目中添加了google-services.json文件 FirebaseInstanceId.getInstance().getInstanceId()

我正在Android应用程序中进行Firebase云消息设置。我不是第一次做,我已经做过很多次了。但这一次,我在尝试获取设备令牌时遇到一个奇怪的错误“无效发件人ID”。我从未在我的项目中使用过任何发件人ID,除了默认存在于google-services.json文件中的项目编号。请帮助我解决此问题

。我正在使用此方法生成令牌。我已在项目中添加了google-services.json文件

 FirebaseInstanceId.getInstance().getInstanceId()
            .addOnCompleteListener(new OnCompleteListener<InstanceIdResult>() {
                @Override
                public void onComplete(@NonNull Task<InstanceIdResult> task) {
                    if (!task.isSuccessful()) {
                        Toast.makeText(WelcomeActivity.this,task.getException().getMessage(),Toast.LENGTH_LONG).show();
                        Log.w("getInstanceId failed", task.getException());
                        return;
                    }

                    // Get new Instance ID token
                    String token = task.getResult().getToken();
                    Log.v("sssskkkk",token);

                }
            });
 implementation 'com.android.support.constraint:constraint-layout:1.0.2'
api fileTree(include: ['*.jar'], dir: 'libs')
implementation 'com.google.firebase:firebase-messaging:17.3.4'
testImplementation('com.android.support.test.espresso:espresso-core:2.2.2')

implementation 'com.squareup.okhttp3:okhttp:3.10.0'
implementation 'me.relex:circleindicator:1.2.2@aar'
implementation 'org.immutables:gson:2.4.0'
implementation 'com.android.volley:volley:1.1.0'
implementation 'com.google.android.gms:play-services-location:17.0.0'

implementation 'com.android.support:multidex:1.0.3'
testImplementation 'junit:junit:4.12'
implementation 'com.borjabravo:readmoretextview:2.0.1'
implementation 'de.hdodenhof:circleimageview:2.2.0'
implementation 'com.github.bumptech.glide:glide:4.8.0'
implementation 'com.github.mabbas007:TagsEditText:1.0.5'
implementation 'com.android.support:design:28.0.0'
implementation 'com.android.support:appcompat-v7:28.0.0'
implementation 'com.android.support:cardview-v7:28.0.0'
implementation 'com.android.support:recyclerview-v7:28.0.0'


implementation 'com.android.support:support-core-utils:28.0.0'

implementation 'com.karumi:dexter:4.2.0'

我很确定我在Firebase云消息传递的实现中没有遗漏任何东西。同样,当我在不同的项目中使用相同的google-services.json并使用相同的包名时,一切都很好。

是的,在花了大约30个小时之后,我终于解决了这个问题。这段代码是由以前的开发人员编写的,我发现有两个google-services.json文件,一个在应用程序文件夹中,另一个在调试文件夹中,因此发件人ID不匹配。因此,我建议所有出现此错误的人:-

  • 应检查您是否已将文件复制到应用程序中的正确文件夹中
  • 应检查文件是否正确,是否与FCM中最新下载的google-services.json文件匹配
  • 您应该检查您的项目中是否存在任何重复的google-services.json文件
  • 我也有同样的例外。 (
    java.io.IOException:无效的\u发送方

    我已成功获得注册令牌,但在删除firebase项目并重新创建firebase项目后,我开始获得
    无效发件人
    异常

    我确认我复制了正确的
    googleservices.json
    文件,但出现了异常

    解决办法很简单。 只需删除下面生成的谷歌服务文件夹

    Project_Name\app\build\generated\res\google-services
    
    如果删除文件夹并重建项目,则会从当前的
    google services.json
    文件中创建正确的google services文件夹。
    现在您可以获得firebase注册令牌。

    也可以通过
    gradlew clean
    命令来完成