4

我無法爲android庫生成google-services json,因爲它需要應用程序ID。我知道如何將它添加到一個項目中。如何將GCM/FCM包含在android庫模塊中?

+0

庫沒有應用程序ID。應用程序ID由您的庫的使用者提供。只需包含依賴關係,就是這樣。不要將Google服務插件應用於圖書館。 –

+0

@Eugen我想創建一個庫,可以顯示通知給用戶。即使應用程序具有gcm設置,我的庫也應該能夠生成與應用程序不同的gcm令牌(gcm服務器也會不同)。我的圖書館應該獨立於應用程序 –

回答

2

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地址)和將其與項目ID一起上傳到您的服務器。這些將允許您的服務器發送推送消息。這實質上是您的客戶,允許您代表他們發送推送消息

注意潛在的安全風險和濫用您的服務。

+1

回答中描述的FCM服務器設置可概括爲: 「要求您的用戶創建發件人ID /服務器密鑰並將其提供給您」。 FCM服務器設置還有另一種可能性: 1.可以爲您的圖書館創建一個Firebase項目。 2.不要將google-service.json添加到庫中。每個應用都應該添加它自己的 3.您仍然可以使用API​​爲您的library-firebase-project的sender-id創建一個標記:firebaseInstanceId .getToken(「sender-id-2」,「FCM」) 4.對於客戶端設置,上述說明是正確的。 –

+0

@eugen這正是我在做這件事時所做的,我在提出這個問題之前就已經完成了。但我不想依賴我的客戶推送通知。非常感謝你。 –

+0

@DiegoGiorgini這是我需要的。謝謝。 –

相關問題