Android 第三方库中的Firebase接收器
我正在开发一个Android库(发布在aar文件中),旨在嵌入到Android应用程序中 由于my library利用了Firebase通知服务,它定义了两个服务(遵循Google提供的Firebase实施指南):Android 第三方库中的Firebase接收器,android,android-intent,android-service,firebase-cloud-messaging,intentfilter,Android,Android Intent,Android Service,Firebase Cloud Messaging,Intentfilter,我正在开发一个Android库(发布在aar文件中),旨在嵌入到Android应用程序中 由于my library利用了Firebase通知服务,它定义了两个服务(遵循Google提供的Firebase实施指南): 第一个扩展了firebaseInstancedService,并为实例ID\u事件声明了一个意图过滤器 第二个扩展了FirebaseMessagingService,并为消息传递事件声明了一个意向过滤器 如果托管my library的Android应用程序自身的执行也依赖Fireba
firebaseInstancedService
,并为实例ID\u事件声明了一个意图过滤器FirebaseMessagingService
,并为消息传递事件声明了一个意向过滤器FirebaseMessagingService
,或应用程序的FirebaseMessagingService
,但不通知两者
由于以前的GCM通知的实现依赖于接收者(而不是服务),因此GCM通知可以由库和应用程序接收
您知道Firebase事件如何通知宿主应用程序和库吗
非常感谢
更新
我发现的唯一解决方案是在库中既不实现FirebaseInstanceService
也不实现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>
我没有找到如何以相同的方式“钩住”令牌更新事件
最后,此解决方案能够通知Firebase消息接收事件,而不会干扰宿主应用程序,宿主应用程序可以与其适当的Firebase服务实现一起提供。Firebase令牌更新不会通知库,但可以接受,因为它们是应用程序重置时附带的事件