如何在Android库模块中包含GCM / FCM?

时间:2016-10-15 08:53:14

标签: android google-cloud-messaging android-library firebase-cloud-messaging

无法为Android库生成google-services json,因为它要求提供应用程序ID。我知道如何在项目中添加它。

2 个答案:

答案 0 :(得分:3)

FCM客户端设置

库没有应用程序ID。应用程序ID由您的库的使用者提供。只需包含依赖关系即可。不要在库中应用google服务插件。

您的客户可能会遵循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地址)在Google Dev控制台中,并将其与项目ID 一起上传到您的服务器。这些将允许您的服务器发送推送消息。这基本上是您的客户授予您代表他们发送推送消息的权限

注意潜在的安全风险和滥用您的服务。

答案 1 :(得分:0)

我将FCM集成到库项目中,并在新的应用程序项目中使用了该库。 我从库中复制了Google服务json文件,并将其粘贴到新应用程序项目的应用程序模块中。 之后,我修改了这个Google服务json文件。我在"package_name"下将"client_info"重命名为应用程序包名称,并能够收到通知。