我無法爲android庫生成google-services json,因爲它需要應用程序ID。我知道如何將它添加到一個項目中。如何將GCM/FCM包含在android庫模塊中?
回答
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一起上傳到您的服務器。這些將允許您的服務器發送推送消息。這實質上是您的客戶,允許您代表他們發送推送消息。
注意潛在的安全風險和濫用您的服務。
回答中描述的FCM服務器設置可概括爲: 「要求您的用戶創建發件人ID /服務器密鑰並將其提供給您」。 FCM服務器設置還有另一種可能性: 1.可以爲您的圖書館創建一個Firebase項目。 2.不要將google-service.json添加到庫中。每個應用都應該添加它自己的 3.您仍然可以使用API爲您的library-firebase-project的sender-id創建一個標記:firebaseInstanceId .getToken(「sender-id-2」,「FCM」) 4.對於客戶端設置,上述說明是正確的。 –
@eugen這正是我在做這件事時所做的,我在提出這個問題之前就已經完成了。但我不想依賴我的客戶推送通知。非常感謝你。 –
@DiegoGiorgini這是我需要的。謝謝。 –
- 1. Android Studio:如何在Android模塊中包含Java模塊?
- 2. 如何在Android Studio庫模塊中包含.so文件?
- 3. 如何在Android Studio項目中包含庫模塊依賴項?
- 4. 如何自動將模塊包含在嵌套子模塊中
- 5. 如何將Angular模塊包含在單獨的模塊中
- 6. Android Studio - 在模塊中包含ResourceBundles
- 7. 如何在rails schedule.rake中包含模塊?
- 8. 如何在TideSDK中包含JS模塊?
- 9. 如何在linux中包含python模塊?
- 10. 如何在Elastix模塊中包含JavaScript
- 11. 如何在角度中包含模塊?
- 12. Cx_Freeze - 如何包含模塊
- 13. 如何包含qtsql模塊?
- 14. 在模塊中包含模塊
- 15. 在Titanium Android模塊中包含AAR庫依賴項
- 16. 第三方庫如何包含在本地node.js模塊中?
- 17. 在Ruby中包含模塊
- 18. 在verilog中包含模塊
- 19. 如何在Android庫中包含資源?
- 20. 如何包含java庫在Android Studio中
- 21. 如何在主模塊中包含模塊?
- 22. 如何將環境模塊聲明包含在另一個環境模塊中?
- 23. 將模塊包含在其他模塊中
- 24. 如何將C backtrace包含在內核模塊代碼中?
- 25. 如何將傳統模塊包含在Dojo中AMD
- 26. 如何動態地將模塊包含在嵌套目錄中?
- 27. 如何將coverage(包含在pybuilder中)更新到igrore run.py模塊?
- 28. 如何將庫模塊多次包含到同一個應用程序項目中的多個庫模塊中?
- 29. requirejs模塊包含模塊
- 30. Ruby 2.0如何在包含模塊後從模塊中取出模塊?
庫沒有應用程序ID。應用程序ID由您的庫的使用者提供。只需包含依賴關係,就是這樣。不要將Google服務插件應用於圖書館。 –
@Eugen我想創建一個庫,可以顯示通知給用戶。即使應用程序具有gcm設置,我的庫也應該能夠生成與應用程序不同的gcm令牌(gcm服務器也會不同)。我的圖書館應該獨立於應用程序 –