3 回答
TA贡献1829条经验 获得超7个赞
如果您是从 Firebase 控制台或notification
使用 FCM API在现场发送通知,则该应用会以两种方式运行 -
如果您的应用程序在前台,
onMessageReceived
则会调用您的 FCM 服务类的方法。如果您的应用程序在后台运行,则您的 FCM 服务类中不会发生任何事情。相反,通知将由 FCM 库本身在内部处理,并且将显示意图中带有启动器活动的通知。
如果您使用 FCM API 发送通知并使用该data
字段,则库本身不会执行任何操作,而是调用该方法onMessageReceived
,无论您的应用程序是在前台还是后台。
因此,为了解决您的问题,您可以使用以下两种解决方案之一:
使用 FCM API 发送通知并使用
data
字段而不是notification
字段。查看文档以了解有关 FCM API 的更多信息。在您的启动器(主要)活动中,检查内部的意图
onCreate
,如果它来自通知,请阅读附加内容,完成主要活动并打开所需的活动。
第二种情况的示例:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
if (checkIntent()) return;
// other code.
}
@Override
protected void onNewIntent(Intent intent) {
super.onNewIntent(intent);
checkIntent();
}
private boolean checkIntent() {
// to receive the value, send the value as custom data from Firebase console.
String value = getIntent().getStringExtra("your_key");
if (value == null) return false;
if (value.equals("something")) {
// open one activity.
} else if (value.equals("another_thing")) {
// open another activity.
}
finish();
return true;
}
TA贡献2051条经验 获得超10个赞
更改以下行
Intent intent = new Intent(click_action);
对此
Intent intent = new Intent(getActivity(), YourClass.class);
添加回答
举报