firebase-database
Android के साथ FirebaseRealtime डेटाबेस
खोज…
Android में रीयलटाइम डेटाबेस जोड़ें
अपने ऐप को फायरबेस से कनेक्ट करने के लिए इंस्टॉलेशन और सेटअप को पूरा करें।
इससे फायरबेस में प्रोजेक्ट तैयार होगा।Firebase रीयलटाइम डेटाबेस के लिए अपने मॉड्यूल-स्तर
build.gradleफ़ाइल के लिए निर्भरता जोड़ें:
compile 'com.google.firebase:firebase-database:9.2.1'
- फायरबेस डेटाबेस नियम कॉन्फ़िगर करें
अब आप Android में रीयलटाइम डेटाबेस के साथ काम करने के लिए तैयार हैं।
उदाहरण के लिए आप message कुंजी के तहत डेटाबेस में एक Hello World संदेश लिखते हैं।
// Write a message to the database
FirebaseDatabase database = FirebaseDatabase.getInstance();
DatabaseReference myRef = database.getReference("message");
myRef.setValue("Hello, World!");
डेटा को बचाने के लिए setValue का उपयोग करना
setValue() विधि किसी भी बच्चे के नोड्स सहित निर्दिष्ट स्थान पर डेटा को ओवरराइट करती है।
आप इस विधि का उपयोग कर सकते हैं:
- पास प्रकार जो उपलब्ध JSON प्रकार के अनुरूप हैं:
- तार
- लंबा
- दोहरा
- बूलियन
- मानचित्र <स्ट्रिंग, ऑब्जेक्ट>
- सूची
- एक कस्टम जावा ऑब्जेक्ट पास करें, यदि यह परिभाषित करने वाला वर्ग एक डिफ़ॉल्ट कंस्ट्रक्टर है जो कोई तर्क नहीं लेता है और जिसके पास गुणों को असाइन करने के लिए सार्वजनिक गेटर्स हैं।
यह एक CustomObject के साथ एक उदाहरण है।
पहले वस्तु को परिभाषित करें।
@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;
}
फिर डेटाबेस संदर्भ प्राप्त करें और मान सेट करें:
User user = new User(name, email);
DatabaseReference mDatabase mDatabase = FirebaseDatabase.getInstance().getReference();
mDatabase.child("users").child(userId).setValue(user);
डेटा डालने या डेटा के लिए उदाहरण फायरबेस से पुनर्प्राप्त करें
समझने से पहले प्रोजेक्ट को फायरबेस के साथ एकीकृत करने के लिए कुछ सेटअप का पालन करने की आवश्यकता होती है।
Firebase Console में अपना प्रोजेक्ट बनाएँ और कंसोल से google-service.json फ़ाइल डाउनलोड करें और इसे अपने प्रोजेक्ट के ऐप स्तर मॉड्यूल में डालें, कंसोल में प्रोजेक्ट बनाएँ के लिए लिंक का अनुसरण करें
इसके बाद हमें अपनी परियोजना में कुछ निर्भरता जोड़ने की आवश्यकता है,
पहले हमारे प्रोजेक्ट लेवल ग्रेड में क्लास पथ जोड़ें,
classpath 'com.google.gms:google-services:3.0.0'और उसके बाद ऐप लेवल ग्रेडेल में प्लगइन लागू करें, इसे डिपेंडेंसी सेक्शन के नीचे लिखें,
apply plugin: 'com.google.gms.google-servicesअधिक निर्भरता के लिए निर्भरता अनुभाग में ऐप स्तर के उन्नयन में जोड़ने की आवश्यकता होती है
compile 'com.google.firebase:firebase-core:9.0.2'compile 'com.google.firebase:firebase-database:9.0.2'अब फायरबेस डेटाबेस में डेटा डालना शुरू करें, सबसे पहले इसके उदाहरण बनाने की आवश्यकता है
FirebaseDatabase database = FirebaseDatabase.getInstance();FirebaseDatabase object के निर्माण के बाद हम डेटाबेस में डेटा डालने के लिए अपना DatabaseReference बनाने जा रहे हैं,
DatabaseReference databaseReference = database.getReference().child("student");यहाँ
studentतालिका नाम है यदि तालिका डेटाबेस में मौजूद है, तो तालिका में डेटा डालें अन्यथा छात्र के नाम के साथ नया बनाएं, इसके बाद आपdatabaseReference.setValue();का उपयोग करके डेटा सम्मिलित कर सकते हैंdatabaseReference.setValue();निम्नलिखित की तरह कार्य,HashMap<String,String> student=new HashMap<>();student.put("RollNo","1");student.put("Name","Jayesh");databaseReference.setValue(student);यहाँ मैं डेटा को हाइपमैप के रूप में सम्मिलित कर रहा हूँ लेकिन आप मॉडल वर्ग के रूप में भी सेट कर सकते हैं,
फायरबेस से डेटा प्राप्त करने का तरीका शुरू करें, हम यहाँ डेटाबेस से रीड वैल्यू के लिए AddListenerForSingleValueEvent का उपयोग कर रहे हैं
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) { } });
फायरबेस से मूल्य / प्राप्त करें
- जानकारी बनाएँ और पार्स जानकारी में आयात जोड़ें:
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();
//...
}
//...
}
-
addListenerForSingleValueEvent()को हमारे डेटाबेस संदर्भ में जोड़ें:
//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
}
});
}
-
onDataChange()ईवेंट मेंonDataChange()जानकारी के साथ हमारी कक्षा कोonDataChange():
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
//Inflate class with dataSnapShot
Users user = dataSnapshot.getValue(Users.class);
//...
}
- अंत में हम सामान्य रूप से फायरबेस क्लास से अलग-अलग एट्रीब्यूट प्राप्त कर सकते हैं:
//User inflated
Users user = dataSnapshot.getValue(Users.class);
//Get information
this.uID = user.uID;
this.username = user.username;
this.email = user.email;
सर्वोत्तम प्रथाएं
- फायरबेस 32 अलग-अलग बाल स्तरों का समर्थन करता है, फिर गलत संदर्भ लिखना सरल है, इसे खाली करने के लिए एक अंतिम निजी संदर्भ बनाएं:
//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()ईवेंट उस समय कहा जाता है जब उपयोगकर्ता के पास डेटाबेस नियमों द्वारा इस संदर्भ तक पहुंच नहीं होती है। यदि आवश्यक हो तो इस अपवाद को नियंत्रित करने के लिए प्रासंगिक कोड जोड़ें।
अधिक जानकारी के लिए आधिकारिक दस्तावेज देखें