我无法为android库生成google-services json,因为它要求应用程序id。我知道如何在项目中添加它
FCM客户端设置
库没有应用程序ID。应用程序ID由库的使用者提供。只需要包含依赖项,就可以了。不要在图书馆中使用google services插件。
您的客户端可能会遵循https://firebase.google.com/docs/cloud-messaging/android/client教程。这意味着您必须创建库的推送消息处理器,客户端将把工作委托给它。例子:
your.client.app.package.fcm.MyFirebaseMessagingService.kt
class MyFirebaseMessagingService() : FirebaseMessagingService() {
override fun onMessageReceived(p0: RemoteMessage) {
super.onMessageReceived(p0)
// Your client's message handling.
// ...
// If not handled by client, delegate to library.
AwesomeLibrary.processPushMessage(this, p0)
}
your.awesome.library.package.fcm.AwesomeLibraryFcm.kt
object AwesomeLibraryFcm {
fun processPushMessage(context: Context, message: RemoteMessage) {
// TODO Your job.
}
}
正如你所看到的,将Firebase连接到你的库完全由库的消费者处理。你根本不用在客户端碰Firebase
FCM服务器设置
您需要一个应用程序ID来设置FCM。一个应用程序ID只能关联到一个Firebase项目,也就是库的使用者。死胡同。
如果你正在运行一个在线服务和需要发送消息代表你的客户端你需要他们创建一个服务器密钥(限制到你的服务器的IP地址)在谷歌开发控制台和上传它与项目ID到你的服务器。这将允许您的服务器发送推送消息。这实际上是你的客户端允许你代表他们发送推送消息。
注意潜在的安全风险和滥用您的服务
我在库项目中集成了FCM,并在一个新的应用项目中使用了该库。我从库中复制了谷歌服务json文件,并将其粘贴在新应用项目的应用模块中。在此之后,我修改了这个谷歌服务json
文件。我将"client_info"
下的"package_name"
重命名为应用程序包名称,并且我能够获得通知。