我正在我的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: INVALID_SENDER
(
我已成功获得注册令牌,但在删除 firebase 项目并重新创建 firebase 项目后,我开始出现Invalid sender
异常。
确认我复制了正确的google-services.json
文件,但发生了异常。
解决方案很简单。只需删除下面生成的谷歌服务文件夹。
Project_Nameappbuildgeneratedresgoogle-services
如果您删除该文件夹并重新生成项目,则会根据当前google-services.json
文件创建正确的 google-services 文件夹。现在,您可以获取Firebase注册令牌。