firebase 消息服务可以是 android:exported="false" 吗?

Pra*_*ash 5 android firebase firebase-cloud-messaging

想确认我们是否可以设置android:exported="false"实例id服务和消息服务。

我通过保持进行了测试android:exported="false",通知工作正常。

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

<service
    android:name=".MyFirebaseInstanceIDService"
    android:exported="false">
    <intent-filter>
        <action android:name="com.google.firebase.INSTANCE_ID_EVENT"/>
    </intent-filter>
</service>
Run Code Online (Sandbox Code Playgroud)

gue*_*est 2

firebase-messaging 库导出FirebaseMessagingService自己的非专业化低优先级 (-500)。您可以在合并的 AndroidManifest.xml 中看到它。此服务可以处理携带通知的推送消息,例如您可以通过 Firebase 控制台发送的消息。

如果您的专业服务类未导出,则系统会将消息从 Google 服务包路由到此非专业服务,并且通知将正常工作。

但这意味着您将无法在接收消息或处理自定义数据有效负载时执行其他操作。

  • 最后一句话——它源自 Android 将 firebase 消息传递到 firebase 库的服务*而不是您的服务。如果您要在“MyFirebaseMessagingService”中编写代码来处理数据负载,它永远不会运行。这就是为什么答案应该是否定的,将导出属性设置为 false 是不行的。 (4认同)