Ant*_*lop 5 android intentfilter android-intent android-service firebase-cloud-messaging
我正在开发一个旨在嵌入到Android应用程序中的Android库(发布在aar文件中)。
由于我的图书馆利用了Firebase通知服务,因此它定义了两项服务(遵循Google的Firebase实施指南):
FirebaseInstanceIdService并为INSTANCE_ID_EVENTS声明一个意图过滤器。FirebaseMessagingService并为MESSAGING_EVENTS声明一个意图过滤器。如果托管我的库的Android应用程序也依靠Firebase Notifications自行执行,它也将使用相同的意图过滤器(INSTANCE_ID_EVENTS和MESSAGING_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令牌更新不会通知库,但可以接受,因为它们是与应用程序重置一起发生的事件。
| 归档时间: |
|
| 查看次数: |
474 次 |
| 最近记录: |