想确认我们是否可以为实例ID服务和消息服务设置android:exported="false"
。
我通过保留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>
答案 0 :(得分:1)
firebase-messaging库以低优先级(-500)导出自己的非专用FirebaseMessagingService
。您可以在合并的AndroidManifest.xml中看到它。此服务可以处理带有通知的推送消息,例如您可以通过Firebase控制台发送的消息。
如果未导出您的专业服务类,则系统会将来自Google服务包的邮件路由到此非专业服务,并且通知将正常工作。
但这意味着您无法在接收消息或处理自定义数据有效负载时执行其他操作。
答案 1 :(得分:0)
最好忽略警告,并根据@guest答案进行类似的操作
<service android:name=".services.MyFirebaseMessagingService"
tools:ignore="ExportedService">
<intent-filter>
<action android:name="com.google.firebase.MESSAGING_EVENT" />
</intent-filter>
</service>