Firebase integration mit App im Vordergrund

  • Antworten:3
  • Bentwortet
Volkan Aydin
  • Forum-Beiträge: 187

17.07.2019, 22:11:29 via Website

Hallo zusammen, Endlich habe ich wieder Zeit mein App weiterzuentwickeln!

Ich habe vor einigen Wochen mal gefragt wie und ob man Firebase nutzt, Mittlerweile habe ich das Ding zum laufen gebracht, und es macht das was es soll, jedenfalls wenn die App geschlossen ist. Ich habe viele Seiten durchforstet, jedoch mit meinem English bin ich wieder an meine Grenzen gestosen.

Ich möchte, wenn die App im Vordergrund ist, und der Admin eine Activity (den Tisch) offen hat. Jetzt ein anderer mit seiner App ein Bier bestellt. Das ein Alertfenster aufgeht, wo er die bestellung sieht, und abspeichern/zuweisen kann. ( Klingt nach Komerzieller nutzung, ist aber nur für unseren Bandroom)

Das hab ich, und das funktioniert nicht:

public class MainTisch extends Activity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
      iniFirebase();
    }
private void optionBestellungenAlertFenster(){
//In dieser Function wird das alert aufgerufen
}
 private void iniFirebase() {
    new MyFirebaseMessagingService();
    }
        public class MyFirebaseMessagingService extends FirebaseMessagingService {
            private static final String TAG = "FCM Service";
            Logs logs = new Logs("FCM Servis Main");
            @Override
            public void onMessageReceived(RemoteMessage remoteMessage) {
                super.onMessageReceived(remoteMessage);
                if (remoteMessage.getData() != null) {
                    String title = remoteMessage.getData().get("message");
                    logs.i("titel", title);
                    optionBestellungenAlertFenster();
                    Toast.makeText(ctx, "whaaaaat????", Toast.LENGTH_LONG).show();
                }
            }

            @Override
            public void onNewToken(String token) {
                Log.d(TAG, "Refreshed token: " + token);

                // If you want to send messages to this application instance or
                // manage this apps subscriptions on the server side, send the
                // Instance ID token to your app server.
                // sendRegistrationToServer(token);
            }

        }

Ich glaube, entweder habe ich die logik dahinter nicht verstanden, oder das was ich will geht doch nicht :(

Könnt ihr mir da weiterhelfen ??

— geändert am 17.07.2019, 22:13:02

Kommentieren
Beste Antwort
Volkan Aydin
  • Forum-Beiträge: 187

18.07.2019, 21:15:50 via Website

Boah! Hab es geschafft! die lösung hies BroadcastReceiver ......

Das in die Activity eingebaut:

private BroadcastReceiver mMessageReceiver = new BroadcastReceiver() {
    @Override
    public void onReceive(Context context, Intent intent) {
        // Extract data included in the Intent
        String t = intent.getStringExtra("value1");
        String t1 = intent.getStringExtra("value2");
       MyAlert alert = new MyAlert(ctx,a);
       alert.setTitle("teeest");
       alert.setMessage(t1);
       alert.show();
    }
};


@Override
public void onResume() {
    super.onResume();
    LocalBroadcastManager.getInstance(this).registerReceiver(mMessageReceiver,
            new IntentFilter("myFunction"));
}

@Override
public void onPause() {
    super.onPause();
    LocalBroadcastManager.getInstance(this).unregisterReceiver(mMessageReceiver);
}

und das in derFirebaseMessagingService:

Intent intent = new Intent("myFunction");
            // add data
            intent.putExtra("value1", "titel");
            intent.putExtra("value2", title);
            LocalBroadcastManager.getInstance(this).sendBroadcast(intent);

trotzdem vielen Dank! jetzt kann ich getrost ne weinflasche aufmachen :D schönen abend euch noch! und danke für euere hilfe und geduld!

Hilfreich?
Kommentieren
Jokel
  • Forum-Beiträge: 1.527

18.07.2019, 06:24:10 via Website

Hallo
Erstens gehört die massenger Klasse nicht als innere Klasse in die Activity. Sondern als eigene Klasse in eine eigene Datei.

Für weiter schaue dir mal das Beispiel an.
https://medium.com/techsuzu/android-push-notification-using-fcm-firebase-cloud-messaging-c37d165b8320

https://medium.com/@mountainappstudio/open-specific-activity-when-notification-clicked-in-fcm-android-app-development-f1c1d9a75fb5

Da siehst du was alles in deinem Code fehlt.

— geändert am 18.07.2019, 08:21:41

Hilfreich?
Kommentieren
Volkan Aydin
  • Forum-Beiträge: 187

18.07.2019, 19:14:11 via Website

Auf diese zwei Seiten bin ich ja auch schon gestossen, diese helfen mir aber beim Problem nicht.

Nochmal von Vorne :) Mich intressieren diese Notifications nicht, ICH WILL die eigentlich gar nicht! :) Ich will lediglich, das der Admin, während die App läuft, benachrichtigt wird, das jemand was bestellt hat, ich will keine weiter Activity öffnen, sondern, das in der bestehenden Activity ein Popoup aufgeht, resp. der AlertDialog aufgeht, ich dank auf OK klicken kann, und gut ist.

Leider helfen mir diese zwei seiten nicht dabei.

Mir wurde hier letzten gesagt das dies mit Notification zu lösen sei, ich habe leider noch keine befriedigende lösung gefunden. Kompromisse sind da nicht so mein ding :)

Oder vieleicht mal ganz anders gefragt...

Wenn ich WhatsUp offen habe und meine Frau schreibe, sehe ich sofort, wenn sie die Nachricht empfangen hat, das sie eine Nachricht eintippt..... diese verbindung will ich zwischen den Säufer und dem Barkeeper :)


Ergänzung. ich habe mal nach chat Firebase programieren gegoogelt und bin auf https://www.androidtutorialpoint.com/firebase/real-time-android-chat-application-using-firebase-tutorial/ gestossen. Ich denke in die richtung geht es, nur das ich nicht eine Firebase Datenbank nutzen möchte.. aber dieses Zeilen machen mir hoffnung? Bin ich hier auf der richtigen fährte?

Firebase.setAndroidContext(this);
        reference1 = new Firebase("https://androidchatapp-76776.firebaseio.com/messages/" + UserDetails.username + "_" + UserDetails.chatWith);



        reference1.addChildEventListener(new ChildEventListener() {
            @Override
            public void onChildAdded(DataSnapshot dataSnapshot, String s) {
                Map map = dataSnapshot.getValue(Map.class);
                String message = map.get("message").toString();
                String userName = map.get("user").toString();

                if(userName.equals(UserDetails.username)){
                    addMessageBox("You:-\n" + message, 1);
                }
                else{
                    addMessageBox(UserDetails.chatWith + ":-\n" + message, 2);
                }
            }

— geändert am 18.07.2019, 20:28:34

Hilfreich?
Kommentieren
Beste Antwort
Volkan Aydin
  • Forum-Beiträge: 187

18.07.2019, 21:15:50 via Website

Boah! Hab es geschafft! die lösung hies BroadcastReceiver ......

Das in die Activity eingebaut:

private BroadcastReceiver mMessageReceiver = new BroadcastReceiver() {
    @Override
    public void onReceive(Context context, Intent intent) {
        // Extract data included in the Intent
        String t = intent.getStringExtra("value1");
        String t1 = intent.getStringExtra("value2");
       MyAlert alert = new MyAlert(ctx,a);
       alert.setTitle("teeest");
       alert.setMessage(t1);
       alert.show();
    }
};


@Override
public void onResume() {
    super.onResume();
    LocalBroadcastManager.getInstance(this).registerReceiver(mMessageReceiver,
            new IntentFilter("myFunction"));
}

@Override
public void onPause() {
    super.onPause();
    LocalBroadcastManager.getInstance(this).unregisterReceiver(mMessageReceiver);
}

und das in derFirebaseMessagingService:

Intent intent = new Intent("myFunction");
            // add data
            intent.putExtra("value1", "titel");
            intent.putExtra("value2", title);
            LocalBroadcastManager.getInstance(this).sendBroadcast(intent);

trotzdem vielen Dank! jetzt kann ich getrost ne weinflasche aufmachen :D schönen abend euch noch! und danke für euere hilfe und geduld!

Hilfreich?
Kommentieren