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);
添加回答
舉報