用于广播的firebase-cloud-messvice timent过滤器



我试图在Android系统收到Firebase Cloud Message Notification时将Android Broadcastreceiver运行。

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>

您可以在上面的清单中看到:

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

当我将电缆插入Android设备时,确保Broadcastreceiver发射。它可以正常工作。

因此,问题在于:

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

这种意图过滤器的动作是否被广播员识别?Broadcastreceiver使用了另一个意图过滤操作?

Android意图消息系统在三个"渠道"中处理意图:活动,服务和广播界。发布意图的方法表示通道类型:startActivity()startService()sendBroadcast()。使用startService()发布的意图只能匹配服务的意图过滤器。它没有针对活动和广播剂进行测试。

由于com.google.firebase.MESSAGING_EVENT通常是由FirebaseMessagingService派生的服务收到的,因此必须在服务频道中发布操作。您将无法使用广播员接收它。

相关内容

  • 没有找到相关文章

最新更新