更新:GCM已弃用,使用FCM
我正在实现新的谷歌云消息,遵循从谷歌开发人员页面这里的指南
我已经成功地运行并测试了它。但我现在的问题是,我有不同的产品口味,具有不同的applicationId/packageName和不同的谷歌云消息传递项目Id。谷歌服务。Json必须放在/app/google-services。Json,而不是flavor文件夹。
有没有办法让谷歌的服务。Json配置不同的许多口味?
更新:GCM已弃用,使用FCM
我正在实现新的谷歌云消息,遵循从谷歌开发人员页面这里的指南
我已经成功地运行并测试了它。但我现在的问题是,我有不同的产品口味,具有不同的applicationId/packageName和不同的谷歌云消息传递项目Id。谷歌服务。Json必须放在/app/google-services。Json,而不是flavor文件夹。
有没有办法让谷歌的服务。Json配置不同的许多口味?
当前回答
根据ahmed_khan_89的回答,您可以将“复制代码”放在产品风味中。
productFlavors {
staging {
applicationId = "com.demo.staging"
println "Using Staging google-service.json"
copy {
from 'src/staging/'
include '*.json'
into '.'
}
}
production {
applicationId = "com.demo.production"
println "Using Production google-service.json"
copy {
from 'src/production/'
include '*.json'
into '.'
}
}
}
这样你就不必手动切换设置了。
其他回答
不需要任何额外的gradle脚本。
谷歌开始在'android_client_info'的名称中添加不同的包名。它在google-services.json中如下所示
"android_client_info": {
"package_name": "com.android.app.companion.dev"
}
因此,以下步骤足以拥有不同的谷歌服务。json的选择。
有两种口味 在谷歌分析配置页面添加一个新的开发风格的包,并下载google-services.json。 注意在新的配置文件中,两个flavor的包id都在那里 准备你的调味料。
就是这样!
嘿,朋友也寻找名称只使用小写,那么你不会得到这个错误
我目前在同一个应用程序包中使用两个GCM项目Id。我加入了谷歌服务。我的第一个GCM项目的json,但我从第一个切换到第二个只改变SENDER_ID:
String token = instanceID.getToken(SENDER_ID,GoogleCloudMessaging.INSTANCE_ID_SCOPE, null);
(在这一点上,我认为谷歌的服务。Json不是强制性的)
谷歌服务。Json文件是不必要的接收通知。只要在你的构建中为每种味道添加一个变量。gradle文件:
buildConfigField "String", "GCM_SENDER_ID", "\"111111111111\""
使用这个变量BuildConfig。GCM_SENDER_ID代替getString(R.string.gcm_defaultSenderId)注册时:
instanceID.getToken(BuildConfig.GCM_SENDER_ID, GoogleCloudMessaging.INSTANCE_ID_SCOPE, null);
Firebase现在支持多个应用程序id和一个google-services。json文件。
这篇博文详细描述了它。
您将在Firebase中创建一个父项目,用于您的所有变体。然后在Firebase项目下为每个应用程序id创建单独的Android应用程序。
当你创建了所有的变体,你可以下载一个google-services。支持所有应用程序id的Json。当需要单独查看数据时(例如崩溃报告),你可以用下拉菜单进行切换。