Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/197.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 第三方库中的Firebase接收器_Android_Android Intent_Android Service_Firebase Cloud Messaging_Intentfilter - Fatal编程技术网

Android 第三方库中的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

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

由于my library利用了Firebase通知服务,它定义了两个服务(遵循Google提供的Firebase实施指南):

  • 第一个扩展了
    firebaseInstancedService
    ,并为实例ID\u事件声明了一个意图过滤器
  • 第二个扩展了
    FirebaseMessagingService
    ,并为消息传递事件声明了一个意向过滤器
  • 如果托管my library的Android应用程序自身的执行也依赖Firebase通知,那么它也使用相同的目的过滤器(实例ID\u事件消息传递\u事件)实现这两个服务

    当多个服务声明相同的意图筛选器时,当关联事件发生时,只通知其中一个服务

    因此,通过这种配置,库和宿主应用程序不会同时收到Firebase相关事件的通知。例如,如果发生消息传递事件,则仅通知库的
    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令牌更新不会通知库,但可以接受,因为它们是应用程序重置时附带的事件