Как запустить код, когда пользователь выходит в сеть и / или если драйвер был в сети - PullRequest
0 голосов
/ 12 мая 2019

IOS отправляет запрос в драйвер Android ...

Используя (glomadrian.materialanimatedswitch) MaterialAnimatedSwitch, и когда я переключаюсь в онлайн, он отлично работает.Но если коммутатор был в сети, и пусть, скажем, гонщик запрашивает поездку, ничего не происходит.

location_switch

location_switch.setOnCheckedChangeListener(new MaterialAnimatedSwitch.OnCheckedChangeListener() {
        @Override
        public void onCheckedChanged(boolean isOnline) {
            if (isOnline) {
                // set connected when switched to on
                getInstance().goOnline();

                iosRiderRequest(); // if runs, intents to acceptance activity

                if (ActivityCompat.checkSelfPermission(DriverHome.this, Manifest.permission.
                        ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && ActivityCompat
                        .checkSelfPermission(DriverHome.this, Manifest.permission
                                .ACCESS_COARSE_LOCATION)
                        != PackageManager.PERMISSION_GRANTED) {

                    return;
                }



                buildLocationCallBack();
                buildLocationRequest();

                fusedLocationProviderClient.requestLocationUpdates(mLocationRequest,
                        locationCallback, Looper.myLooper());

                displayLocation();
                Log.e(TAG, "displayLocation1");
                Snackbar.make(mapFragment.getView(), "You are online", Snackbar
                        .LENGTH_SHORT).show();

                btnFindUser.setText("Slide Switch to go OFFLINE");

            } else {
                // set disconnected when switched to off
                onlineDriverRef.removeValue(); // remove 'DriversOnline'
                getInstance().goOffline();
                fusedLocationProviderClient.removeLocationUpdates(locationCallback);
                map.clear();

                // handler.removeCallbacks(drawPathRunnable); // if enabled, causes error
                if (handler != null)
                    handler.removeCallbacks(drawPathRunnable);
                Snackbar.make(mapFragment.getView(), "You are offline", Snackbar
                        .LENGTH_SHORT).show();

                btnFindUser.setText("Slide Switch to go ONLINE");
            }
        }
    });

Если запрос был сделан до того, как водитель уйдетв сети, и как только он / она выходит в онлайн, водитель видит запрос, но если водитель находится в сети в ожидании запроса, а водитель делает запрос, водитель не видит его.

Я пробовал это, ноне работает как надо (внутри onCreate):

final DatabaseReference rideRequests = FirebaseDatabase.getInstance().getReference("RideRequests");
    rideRequests.addListenerForSingleValueEvent(new ValueEventListener() {
        @Override
        public void onDataChange(DataSnapshot dataSnapshot) {
            for (DataSnapshot ds : dataSnapshot.getChildren()) {
                riderId = ds.getKey();

                rideRequests.child(riderId).addListenerForSingleValueEvent(new ValueEventListener() {
                    @Override
                    public void onDataChange(DataSnapshot snapshot) {
                        if (snapshot.child("isIOSRider").exists()) {
                            isIOSRider = true;
                            Log.e(TAG, "isIOSRider = " + isIOSRider);
                            iosRiderRequest();
                        }
                    }

                    @Override
                    public void onCancelled(DatabaseError databaseError) {

                    }
                });
            }
        }

        @Override
        public void onCancelled(DatabaseError databaseError) {

        }
    });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...