我有一个关于FCM通知限制的问题。是否有任何方法可以限制特定屏幕的FCM通知?例如,如果有三个屏幕,屏幕A,屏幕B和屏幕C,则通知应该在屏幕A和屏幕B上接收,而不应该在用户正在观看屏幕C时接收。
如果我是对的,我认为它必须检查屏幕C在发送通知之前是否显示在设备上。那么,我如何检查显示的是哪个屏幕,以及如何限制特定屏幕的通知?
一种方法是拦截所有fcm如果app在前台,检查app是否在前台你可以在FCMService
if(ProcessLifecycleOwner.get().lifecycle == Lifecycle.State.RESUMED)
LocalBroadcastManager.sendBroadcast(Intent())
你需要为它添加生命周期依赖
implementation "androidx.lifecycle:lifecycle-extensions:2.2.0"
kapt "android.arch.lifecycle:compiler:1.1.1"
然后你可以注册一个广播接收器从你的屏幕C和发送显式广播从FCMService。
请注意,广播接收器在屏幕ConResume
上注册,在onDestroy
上未注册。
关于如何使用显式BroadcastReceiver的更多信息在这里