Jup*_*ter 3 android broadcastreceiver firebase firebase-cloud-messaging
我正在尝试让Android系统收到Firebase Cloud消息通知时运行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();
}
}
Run Code Online (Sandbox Code Playgroud)
在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>
Run Code Online (Sandbox Code Playgroud)
如您在上面的清单中所见,我添加了:
<action android:name="android.intent.action.ACTION_POWER_CONNECTED"/>
Run Code Online (Sandbox Code Playgroud)
以确保当我将电缆插入Android设备时会触发BroadcastReceiver。工作正常。
因此,问题在于:
<action android:name="com.google.firebase.MESSAGING_EVENT" />
Run Code Online (Sandbox Code Playgroud)
广播接收器无法识别此意图过滤器动作吗?BroadcastReceiver使用的Firebase消息是否还有另一个意图过滤器动作?
Android Intent消息传递系统在三个“渠道”中处理Intent:活动,服务和BroadcastReceivers。为这些方法发布一个意图指示信道类型: startActivity(),startService()和sendBroadcast()。与一起发布的意图startService()仅与服务的意图过滤器匹配。未针对活动和广播接收器进行测试。
由于操作com.google.firebase.MESSAGING_EVENT通常是由派生自的服务接收的FirebaseMessagingService,因此必须在服务渠道中发布操作。您将无法使用BroadcastReceiver接收它。
| 归档时间: |
|
| 查看次数: |
3214 次 |
| 最近记录: |