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

NIJ*_* ku 4 android android-library google-cloud-messaging firebase-cloud-messaging

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

Eug*_*nec 7

FCM客户端设置

图书馆没有应用程序 ID。应用程序 ID 由库的使用者提供。只需包含依赖项即可。不要在图书馆上应用谷歌服务插件。

您的客户可能会遵循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)
}
Run Code Online (Sandbox Code Playgroud)

your.awesome.library.package.fcm.AwesomeLibraryFcm.kt

object AwesomeLibraryFcm {
    fun processPushMessage(context: Context, message: RemoteMessage) {
        // TODO Your job.
    }
}
Run Code Online (Sandbox Code Playgroud)

如您所见,将 Firebase 连接到您的库完全由您的库的使用者处理。您根本不会在客户端接触 Firebase。

FCM 服务器设置

您需要一个应用程序 ID 来设置 FCM。一个应用程序 ID 只能与一个 Firebase 项目相关联,这将是您库的使用者的 ID。死路。

如果您正在运行在线服务并需要代表您的客户端发送推送消息您需要他们在 Google Dev Console 中创建服务器密钥(仅限于您服务器的 IP 地址)并将其与项目 ID一起上传到您的服务器。这些将允许您的服务器发送推送消息。这实质上是您的客户允许您代表他们发送推送消息

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