Hướng dẫn sử dụng firebase

      48

Firebase Realtime database là một trong những cloud hosted database cung cấp đa nền tảng: Android, IOS và Web. Tất cả dữ liệu được lưu trữ ở format JSON với với bất kỳ một sự thay đổi dữ liệu làm sao thì gồm sự phản hồi ngay lập tức, hiển thị đồng người yêu trên những nền tảng và những thiết bị. Bài xích hướng dân này xây dựng nhằm mục tiêu thể hiện sự phản hồi theo thời gian tực của apps một cách đơn giản dễ dàng khi áp dụng Firebase Realtime database.

Bạn đang xem: Hướng dẫn sử dụng firebase


Phần 1. Giới thiệu những đặc điểm nổi bật của Firebase Realtime database

1) tài liệu được lưu trữ như nào - Định dạng Json

Firebase realtime database lưu trữ dữ liệu theo format JSON. Về cơ phiên bản thì toàn thể dữ liệu là 1 trong JSON tree lớn cùng với nhiều điểm node. Nên khi bạn xây dựng dữ liệu, các bạn cần sẵn sàng một cấu tạo json để dễ ợt cho việc truy vấn tránh việc các node nhỏ bị lồng nhau

Dưới đây là một ví dụ về việc tàng trữ danh sách những hồ sơ người dùng và các nội dung bài viết trong cây json. Bạn có thể tìm phát âm về kết cấu dữ liệu tại trên đây để thực hành

"users": < "name": "Ravi Tamada", "email": "", "address": "XXX, XXXX, 1234" >, "posts": < "id": 100, "author": "Ravi Tamada", "content": "This is awesome firebase realtime database...", "timestamp": "13892733894" >2) dữ liệu offline

Firebase cung ứng sự hỗ trợ tuyệt vời khi nói tới dữ liệu offline. Nó tự động lưu trữ offline khi không có kết nối internet. Mặc dù nó sẽ chất nhận được lưu trữ vào ổ đĩa persistence khi data offline thậm chí khi áp dụng restart. Ổ đĩa persistence có thể gọi đến vì chưng dòng code ở phía dưới. Xem trả lời data offline trên đây

FirebaseDatabase.getInstance().setPersistenceEnabled(true);3) tiến hành các làm việc CRUD

Trước lúc thực hành. Tôi sẽ hướng dẫn chúng ta những thông tin cơ bản về câu hỏi thực thi những phương thức CRUD

Để thực hiện ngẫu nhiên phương thức như thế nào trên các đại lý dữ liệu mặc dù đó hoàn toàn có thể được gọi hoặc ghi, bạn cần phải có được các tham chiếu đến cửa hàng dữ liệu. Các mã dưới đây được cho phép bạn tham chiếu mang lại nút trên thuộc của cơ sở dữ liệu JSON. Tự đây bạn cần phải sử dụng các tên nút con phải đi qua những nút khác

private DatabaseReference mDatabase;mDatabase = FirebaseDatabase.getInstance().getReference();3.1. Inserting Data

Giả sử bạn muốn lưu trữ thông tin người tiêu dùng vào database. Đầu tiên bạn cần tạo User model cùng với constructor rỗng and những ở trong tính khác


IgnoreExtraPropertiespublic class User public String name; public String email; // mặc định constructor required for calls lớn // DataSnapshot.getValue(User.class) public User() public User(String name, String email) this.name = name; this.email = email; Mọi người tiêu dùng cần một ID duy nhất, bạn cũng có thể tạo ra một bằng phương pháp gọi cách tiến hành push () để tạo thành một nút trống rỗng, với khóa duy nhất. Sau đó, được tham chiếu mang lại nút "user" bởi phương thức child(). Sau cuối sử dụng cách tiến hành setValue() để tàng trữ dữ liệu bạn dùng.

DatabaseReference mDatabase = FirebaseDatabase.getInstance().getReference("users");// Creating new user node, which returns the quality key value// new user node would be /users/$userid/String userId = mDatabase.push().getKey();// creating user objectUser user = new User("Ravi Tamada", "");// pushing user khổng lồ "users" node using the userIdmDatabase.child(userId).setValue(user);Bằng việc chạy đoạn code sống dưới, 1 nút người dùng mới sẽ được chèn vào database cùng với cái giá trị khóa duy nhất. Quan sát chung, user id cần được đem lại bằng cách thực hiện đảm bảo Firebase trong ứng dụng mà bạn cung ứng AUTHID chuyển động như người sử dụng id.

"users": < "-KTYWvZG4Qn9ZYTc47O6" : "email" : "", "name" : "Ravi Tamada" , ... >3.2. Reading Data

Để gọi dữ liệu, bạn cần đính kèm cách tiến hành ValueEventListener() để tham chiếu database. Sự khiếu nại này sẽ tiến hành kích hoạt bất cứ khi nào có sự thay đổi trong dữ liệu trong thời gian thực. Trong onDataChange(), bạn cũng có thể thực hiện các phương thức mong muốn vào tài liệu mới.

Dưới đây là sự khiếu nại lắng nghe được kích hoạt bất cứ bao giờ có sự chuyển đổi trong dữ liệu hồ sơ người dùng mà đã tạo ra trước đó.

mDatabase.child(userId).addValueEventListener(new ValueEventListener()
Override public void onDataChange(DataSnapshot dataSnapshot) User user = dataSnapshot.getValue(User.class); Log.d(TAG, "User name: " + user.getName() + ", email " + user.getEmail());
Override public void onCancelled(DatabaseError error) // Failed to read value Log.w(TAG, "Failed to lớn read value.", error.toException()); );3.3. Updating Data

Để update dữ liệu, chúng ta cũng có thể sử dụng cùng phương pháp setValue() để passing cực hiếm mới. Bạn cũng có thể sử dụng thủ tục updateChildren() để passing đường truyền để update dữ liệu cơ mà không làm tác động đến các nút con khác.

Ví dụ, nếu bạn muốn cập nhật chỉ email của bạn dùng, chúng ta cũng có thể sử dụng đoạn code bên

String newEmail = "";mDatabase.child(userId).child("email").setValue(newEmail);3.4. Inserting Data

Để xóa dữ liệu, chúng ta cũng có thể gọi thủ tục removeValue() vào tham chiếu database. Chúng ta cũng có thể pass qua null nhằm gọi phương thức setValue(), nó y như phương thức xóa

Bạn có thể tìm hiểu nhiều hơn thế về CRUD trải qua tài liệu nâng cao ở tại đây

4) Tính bảo mật thông tin và quy định

Quy định của Firebase cung ứng một phương pháp để xác định vai trò người dùng khi tiến hành đọc và ghi. Những quy định này đã đóng sứ mệnh một lớp bảo mật thông tin trên vật dụng chủ trước lúc thực hiện ngẫu nhiên hoạt cồn CRUD. Khoác định các quy định được cho phép người dùng triển khai các vận động đọc cùng ghi chỉ với sau khi xác thực.

Các quy tắc bên dưới đây chất nhận được người sử dụng xác nhận chỉ nhằm đọc hoặc ghi dữ liệu.

"rules": ".read": "auth != null", ".write": "auth != null" Dưới trên đây quy tắc cho phép tất cả mọi người để đọc cùng ghi tài liệu mà không phải xác thực.

"rules": ".read": true, ".write": true Bạn cũng rất có thể sử dụng những quy tắc để xác thực dữ liệu trước lúc chèn vào cơ sở dữ liệu. Ví dụ dưới đây quy tắc chứng thực tên được thấp hơn 50 cam kết tự và gửi email có giá trị sử dụng email thường xuyên.

"rules": ".read": true, ".write": true, "users": "$user": "name": ".validate": "newData.isString() && newData.val().length , "email": ".validate": "newData.isString() && newData.val().matches(/^+\.

Xem thêm: So Sánh Ipv4 Và Ipv6 - Sự Hạn Chế Của Ipv4 Và Sự Ra Đời Của Ipv6

2,4$/i)" Go through firebase security và rules guide khổng lồ learn more about the security concepts.

Tìm hiểu về tính chất bảo mật và khí cụ của Firebase tại đây để khám phá thêm

Phần 2. Demo ứng dụng thực hiện Firebase Realtime database

Bước 1

Điều thứ nhất bạn phải làm là đi mang lại https://firebase.google.com/ và tạo thành một tài khoản để truy cập vào hình ảnh điều khiển. Sau khi chúng ta truy cập vào hình ảnh điều khiển, bạn có thể bắt đầu bằng cách tạo ra các dự án thứ nhất của bạn.

*

Bước 2

Cung cung cấp tên package của project với mã SHA-1. Tiếp nối file google-services.json vẫn được tự động hóa được sở hữu về sau khoản thời gian ấn vào nút địa chỉ cửa hàng app

*

Bước 3

Tạo một dự án công trình mới trong app android Studio từ tệp tin ⇒ dự án công trình mới. Trong những lúc điền những thông tin cụ thể dự án, thực hiện cùng một tên gói mà chúng ta đã chuyển vào đồ họa của Firebase

Bước 4

Paste file google-services.json vào thư mục ứng dụng của dự án công trình của bạn. Bước này rất đặc trưng như dự án công trình của bạn sẽ không được thiết kế mà không tồn tại tập tin này.

Bước 5

Bây tiếng mở build.gradle bên trong thư mục chính của dự án và thêm đoạn mã google play

build.gradledependencies classpath "com.android.tools.build:gradle:2.2.0" classpath "com.google.gms:google-services:3.0.0" // NOTE: vày not place your application dependencies here; they belong // in the individual module build.gradle files Bước 6

Mở app/build.gradle tiếp nối thêm firebase database dependency. Ở cuối file, thêm apply plugin: ‘com.google.gms.google-services’

app/build.gradledependencies // Adding tư vấn library for this demo app compile "com.android.support:design:24.2.1" compile "com.google.firebase:firebase-database:9.6.1"apply plugin: "com.google.gms.google-services"Bước 7

Để tàng trữ hồ sơ người dùng, chúng ta cần một lớp mã sản phẩm được call User.java. Sản xuất một lớp mang tên User.java và thêm vào tiếp sau đây thuộc tính của lớp. Nếu bạn muốn bạn hoàn toàn có thể thêm vài chi tiết tài sản như địa chỉ, điện thoại cảm ứng thông minh di động, vv,

IgnoreExtraPropertiespublic class User public String name; public String email; // default constructor required for calls to // DataSnapshot.getValue(User.class) public User() public User(String name, String email) this.name = name; this.email = email; Bước 8

Mở tệp tin layout của activity_main.xml. Tạo ra layout đối chọi giản, để chúng ta có thể nhập dữ liệu hồ sơ để tàng trữ trong đại lý dữ liệu.

activity_main.xmlLinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="
+id/activity_main" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" android:paddingBottom="
dimen/activity_vertical_margin" tools:context="info.androidhive.firebase.MainActivity"> TextView android:id="
+id/txt_user" android:layout_width="wrap_content" android:layout_height="wrap_content" android:paddingBottom="
dimen/activity_horizontal_margin" android:textSize="20dp" /> LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="vertical"> android.support.design.widget.TextInputLayout android:layout_width="match_parent" android:layout_height="wrap_content"> EditText android:id="
string/name" android:inputType="textCapWords" android:maxLines="1" /> android.support.design.widget.TextInputLayout> android.support.design.widget.TextInputLayout android:layout_width="match_parent" android:layout_height="wrap_content"> EditText android:id="
string/email" android:inputType="textEmailAddress" android:maxLines="1" /> android.support.design.widget.TextInputLayout> Button android:id="
+id/btn_save" style="?android:textAppearanceSmall" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginTop="16dp" android:background="
android:color/white" android:textStyle="bold" /> LinearLayout>LinearLayout>Bước 9

Mở MainActivity.java cùng thêm đoạn mã sống dưới đề nghị thiết. Mã này là rất dễ dàng và dễ dàng hiểu.

Mục tiêu của chúng tôi là tạo thành các cấu tạo JSON như dưới đây, trong những số đó các "APP_TITLE" lưu trữ tên ứng dụng."users" lưu trữ hồ sơ người dùng như là một mảng của các nút.

"app_title" : "Realtime Database", "users" : "-KTYWvZG4Qn9ZYTc47O6" : "email" : "", "name" : "Ravi Tamada" GetReference("APP_TITLE") tạo thành một nút thương hiệu APP_TITLE mà lại các cửa hàng tiêu đề trên thanh công cụ.

GetReference("users") được tham chiếu đến nút tín đồ sử dụng.

CreateUser() phương pháp cửa mặt hàng một người tiêu dùng mới trong cửa hàng dữ liệu thời gian thực

UpdateUser() cập nhật phương thức sử dụng các thông tin như tên cùng email.

MainActivity.javapackage info.androidhive.firebase;import android.os.Bundle;import android.support.v7.app.AppCompatActivity;import android.text.TextUtils;import android.util.Log;import android.view.View;import android.widget.Button;import android.widget.EditText;import android.widget.TextView;import com.google.firebase.database.DataSnapshot;import com.google.firebase.database.DatabaseError;import com.google.firebase.database.DatabaseReference;import com.google.firebase.database.FirebaseDatabase;import com.google.firebase.database.ValueEventListener;public class MainActivity extends AppCompatActivity private static final String TAG = MainActivity.class.getSimpleName(); private TextView txtDetails; private EditText inputName, inputEmail; private Button btnSave; private DatabaseReference mFirebaseDatabase; private FirebaseDatabase mFirebaseInstance; private String userId;
Override protected void onCreate(Bundle savedInstanceState) super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); // Displaying toolbar icon getSupportActionBar().setDisplayShowHomeEnabled(true); getSupportActionBar().setIcon(R.mipmap.ic_launcher); txtDetails = (TextView) findViewById(R.id.txt_user); inputName = (EditText) findViewById(R.id.name); inputEmail = (EditText) findViewById(R.id.email); btnSave = (Button) findViewById(R.id.btn_save); mFirebaseInstance = FirebaseDatabase.getInstance(); // get reference khổng lồ "users" node mFirebaseDatabase = mFirebaseInstance.getReference("users"); // store app title to "app_title" node mFirebaseInstance.getReference("app_title").setValue("Realtime Database"); // app_title change listener mFirebaseInstance.getReference("app_title").addValueEventListener(new ValueEventListener()
Override public void onDataChange(DataSnapshot dataSnapshot) Log.e(TAG, "App title updated"); String appTitle = dataSnapshot.getValue(String.class); // update toolbar title getSupportActionBar().setTitle(appTitle);
Override public void onCancelled(DatabaseError error) // Failed to lớn read value Log.e(TAG, "Failed khổng lồ read tiện ích title value.", error.toException()); ); // Save / update the user btnSave.setOnClickListener(new View.OnClickListener()
Override public void onClick(View view) String name = inputName.getText().toString(); String thư điện tử = inputEmail.getText().toString(); // check for already existed userId if (TextUtils.isEmpty(userId)) createUser(name, email); else updateUser(name, email); ); toggleButton(); // Changing button text private void toggleButton() if (TextUtils.isEmpty(userId)) btnSave.setText("Save"); else btnSave.setText("Update"); /** * Creating new user node under "users" */ private void createUser(String name, String email) // TODO // In real apps this userId should be fetched // by implementing firebase auth if (TextUtils.isEmpty(userId)) userId = mFirebaseDatabase.push().getKey(); User user = new User(name, email); mFirebaseDatabase.child(userId).setValue(user); addUserChangeListener(); /** * User data change listener */ private void addUserChangeListener() // User data change listener mFirebaseDatabase.child(userId).addValueEventListener(new ValueEventListener()
Override public void onDataChange(DataSnapshot dataSnapshot) User user = dataSnapshot.getValue(User.class); // kiểm tra for null if (user == null) Log.e(TAG, "User data is null!"); return; Log.e(TAG, "User data is changed!" + user.name + ", " + user.email); // Display newly updated name and email txtDetails.setText(user.name + ", " + user.email); // clear edit text inputEmail.setText(""); inputName.setText(""); toggleButton();
Override public void onCancelled(DatabaseError error) // Failed khổng lồ read value Log.e(TAG, "Failed to lớn read user", error.toException()); ); private void updateUser(String name, String email) // updating the user via child nodes if (!TextUtils.isEmpty(name)) mFirebaseDatabase.child(userId).child("name").setValue(name); if (!TextUtils.isEmpty(email)) mFirebaseDatabase.child(userId).child("email").setValue(email); Chạy và thử nghiệm những ứng dụng. Các bạn sẽ có thể coi các đổi khác trong thời gian thực vào giao diện điều khiển và tinh chỉnh Firebase. Xem video Demo để biết cách làm rứa nào để chạy và kiểm tra những ứng dụng.