即使在更改应用包名称后,Firebase 也会发送通知



我有一个奇怪的疑问。 我正在我的安卓应用程序中使用 FCM。假设我的应用程序的软件包名称是com.example.example,并且我使用 FCM 从 FCM 获得了google-service.json文件com.example.example并且我获得的令牌和通知也工作正常。 但是现在我将重新分解包 com.example.example 到 com.sample.sample 代码中的每个位置,包括google-service.json文件,我也能够在这里获得令牌。 现在,如果我使用包com.example.example转到FCM项目并从那里ping,通知将com.sample.sample我怀疑它不应该来对吗? 请帮我解决这个问题。

这是我的应用程序级别gradle,其软件包名称在firbase注册:

apply plugin: 'com.android.application'
android {
compileSdkVersion 26
defaultConfig {
applicationId "com.pushnotification.fcmnotifier"
minSdkVersion 22
targetSdkVersion 26
versionCode 1
versionName "1.0"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation 'com.android.support:appcompat-v7:26.1.0'
implementation 'com.android.support:mediarouter-v7:26.1.0'
implementation 'com.android.support.constraint:constraint-layout:1.0.2'
implementation 'com.android.support:design:26.1.0'
testImplementation 'junit:junit:4.12'
androidTestImplementation 'com.android.support.test:runner:1.0.1'
androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.1'
compile 'com.google.android.gms:play-services:11.8.0'
compile 'com.google.firebase:firebase-messaging:11.8.0'
}
apply plugin: 'com.google.gms.google-services'

这是我复制的项目的gradle,包名称重构了:

apply plugin: 'com.android.application'

android {
compileSdkVersion 26
defaultConfig {
applicationId "com.fcmNotification.fcmNotification"
minSdkVersion 22
targetSdkVersion 26
versionCode 1
versionName "1.0"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation 'com.android.support:appcompat-v7:26.1.0'
implementation 'com.android.support:mediarouter-v7:26.1.0'
implementation 'com.android.support.constraint:constraint-layout:1.0.2'
implementation 'com.android.support:design:26.1.0'
testImplementation 'junit:junit:4.12'
androidTestImplementation 'com.android.support.test:runner:1.0.1'
androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.1'
compile 'com.google.android.gms:play-services:11.8.0'
compile 'com.google.firebase:firebase-messaging:11.8.0'
}
apply plugin: 'com.google.gms.google-services'

如果您要在应用的build.gradle文件中更改应用ID,则需要在Firebase控制台中使用新ID注册新应用。 然后下载该应用程序的google-service.json文件。

手动更改 json 文件中的应用程序 ID 将不起作用。

另请注意,如果您只更改软件包名称,即清单文件中使用的名称,Google 将无法识别。在 build.gradle 中更改应用程序 ID 需要具有新的应用程序 ID。

有关更多信息,请查看此内容:https://developer.android.com/studio/build/application-id.html

这是Firebase支持对这个问题的回答。希望对您有所帮助。

感谢您联系 Firebase 支持人员。

看来您的情况可能与此SO线程有关。正如我引用我们的一位工程师的话,"请注意,Firebase 不会使用您的 Java 代码中的实际软件包名称,而是使用您应用程序的 build.gradle 文件中的 applicationId:.....但是,如果将代码重构到其他包中,则不会更新应用程序 ID。这就解释了为什么应用程序在这样的重构后将继续工作。

如果您需要进一步的帮助,请告诉我。

问候 理查

这是Firebase的最终结论:

我已经与我们的团队讨论了这个问题,结果发现 FCM 使用 GMP 应用程序 ID 而不是按包名称。这就是为什么即使重构了应用程序 ID 和包名称,通知仍然有效的原因。 我还建议您为不同版本的Android应用程序使用不同的Firebase应用程序,而不是只使用一个。

问候 理查

我不确定这一点,但可能是这个问题背后的一个原因是

更改Package名称引用Package后,您应该必须更改applicationId表单应用程序级别的 gradle文件,之后每package_name = "com.sample.sample"更新一次(新的引用package名称)从google-services.json文件

希望这对您有所帮助

相关内容

  • 没有找到相关文章

最新更新