【问题标题】:Firebase push notifications on Android with multiple modules具有多个模块的 Android 上的 Firebase 推送通知
【发布时间】:2017-06-23 15:54:25
【问题描述】:

我目前正在尝试在我们的应用程序中实现推送通知。

所以我们有三个模块。

  • 应用 1
  • 逻辑
  • 应用 2

我给了他们很明显的名字。应用程序 1 和 2 依赖于逻辑模块。此模块包含两个应用程序的所有逻辑。现在我希望向在 App 1 或 App 2 上登录的用户发送特定于 App 的通知。

问题:

我无法将 firebase 逻辑放入 Logic 模块,因为该模块被配置为 lib 模块并且未配置为 App。现在我必须将 firebase 逻辑放在 App 1 和 2 中,但我无法从 Logic 模块访问此逻辑,因为 App 1 和 2 依赖于 Logic 模块,而不是相反。

Firebase 需要为每个连接的应用提供 google-services.json,此文件是生成用户特定推送令牌所必需的。

有没有办法配置它,以便我可以为推送通知生成用户特定的令牌?因此,在用户登录后,必须根据应用程序和用户生成推送令牌,以便该用户可以在他/她登录的所述设备上获得通知。

我希望这已经足够清楚了。

【问题讨论】:

  • 抱歉,不太清楚,app 1和app 2是什么?两个分开的应用程序?
  • 两个独立的应用程序,它们使用模块逻辑中的逻辑。但在 Logic 模块中,每个 App 都有一些不同的行为。
  • 你不能这样做,firebase不需要google-services.json,但是google play services本身(lib),你需要手动这样做
  • 但是firebase依赖项不需要google play services lib吗?或者我可以只在 Logic 模块中编译 firebase 依赖项吗?
  • 没错,firebase lib 需要 google play services 插件,所以你需要手动完成

标签: android firebase push-notification


【解决方案1】:

应该没有什么可以阻止您实施您所描述的内容。

您仍然可以将 Firebase SDK 依赖项添加到库模块。你只是不能在它上面使用 google-services 插件——它只属于应用程序模块。

【讨论】:

  • 啊,是的,我试过了,它确实有效。谢谢!
  • 我有一个类似的问题,我将 firebase sdk 添加到我的库模块并将插件应用到应用程序模块。但它给了我一个碰撞说:'com.google.android.gms:play-services-base' has different version for the compile (9.0.0) and runtime (11.4.0) classpath. You should manually set the same version via DependencyResolution关于如何解决这个问题的任何提示?
  • @Naveed 您找到问题的答案了吗?我在同样的情况下遇到了一些麻烦。
  • 确保您使用的是最新版本的播放服务。这就是我遇到的问题。检查您的顶级 gradle 以确保播放服务版本:com.google.gms:google-services:3.1.1
  • 我面临同样的问题,不知道如何解决。您能否分享解决此问题的步骤?
【解决方案2】:

更新的答案:您可以创建一个与应用客户端分离的 Firebase Cloud Notifications 模块 要使其发挥作用,您必须:

在模块(库)上:

  • 在模块gradle文件中添加implementation 'com.google.firebase:firebase-messaging:17.6.0'
  • 添加

    <service android:name=".firebase.YourNotificationService"> <intent-filter> <action android:name="com.google.firebase.MESSAGING_EVENT" /> </intent-filter> </service>

在 Android 清单文件中。

在您的应用客户端上:

  • 在模块 gradle 文件的最后一行添加 apply plugin: 'com.google.gms.google-services'
  • 在你的模块 gradle 文件中添加 implementation 'com.google.firebase:firebase-core:16.0.8'
  • 在您的模块 gradle 文件中添加 implementation'com.google.firebase:firebase-messaging:17.6.0'
  • 在项目 gradle 文件的“依赖项”块中添加 classpath 'com.google.gms:google-services:4.2.0'
  • 在“app”文件夹中添加“google-services.json”文件

就是这样。这会起作用的。

【讨论】:

    猜你喜欢
    • 2017-05-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-29
    • 1970-01-01
    相关资源
    最近更新 更多