android - 什么 Firebase-cloud-messaging Intent-filter 用于 BroadcastReceiver?

标签 android firebase broadcastreceiver firebase-cloud-messaging

我试图让 Android BroadcastReceiver 在 Android 系统收到 Firebase Cloud 消息通知时运行。

public class MyBroadcastReceiver extends BroadcastReceiver {

private static final String TAG = "MyBroadcastReceiver";

@Override
public void onReceive(final Context context, Intent intent) {


    Toast.makeText(context, "EVENT OCCURED", Toast.LENGTH_LONG).show();

   }
}

在 AndroidManifest 中需要这样指定接收者标签:

    <receiver
        android:name=".MyBroadcastReceiver"  android:exported="true">
        <intent-filter>
            <action android:name="android.intent.action.ACTION_POWER_CONNECTED"/>
            <action android:name="com.google.firebase.MESSAGING_EVENT" />
        </intent-filter>
    </receiver>

如您在上面的 list 中所见,我添加了:

<action android:name="android.intent.action.ACTION_POWER_CONNECTED"/>

确保当我将电缆插入 Android 设备时 BroadcastReceiver 触发。它工作正常。

因此问题在于:

<action android:name="com.google.firebase.MESSAGING_EVENT" />

BroadcastReceiver 是否无法识别此 intent-filter 操作? BroadcastReceiver 使用的 Firebase 消息传递是否有另一个 Intent 过滤器操作?

最佳答案

Android Intent 消息传递系统在三个“ channel ”中处理 Intent:Activity、Services 和 BroadcastReceivers。 publishing an Intent 的方法指示 channel 类型:startActivity()startService()sendBroadcast()。使用 startService() 发布的 Intent 将仅匹配服务的 Intent 过滤器。它没有针对 Activity 和 BroadcastReceivers 进行测试。

因为操作 com.google.firebase.MESSAGING_EVENT 通常由派生自 FirebaseMessagingService 的服务接收,所以操作必须是在服务 channel 中发布的情况.您将无法使用 BroadcastReceiver 接收它。

关于android - 什么 Firebase-cloud-messaging Intent-filter 用于 BroadcastReceiver?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44286497/

相关文章:

java - onpreviewframe byte[] 到 int[]

android - 减少 Button onClick 事件的代码

javascript - 哎呀。电子邮件地址格式错误 Firebase/Vue

Android O中不调用具有签名权限的Android隐式BroadcastReceiver

java - 在 Android 中检测屏幕关闭/打开并更改 wifi 状态

android - 将 EditText View 动态添加到水平 ScrollView

安卓软件开发生命周期

firebase - 找不到模块@react-native-firebase/auth

firebase - Firebase Auth 导入是否保留给定的 UID?

Android,检测其他应用何时启动