小编Ant*_*lop的帖子

第三方库中的Firebase接收器

我正在开发一个旨在嵌入到Android应用程序中的Android库(发布在aar文件中)。

由于我的图书馆利用了Firebase通知服务,因此它定义了两项服务(遵循Google的Firebase实施指南):

  1. 第一个扩展FirebaseInstanceIdService并为INSTANCE_ID_EVENTS声明一个意图过滤器。
  2. 第二个扩展FirebaseMessagingService并为MESSAGING_EVENTS声明一个意图过滤器。

如果托管我的库的Android应用程序也依靠Firebase Notifications自行执行,它也将使用相同的意图过滤器(INSTANCE_ID_EVENTSMESSAGING_EVENTS)实现这两个服务。

当多个服务声明了相同的意图过滤器时,关联事件发生时仅通知其中一个。

因此,使用这种配置,不会同时将Firebase相关事件通知库和托管应用程序。对于为例,如果MESSAGING_EVENT只发生在FirebaseMessagingService图书馆的或FirebaseMessagingService应用程序的通知,但没有他们两个。

由于以前的GCM通知实现依赖于接收者(而不是服务),因此库和应用程序都可以接收GCM通知。

您是否知道如何将Firebase事件通知给托管应用程序和库?

非常感谢

更新

我发现唯一的解决方案是既不实现 FirebaseInstanceIdService也不FirebaseMessagingService在库中实现,因此库的清单文件中没有声明与Firebase相关的服务。相反,我在库中使用以下配置声明了WakefulBroadcastReceiver:

<receiver android:name="com.example.InnerFirebaseMessageReceiver"
            android:exported="true"
            android:permission="com.google.android.c2dm.permission.SEND">
            <intent-filter>
                <action android:name="com.google.android.c2dm.intent.RECEIVE" />
                <action android:name="com.google.android.c2dm.intent.REGISTRATION" />
                <category android:name="${applicationId}" />
            </intent-filter>
        </receiver>
Run Code Online (Sandbox Code Playgroud)

我没有找到如何以相同的方式“挂钩”令牌更新事件。

最后,此解决方案使您能够收到有关Firebase消息接收事件的通知,而不会干扰其适当的Firebase服务实现可能附带的托管应用程序。Firebase令牌更新不会通知库,但可以接受,因为它们是与应用程序重置一起发生的事件。

android intentfilter android-intent android-service firebase-cloud-messaging

5
推荐指数
0
解决办法
474
查看次数

如何使用 HikariDataSource 在 logBack 中配置 DBappender 的池大小?

这是我使用 HikariDatasource 的 logback 配置:

<appender name="AUDIT-DB" class="ch.qos.logback.classic.db.DBAppender">
    <connectionSource class="ch.qos.logback.core.db.DataSourceConnectionSource">
        <dataSource class="com.zaxxer.hikari.HikariDataSource">
            <driverClassName>com.mysql.jdbc.Driver</driverClassName>
            <jdbcUrl>jdbc:mysql://myurl:3306/audit?useUnicode=true&amp;characterEncoding=utf8&amp;useSSL=false</jdbcUrl>
            <username>mysqlciuser</username>
            <password>mysqlcipwd</password>
        </dataSource>
    </connectionSource>
</appender>
Run Code Online (Sandbox Code Playgroud)

在 logback https://logback.qos.ch/manual/appenders.html的文档中,我没有找到限制数据源创建的默认池大小(10)的方法。我尝试使用标签 : <maxPoolSize>5</maxPoolSize>但它不起作用。

谢谢你的帮助。

datasource logback hikaricp

4
推荐指数
1
解决办法
934
查看次数