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) {
}
});