firebase-database
FirebaseRealtime-databas med Android
Sök…
Lägg till Realtime-databasen i Android
Slutför installationen och installationen för att ansluta din app till Firebase.
Detta skapar projektet i Firebase.Lägg till beroendet för Firebase Realtime-databas i din
build.gradlefil påbuild.gradle:
compile 'com.google.firebase:firebase-database:9.2.1'
- Konfigurera Firebase-databasregler
Nu är du redo att arbeta med Realtime-databasen i Android.
Till exempel skriver du ett Hello World meddelande till databasen under message .
// Write a message to the database
FirebaseDatabase database = FirebaseDatabase.getInstance();
DatabaseReference myRef = database.getReference("message");
myRef.setValue("Hello, World!");
Använd setValue för att spara data
Metoden setValue() skriver över data på den angivna platsen, inklusive eventuella underordnade noder.
Du kan använda den här metoden för att:
- Godkända typer som motsvarar de tillgängliga JSON-typerna enligt följande:
- Sträng
- Lång
- Dubbel
- Boolean
- Karta <String, Object>
- Lista
- Passera ett anpassat Java-objekt, om klassen som definierar det har en standardkonstruktör som inte tar några argument och har offentliga bokstäver för de egenskaper som ska tilldelas.
Detta är ett exempel med en CustomObject.
Definiera först objektet.
@IgnoreExtraProperties
public class User {
public String username;
public String email;
public User() {
// Default constructor required for calls to DataSnapshot.getValue(User.class)
}
public User(String username, String email) {
this.username = username;
this.email = email;
}
Få sedan databasreferensen och ställ in värdet:
User user = new User(name, email);
DatabaseReference mDatabase mDatabase = FirebaseDatabase.getInstance().getReference();
mDatabase.child("users").child(userId).setValue(user);
Exempel för datainmatning eller datahämtning från Firebase
Innan du förstår kräver att du följer vissa inställningar för projektintegration med eldbasen.
Skapa ditt projekt i Firebase Console och ladda ner google-service.json-filen från konsolen och lägg den i appnivåmodul för ditt projekt. Följ länken för Skapa projekt i konsolen
Efter detta måste vi lägga till något beroende i vårt projekt,
Lägg först till klassväg i vår projektnivå,
classpath 'com.google.gms:google-services:3.0.0'Och efter det applicera plugin i app-nivå gradel, skriv det nedan för beroende avsnitt,
apply plugin: 'com.google.gms.google-servicesDet finns mer beroende som kräver att lägga till appnivågrad i beroendeavsnittet
compile 'com.google.firebase:firebase-core:9.0.2'compile 'com.google.firebase:firebase-database:9.0.2'Börja nu att infoga data i brandbasdatabasen, måste först skapa instans av
FirebaseDatabase database = FirebaseDatabase.getInstance();efter skapandet av FirebaseDatabase-objekt kommer vi att skapa vår DatabaseReference för infoga data i databasen,
DatabaseReference databaseReference = database.getReference().child("student");Här är
studenttabellnamnet om tabell finns i databasen, sätt sedan in data i tabellen annars skapar du ett nytt med studentnamn, efter det kan du infoga data meddatabaseReference.setValue();fungera som att följa,HashMap<String,String> student=new HashMap<>();student.put("RollNo","1");student.put("Name","Jayesh");databaseReference.setValue(student);Här infogar jag data som hasmap Men du kan också ställa in som modellklass,
Börja hur man hämtar data från brandbasen. Vi använder här addListenerForSingleValueEvent för läsvärde från databasen,
senderRefrence.addListenerForSingleValueEvent(new ValueEventListener() { @Override public void onDataChange(DataSnapshot dataSnapshot) { if(dataSnapshot!=null && dataSnapshot.exists()){ HashMap<String,String> studentData=dataSnapshot.getValue(HashMap.class); Log.d("Student Roll Num "," : "+studentData.get("RollNo")); Log.d("Student Name "," : "+studentData.get("Name")); } } @Override public void onCancelled(DatabaseError databaseError) { } });
Få värde / värden från eldstaden
- Skapa klass och lägg till import för att analysera information:
import com.google.firebase.database.FirebaseDatabase;
import com.google.firebase.database.IgnoreExtraProperties;
//Declaration of firebase references
private DatabaseReference mDatabase;
//Declaration of firebase atributtes
public String uID;
public String username;
public String email;
@IgnoreExtraProperties
public class User {
//Default constructor
public User() {
//Default constructor required for calls to DataSnapshot.getValue(User.class)
mDatabase = FirebaseDatabase.getInstance().getReference();
//...
}
//...
}
- Lägg till
addListenerForSingleValueEvent()till vår databasreferens:
//Add new imports
import com.google.firebase.database.DataSnapshot;
import com.google.firebase.database.DatabaseError;
import com.google.firebase.database.ValueEventListener;
//...
public void getUser(String uID){
//The uID it's unique id generated by firebase database
mDatabase.child("users").child(uID).addListenerForSingleValueEvent(
new ValueEventListener () {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
// ...
}
@Override
public void onCancelled(DatabaseError databaseError) {
// Getting Post failed, log a message
}
});
}
- Blås upp vår klass med brandbasinformation i
onDataChange()-händelsen:
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
//Inflate class with dataSnapShot
Users user = dataSnapshot.getValue(Users.class);
//...
}
- Slutligen kan vi få olika attributtes från eldstadsklass som normalt:
//User inflated
Users user = dataSnapshot.getValue(Users.class);
//Get information
this.uID = user.uID;
this.username = user.username;
this.email = user.email;
Bästa praxis
- Eldfasen stöder 32 olika barnnivåer, då är det enkelt att skriva fel referenser, för att undvika detta skapa en slutlig privat referens:
//Declaration of firebase references
//...
final private DatabaseReference userRef = mDatabase.child("users").child("premium").child("normal").getRef();
//...
public void getUser(String uID){
//Call our reference
userRef.child(uID).addListenerForSingleValueEvent(
new ValueEventListener () {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
// ...
}
@Override
public void onCancelled(DatabaseError databaseError) {
// Getting Post failed, log a message
}
});
}
-
onCancelled()kallas när användaren inte har åtkomst till denna referens genom databasregler. Lägg till relevant kod för att kontrollera detta undantag om du behöver.
För mer information besök officiell dokumentation