问题
I am trying to save new data in firebase under a node President. i have already set some rules on that node.
"President":{
"$userId":{
".write": "auth != null && $userId === auth.uid",
".read": " auth.uid != null"
}
},
In my app
FirebaseAuth mFirebaseAuth = FirebaseAuth.getInstance();
FirebaseUser mFirebaseUser = mFirebaseAuth.getCurrentUser();
FirebaseDatabase mDatabase = FirebaseDatabase.getInstance();
if(mFirebaseUser == null){
}else{
String mUserId = mFirebaseUser.getUid();
DatabaseReference vRef = mDatabase.getReference(MyFirebaseConstants.DATABASE_President);
DatabaseReference newPresidentRef = vRef.child(mUserId).push();
String presidentKey = newPresidentRef.getKey();
President pres = new President()//POJO
// other few setters
pres.setId(visitorKey);
newPresidentRef.setValue(pres).addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception e) {
MyLogger.d("failed to save "+e.getMessage());
}
}).addOnSuccessListener(new OnSuccessListener<Void>() {
@Override
public void onSuccess(Void aVoid) {
MyLogger.d("succedded");
}
}).isSuccessful();
my President pojo extends RealmObject and implements Parcelable
However when i go to my firebase console, i can't see any data. onSuccess() is never called and onFailure() is never called.
回答1:
The issue was that I had restricted background data on my device. therefore data was not posted to firebase.
I haven't yet found a better way to detect background data restriction on android device
来源:https://stackoverflow.com/questions/40319118/data-not-posted-on-firebase-database