我有一个奇怪的怀疑。
我在我的Android应用程序中使用FCM。假设我的应用程序包的名称是-- files ending with .suo and .user
-- folders bin and obj
,我使用com.example.example
从FCM获得google-service.json
文件,我收到令牌和通知也正常。
但是现在我将包括com.example.example包括com.sample.sample,包括com.example.example
文件在内的每个位置,我也可以在这里得到令牌。
现在,如果我使用包google-service.json
转到FCM项目并从那里ping通,那么通知将发送到com.example.example
我怀疑它应该不对吗?
请帮帮我。
这是我的app level gradle,包含在firbase注册的包名:
com.sample.sample
这是我复制的项目的gradle,包名重构:
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'
答案 0 :(得分:1)
这就是firebase支持对此问题的回复。希望它有所帮助。
感谢您与Firebase支持联系。
您的情况似乎与此SO线程有关。正如我引用我们的一位工程师那样,"请注意,Firebase不使用Java代码中的实际包名,而是使用应用程序的build.gradle文件中的applicationId:.....但如果您将代码重构为不同的包,应用程序ID不会更新。这就解释了为什么应用程序将在重构之后继续工作。"
如果您需要进一步的帮助,请告诉我。
此致 理查德
这是firebase的最终结论:
我已经与我们的团队讨论了这个问题,结果发现FCM使用GMP App Id而不是包名。这就是为什么即使您重构了applicationId和包名,通知仍然可以工作的原因。我还建议您为Android应用的不同版本使用不同的Firebase应用,而不是仅使用一个。
此致 理查德
答案 1 :(得分:0)
如果您要在应用的build.gradle文件中更改应用程序ID ,则需要在firebase控制台中使用新ID注册新应用。
然后下载该应用程序的google-service.json
文件。
在json文件中手动更改应用程序ID将不起作用。
另请注意,如果您只更改包名称,即清单文件中使用的名称, Google将无法识别。在build.gradle中更改应用程序ID需要具有新的应用程序ID。
有关详情,请查看:https://developer.android.com/studio/build/application-id.html
答案 2 :(得分:0)
我不确定这一点,但可能是原因背后这个问题是
更改Package
名称或后,您需要更改Package
表格应用级别草稿文件,在applicationId
文件
package_name = "com.sample.sample"
(新重新package
名称)更新后
希望这会对你有所帮助