-1
我正在做一個拼車應用程序。爲了讓乘客進入車內,我會讓司機在他/她想要開始乘車時向乘客發送通知。之後,當車手點擊通知時,在SharedPreferences中更改布爾值,並開始騎行。但是,當騎手打開應用程序時,如果沒有點擊任何通知,它就不會發生,因爲我沒有做任何改變它的事情是合理的。這就是爲什麼我想每次用戶打開應用程序時都要檢查通知的原因,但我不知道如何去做。在應用程序打開時檢查通知中的消息
我一般的聽衆↓
public class FcmMessagingService extends FirebaseMessagingService {
@Override
public void onMessageReceived(RemoteMessage remoteMessage) {
if (remoteMessage.getData().size() > 0) {
JSONObject json = new JSONObject(remoteMessage.getData());
try {
sendNotification(json.getString("message").split("Message data payload: ")[0]);
} catch (JSONException e) {
e.printStackTrace();
}
}
}
@Override
public void handleIntent(Intent intent) {
super.handleIntent(intent);
String msg = intent.getExtras().get("message").toString();
System.out.println("Guia: " + msg);
if (msg.contains("IniciarCaronaAgora")) {
PreferenceManager.getDefaultSharedPreferences(this).edit().putString("emCarona", "true").apply();
PreferenceManager.getDefaultSharedPreferences(this).edit().putString("emCaronacid", msg.split("IniciarCaronaAgora cid:")[0]).apply();
}
}
private void sendNotification(String message) {
Intent intent = new Intent(this, ListaCaronasFragment.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
intent.putExtra("fromNotification", true);
intent.putExtra("message", message);
startActivity(intent);
}
如果有人收到通知和應用程序沒有打開,一般的聽衆將工作和我不會。這就是爲什麼我在主要活動中有一小部分代碼,如果有任何意圖,就會打開一個警告框。 ↓
if (getIntent().getExtras()!= null){
String message = getIntent().getExtras().get("message").toString();
AlertDialog ad = new AlertDialog.Builder(ListaCaronasFragment.this).create();
if (message.contains("IniciarCaronaAgora")) {
PreferenceManager.getDefaultSharedPreferences(this).edit().putString("emCarona", "true").apply();
PreferenceManager.getDefaultSharedPreferences(this).edit().putString("emCaronacid", message.split("IniciarCaronaAgora cid:")[0]).apply();
}
ad.setTitle("Aviso");
ad.setMessage(message);
ad.setButton(AlertDialog.BUTTON_POSITIVE, "OK", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.dismiss();
}
});
ad.show();
}
在backgtound的應用程序中,你無法管理通知? –
我用它的標準方式。它通常顯示應用程序圖標和應用程序名稱。我只是控制向用戶顯示消息。換句話說,我不能控制,直到現在,我沒有理由。 –
像往常一樣的答案是:你發送了一個錯誤的通知類型(問很多很多次,像* onMessageReceived不叫*) – Selvin