You are on page 1of 39

BỘ GIÁO DỤC VÀ ĐÀO TẠO

TRƯỜNG ĐẠI HỌC CÔNG NGHỆ TP. HCM

BÁO CÁO ĐỒ ÁN LẬP TRÌNH TRÊN THIẾT BỊ DI ĐỘNG

ĐỀ TÀI

MẠNG XÃ HỘI QDN

Giảng viên hướng dẫn: Sinh viên thực hiện:

Thầy: NGUYỄN HỮU TRUNG ĐINH NHẬT ĐẠT-1911062403

ĐINH LÊ NGỌC-1911060482

NGUYỄN HOÀNG MINH-1911062214

LỚP: 19DTHA3

TP. Hồ Chí Minh, tháng 08, năm 2022


BỘ GIÁO DỤC VÀ ĐÀO TẠO

TRƯỜNG ĐẠI HỌC CÔNG NGHỆ TP. HCM

BÁO CÁO ĐỒ ÁN LẬP TRÌNH TRÊN THIẾT BỊ DI ĐỘNG

ĐỀ TÀI

MẠNG XÃ HỘI QDN

Giảng viên hướng dẫn: Sinh viên thực hiện:

Thầy: NGUYỄN HỮU TRUNG ĐINH NHẬT ĐẠT-1911062403

ĐINH LÊ NGỌC-1911060482

NGUYỄN HOÀNG MINH-1911062214

LỚP: 19DTHA3

TP. Hồ Chí Minh, tháng 08, năm 2022


NHẬN XÉT CỦA GIẢNG VIÊN HƯỚNG DẪN
……………………………………………………………………………
……………………………………………………………………………
……………………………………………………………………………
……………………………………………………………………………
……………………………………………………………………………
……………………………………………………………………………
……………………………………………………………………………
……………………………………………………………………………
……………………………………………………………………………
……………………………………………………………………………
……………………………………………………………………………
……………………………………………………………………………
……………………………………………………………………………
……………………………………………………………………………
……………………………………………………………………………
……………………………………………………………………………
……………………………………………………………………………
……………………………………………………………………………
……………………………………………………………………………
……………………………………………………………………………
……………………………………………………………………………
……………………………………………………………………………
……………………………………………………………………………
……………………………………………………………………………
……………………………………………………………………………
……………………………………………………………………………
……………………………………………………………………………
……………………………………………………………………………
……………………………………………………………………………
……………………………………………………………………………
LỜI MỞ ĐẦU

Trong thời đại Công nghệ thông tin ngày càng phát triển, việc áp dụng các thành tựucủa
chúng mang lại hiệu quả và lợi ích to lớn trên mọi mặt của đời sống xã hội trở nên dễ
dàng hơn. Đáng kể đến và không thể thiếu trong thời đại hiện nay đó là “App mạng xã
hội”, đã không còn xa lạ và gắn liền với cuộc sống hằng ngày của chúng ta. Mọi người có
thể dễ dàng chia sẻ hình ảnh, kết bạn, đăng bài thông qua “Mạng xã hội QDN” được cài
đặt trên thiết bị di động. Nắm bắt được cơ hội này, nhóm chúng em đã lên ý tưởng, tìm
hiểu và tạo ra ứng dụng “Mạng xã hội QDN” này.
LỜI CẢM ƠN

Nhóm chúng em xin gửi lời cảm ơn chân thành đến thầy Nguyễn Hữu Trung đã tận tình
giảng dạy, hướng dẫn nhóm chúng em hoàn thành được bài báo cáo đồ án này. Tuy
nhiên, do kiến thức còn hạn hẹp, cũng như chưa có kinh nghiệm làm một chương trình
lớn và có tính ứng dụng thực tế cao nên trong quá trình thực hiện nhóm chúng em còn
phạm phải nhiều sai sót cũng như chương trình chưa đạt được kết quả tốt nhất. Trong thời
gian sắp tới, nhóm chúng em sẽ tiếp tục nghiên cứu để hoàn thiện, có được kết quả tốt
hơn cho ứng dụng này. Rất mong được sự thông cảm, đóng góp ý kiến từ thầy và người
đọc.
MỤC LỤC
CHƯƠNG 1: TỔNG QUAN.....................................................................................1
I. TỔNG QUAN VỀ ĐỀ TÀI......................................................................................1
1. Lý do chọn đề tài..................................................................................................1
2. Giới thiệu về đề tài................................................................................................1
3. Nhiệm vụ đồ án.....................................................................................................1
II. MÔ TẢ CHỨC NĂNG............................................................................................1
III. CẤU TRÚC ĐỒ ÁN.............................................................................................2
CHƯƠNG 2: CƠ SỞ LÝ THUYẾT.........................................................................3
I. GIỚI THIỆU ANDROID STUDIO..........................................................................3
1. Android Studio là gì?............................................................................................3
2. Một số tính năng nổi bật:......................................................................................4
II. Giới thiệu về Java.....................................................................................................5
1. Java là gì?.............................................................................................................5
2. Các tính năng của Java..........................................................................................5
3. Các thành phần trong Java....................................................................................7
III. GIỚI THIỆU VỀ FIREBASE...............................................................................8
1. Firebase là gì?.......................................................................................................8
2. Realtime Database là gì?.......................................................................................8
3. Authentication là gì?.............................................................................................9
4. Storage là gì?........................................................................................................9
IV. PHÂN TÍCH THIẾT KẾ HỆ THỐNG.................................................................9
1. Sơ đồ UseCase......................................................................................................9
2. Sơ đồ Activity.....................................................................................................11
3. Sơ đồ Sequence...................................................................................................13
CHƯƠNG 3: KẾT QUẢ THỰC NGHIỆM..........................................................15
CHƯƠNG 4: KẾT LUẬN......................................................................................30
DANH MỤC HÌNH ẢNH, BẢNG BIỂU

Hình 2.1: Kiến trúc hệ điều hành Android


Hình 2.2: Các tính năng của Java

Hình 2.3: Sơ đồ UseCase tổng quát

Hình 2.4: Sơ đồ UseCase đăng bài

Hình 2.5: Sơ đồ UseCase danh mục app

Hình 2.3: Sơ đồ Activity đăng nhập

Hình 2.4: Sơ đồ Activity đăng ký

Hình 2.5: Sơ đồ Sequence

Hình 2.9: Bảng yêu cầu chức năng đối với người dùng

Hình 3.1: Giao diện đăng ký

Hình 3.2: Giao diện đăng nhập

Hình 3.3: Giao diện chỉnh sửa tài khoản

Hình 3.4: Giao diện đăng xuất

Hình 3.5: Giao diện thông báo

Hình 3.6: Giao diện bảng tin

Hình 3.7: Giao diện lưu bài viết

Hình 3.8: Giao diện đăng bài

Hình 3.9: Giao diện tìm kiếm và theo dõi người dùng khác

Hình 3.10: Giao diện bình luận bài đăng


Hình 3.11: Giao diện like bài đăng

Hình 3.12: Giao diện xem bài đăng

Hình 3.13: Giao diện các bài đã đăng

Hình 3.14: Giao diện người theo dõi mình

Hình 3.15: Giao diện người mình đang theo dõi


CHƯƠNG 1: TỔNG QUAN

I. TỔNG QUAN VỀ ĐỀ TÀI


1. Lý do chọn đề tài
Trong thời đại Công nghệ thông tin ngày càng phát triển, thiết bị di động đã trở nên
phổ biến và thân thuộc với mọi người. Nắm bắt được cơ hội này, nhóm chúng em
đã lên ý tưởng, tìm hiểu và tạo ra ứng dụng “Mạng xã hội QDN” này.

2. Giới thiệu về đề tài


- Công nghệ sử dụng: Android Studio IDE, Firebase Database.
- Các chức năng của ứng dụng: Đăng kí, đăng nhập, đăng bài, like, comment, lưu
bài, chỉnh thông thông tin cá nhân, theo dõi người dùng, xem thông tin người
dùng, xem thông báo.

3. Nhiệm vụ đồ án
- Nhằm phục vụ người dùng có nhu cầu sử dụng “Mạng xã hội QDN”
- Đối tượng sử dụng: cho mọi người dùng
- Phạm vi sử dụng: smartphone hệ điều hành Android

II. MÔ TẢ CHỨC NĂNG


- Chức năng đăng ký: dùng để tạo tài khoản.
- Chức năng đăng nhập: sử dụng tài khoản đã tạo ra để truy cập vào app.
- Chức năng đăng bài: người dùng sẽ đăng bài bất kì mà họ muốn.
- Chức năng like: người dùng ấn nút yêu thích hình ảnh bất kì.
- Chức năng comment: dùng để viết bình luận vào bài viết mà người dùng đã
đăng.
- Chức năng lưu bài: người dùng sẽ lưu lại bài viết mà người dùng muốn.
Chức năng chỉnh sửa thông tin cá nhân: người dùng sẽ truy cập vào mục chỉnh sửa
thông tin cá nhân để chỉnh sửa
- Chức năng theo dõi người dùng: người dùng sẽ sử dụng chức năng này để theo
dõi người dùng khác.
- Chức năng xem thông tin người dùng: người dùng sẽ xem được thông tin của
người dùng khác bất kì.

Trang 1|
- Chức năng xem thông báo: người dùng sẽ xem được thông báo mà app thông
báo đến tài khoản của họ.

III. CẤU TRÚC ĐỒ ÁN

Chương 1: Tổng Quan


Chương 2: Cơ Sở Lý Thuyết
Chương 3: Kết Quả Thực Nghiệm
Chương 4: Kết Luận

Trang 2|
CHƯƠNG 2: CƠ SỞ LÝ THUYẾT

I. GIỚI THIỆU ANDROID STUDIO


1. Android Studio là gì?
Android là hệ điều hành mã nguồn mở, dựa trên Linux Kernel, dành cho các
thiết bị di động nói chung (điện thoại, máy tính bảng, đồng hồ thông minh, máy nghe
nhạc,…).

Có nghĩa là Android không chỉ giới hạn trong phạm vi một hệ điều hành cho
điện thoại! Nó có thể được nhà sản xuất cài đặt lên đồng hồ, máy nghe nhạc, thiết bị
định vị GPS, thậm chí là ô tô (các thiết bị Android Auto).

Android cũng không phải là một thiết bị hay sản phẩm cụ thể, nó là một hệ điều
hành dựa trên Linux, nguồn mở, linh hoạt.Hiện Android là một thương hiệu của
Google. Có khả năng tùy biến rất cao và có thể chạy trên nhiều thiết bị, nhiều kiến trúc
vi xử lý (ARM / x86).

Về kiến trúc của hệ điều hành Android, chúng ta có thể xem qua sơ đồ sau:

Trang 3|
Hình 2.6: Kiến trúc hệ điều hành Android

Tóm tắt về các tầng của kiến trúc như sau:

Tầng Applications: Là tầng chứa các ứng dụng Danh bạ, Gọi điện, Trình duyệt,
Nghe nhạc,… các ứng dụng này thường mua máy về chúng ta đã có sẵn rồi.

Tầng Framework: Là tầng chứa các API để làm việc với hệ điều hành như lấy
thông tin danh bạ, quản lý các Activity (Activity là gì thì giờ chúng ta chưa cần
quan tâm, các bài sau sẽ giải thích kĩ), quản lý địa điểm, quản lý các View (cũng
chưa cần quan tâm).

Tầng Libraries: Chứa các thư viện, API gần như là cốt lõi của Android, bao gồm
bộ quản lý bề mặt cảm ứng (Surface Manager), OpenGL (phục vụ cho việc dựng
đồ họa phức tạp),…

Tầng Android Runtime: Chứa các thư viện lõi của Android và máy ảo Dalvik
Virtual Machine (từ Android 4 trở lên chúng ta có thêm máy ảo ART).

Tầng Kernel: Là nhân lõi của hệ điều hành, chứa các tập lệnh, driver giao tiếp
giữa phần cứng và phần mềm của Android.

Trong quá trình làm việc, chúng ta sẽ gần như chỉ làm việc với tầng xanh lam
(Applications và Application Framework) và xanh lá (Libraries). Chương trình
Android được viết bằng ngôn ngữ Java và được máy ảo DVM / ART trong mỗi thiết
bị Android biên dịch ra mã máy.

2. Một số tính năng nổi bật:

- Một hệ thống xây dựng Gradle linh hoạt


- Trình mô phỏng nhanh và tính năng phong phú
- Một môi trường hợp nhất nơi bạn có thể phát triển cho tất cả các thiết bị
Android
- Instant Run để đẩy các thay đổi vào ứng dụng đang chạy của bạn mà không cần
xây dựng một APK mới

Trang 4|
- Mẫu mã và tích hợp GitHub để giúp bạn xây dựng các tính năng ứng dụng phổ
biến và nhập mã mẫu
- Các công cụ và khuôn khổ thử nghiệm mở rộng
- Lint công cụ để bắt hiệu suất, khả năng sử dụng, tương thích phiên bản, và các
vấn đề khác
- Hỗ trợ C ++ và NDK
- Tích hợp hỗ trợ Google Cloud Platform, giúp dễ dàng tích hợp Google Cloud
Messaging và App Engine
- Hỗ trợ tích hợp sâu Firebase vào trong các ứng dụng chỉ sau một click chuột.

II. Giới thiệu về Java.


1. Java là gì?
 Java là một ngôn ngữ hướng đối tượng tương tự như C ++, nhưng với các tính
năng nâng cao và được đơn giản hóa. Java có thể chạy trên tất cả các nền tảng.
 Java có thể đồng thời thực hiện nhiều câu lệnh thay vì thực hiện theo tuần tự.
Dựa trên Class và một ngôn ngữ lập trình hướng đối tượng. Ngôn ngữ lập trình
độc lập tuân theo logic của “Viết Viết một lần, Chạy mọi nơi” tức là mã được
biên dịch có thể chạy trên tất cả các nền tảng hỗ trợ java.
 Nói một cách đơn giản, nó là một nền tảng điện toán nơi bạn có thể phát triển
các ứng dụng.

2. Các tính năng của Java


Đơn giản: Java đã cải tiến dễ dàng hơn bằng cách loại bỏ tất cả các phức tạp như
con trỏ, các toán tử, phương thức nạp chồng (overload)như bạn thấy trong C ++
hoặc bất kỳ ngôn ngữ lập trình nào khác.
Portable: Java độc lập với nền tảng, có nghĩa là mọi ứng dụng được viết trên một
nền tảng đều có thể dễ dàng chuyển sang nền tảng khác.

Hướng đối tượng: Mọi thứ được coi là một đối tượng khác nhau, có sở hữu các
thuộc tính và tất cả các hoạt động được thực hiện bằng cách sử dụng các đối tượng
này.

Trang 5|
Bảo mật: Tất cả các mã được chuyển đổi sang byteCode sau khi biên dịch, không
thể đọc được bởi con người và chạy các chương trình bên trong Sandbox để ngăn
chặn mọi hoạt động từ các nguồn không đáng tin cậy. Nó cho phép phát triển các
hệ thống / ứng dụng không có virus, giả mạo.

Linh hoạt: Nó có khả năng thích ứng với môi trường phát triển hỗ trợ cấp phát bộ
nhớ động do giảm lãng phí bộ nhớ và hiệu suất của ứng dụng được tăng lên.

Phân tán: Java cung cấp một tính năng giúp tạo các ứng dụng phân tán. Sử dụng
phương thức từ xa(RMI), một chương trình có thể gọi một phương thức của một
chương trình khác thông qua và nhận được đầu ra. Bạn có thể truy cập các file
bằng cách gọi các phương thức từ bất kỳ máy nào trên internet.

Mạnh mẽ: Java có một hệ thống quản lý bộ nhớ mạnh. Nó giúp loại bỏ lỗi vì nó
kiểm tra Code trong quá trình biên dịch và runtime.

Hiệu suất cao: Java đạt được hiệu suất cao thông qua việc sử dụng byteCode có
thể dễ dàng dịch sang mã máy. Với việc sử dụng các trình biên dịch JIT (Just-In-
Time), Java mang lại hiệu năng cao.

Thông dịch: Java được biên dịch thành byteCode, được thông dịch bởi môi trường
Java run-time.

Đa luồng: Java hỗ trợ nhiều luồng thực thi, bao gồm một tập hợp các nguyên hàm
đồng bộ hóa. Điều này làm cho lập trình với các chủ đề dễ dàng hơn nhiều

Trang 6|
Hình 2.7: Các tính năng của Java

3. Các thành phần trong Java

a. JVM (Java Virtual Machine)


JVM là máy ảo giúp máy tính chạy các chương trình Java. Đây là môi trường giúp
cho byteCode java có thể thực thi.
Nó là một cỗ máy trừu tượng. Đây là một đặc tả cung cấp một môi trường thời gian
chạy trong đó mã byte Java có thể được thực thi. Nó theo ba ký hiệu:

Specification: Đây là một tài liệu mô tả việc triển khai máy ảo Java. Nó được cung
cấp bởi Sun và các công ty khác.

Implementation (Triển khai): Đây là một chương trình đáp ứng các yêu cầu của
đặc tả JVM.

Instance Runtime: Một thể hiện của JVM được tạo bất cứ khi nào bạn viết lệnh
java trên dấu nhắc lệnh và chạy các lớp.

b. JRE (Java Runtime Environment)


JRE (là viết tắt của Java Runtime Environment) được sử dụng để cung cấp môi
trường để các byteCode có thể thực thi. Nó là trình triển khai của JVM và cung cấp
các lớp thư viện hoặc các file khác mà JVM sử dụng khi chạy. Vì vậy, JRE là gói
phần mềm chứa những gì được yêu cầu để chạy chương trình Java. Về cơ bản.

Trang 7|
JDK (Bộ phát triển Java)
Đây là công cụ cần thiết để:
– Biên dịch
– Tài liệu
– Đóng gói chương trình Java.
JDK bao gồm JRE và các Development Tool các công cụ lập trình cho các lập trình
viên Java. Bộ công cụ phát triển Java được cung cấp miễn phí. Cùng với JRE, nó
bao gồm trình thông dịch / trình tải, trình biên dịch (javac), trình lưu trữ (jar), trình
tạo tài liệu (Javadoc) và các công cụ khác cần thiết trong phát triển Java. Nói tóm
lại, nó chứa các công cụ phát triển JRE +.

III. GIỚI THIỆU VỀ FIREBASE


1. Firebase là gì?
Firebase là nền tảng phát triển ứng dụng đa năng của di động và website. Và năm
2012, Firebase ra đời dưới dạng Backend-as-a-Service với chức năng thời gian thực.
Sau khi được Google mua lại vào năm 2014 thì Firebase nhanh chóng phát triển
thành nền tảng phát triển ứng dụng đa năng của di động và website như ngày nay.
Nền tảng này là sự kết hợp giữa cloud với hệ thống máy chủ của Google để tập
trung chính cho 2 đối tượng là:

 Develop & test your app: phát triển và thử nghiệm các ứng dụng được thiết kế.

 Grow & engage your audience: phân tích dữ liệu và tối ưu hóa trải nghiệm
với người dùng.

Firebase cung cấp cho chúng ta những API đơn giản, mạnh mẽ và đa nền tảng trong
việc quản lý, sử dụng database.

2. Realtime Database là gì?


Dịch vụ Realtime database cho phép người dùng lưu trữ và đồng bộ dữ liệu theo
thời gian thực. Dịch vụ này được lưu trữ trực tiếp trên iCloud. Trong trường hợp
thiết bị của bạn ngoại tuyến thì chúng sẽ sử dụng tới bộ nhớ của thiết bị và tự động
đồng bộ lên server khi thiết bị online. Do đó bạn hoàn toàn có thể yên tâm về độ
tương tác.

Trang 8|
3. Authentication là gì?
Dịch vụ Authentication cung cấp cho ứng dụng của bạn một số phương pháp xác
thực thông qua email, mật khẩu, số điện thoải, tài khoản Google, tài khoản
Facebook… Với tính năng này, người dùng sẽ dễ dàng xây dựng login mà không
cần sử dụng dữ liệu đăng ký riêng.

4. Storage là gì?
Storage là nơi lưu trữ dữ liệu cá nhân của từng ứng dụng, các dữ liệu được tạo ra và
lưu trữ này sẽ được sự dụng riêng cho từng ứng dụng đó và các ứng dụng khác sẽ
không thể truy cập vào được.

IV. PHÂN TÍCH THIẾT KẾ HỆ THỐNG


1. Sơ đồ UseCase

Hình 2.3: Sơ đồ UseCase tổng quát

Trang 9|
Hình 2.4: Sơ đồ UseCase đăng bài

Hình 2.5: Sơ đồ UseCase danh mục app

T r a n g 10 |
2. Sơ đồ Activity

Hình 2.8: Sơ đồ Activity đăng nhập

T r a n g 11 |
Hình 2.9: Sơ đồ Activity đăng ký

T r a n g 12 |
3. Sơ đồ Sequence

Hình 2.10: Sơ đồ Sequence

T r a n g 13 |
ST Công việc Loại công Yêu cầu Biểu mẫu
T việc

1 Đăng kí Lưu trữ Mỗi người dùng chỉ được Họ và tên, Email, Mật
đăng ký qua email. khẩu.

2 Đăng Tra cứu Email, mật khẩu.


nhập

3 Thay đổi Tra cứu và lưu Họ và tên, Tên đệm.


thông tin trữ

4 Đăng bài Lưu trữ Đăng hình ảnh, bài viết. Nội dung bài đăng, Kho ảnh,
Chụp hình trực tiếp, Tệp tin.

5 Xem chi Tra cứu Xem cụ thể về bài mà Chọn xem ảnh, Like ,
tiết bài người đó mà bạn muốn Bình luận, Lưu bài
đăng xem. người đăng.

6 Lưu bài Lưu trữ Lưu trữ các bài đăng mà


đăng bạn thích.

7 Theo dõi Tra cứu Theo dõi những người Có thể xem thông tin
người bạn thích để xem các bài chi tiết về người dùng
dùng đăng người ta. nhanh chóng.

8 Thông Tra cứu Xem tất cả thông báo hiển Phân loại thông báo
báo thị. khác nhau như người
Like, Theo dõi, Bình
luận.

Hình 2.9: Bảng yêu cầu chức năng đối với người dùng

T r a n g 14 |
CHƯƠNG 3: KẾT QUẢ THỰC NGHIỆM

Hình 3.16: Giao diện đăng ký

T r a n g 15 |
Hình 3.17: Giao diện đăng nhập

T r a n g 16 |
Hình 3.18: Giao diện chỉnh sửa tài khoản

T r a n g 17 |
Hình 3.19: Giao diện đăng xuất

T r a n g 18 |
Hình 3.20: Giao diện thông báo

T r a n g 19 |
Hình 3.21: Giao diện bảng tin

T r a n g 20 |
Hình 3.22: Giao diện lưu bài viết

T r a n g 21 |
Hình 3.23: Giao diện đăng bài

T r a n g 22 |
Hình 3.24: Giao diện tìm kiếm và theo dõi người dùng khác

T r a n g 23 |
Hình 3.25: Giao diện bình luận bài đăng

T r a n g 24 |
Hình 3.26: Giao diện like bài đăng

T r a n g 25 |
Hình 3.27: Giao diện xem bài đăng

T r a n g 26 |
Hình 3.28: Giao diện các bài đã đăng

T r a n g 27 |
Hình 3.29: Giao diện người theo dõi mình

T r a n g 28 |
Hình 3.30: Giao diện người mình đang theo dõi

T r a n g 29 |
CHƯƠNG 4: KẾT LUẬN

• Kết quả đạt được:


- Biết cách sử dụng Android Studio.
- Nắm được cơ sở lí thuyết để xây dựng một ứng dụng.
- Phân tích thiết kế hệ thống bài toán về xây dựng ứng dụng.
- Xây dựng demo App mạng xã hội QDN
• Hạn chế, khó khăn và hướng phát triển:

Hạn Chế:
- Ứng dụng chỉ mang tính demo do đó chưa có nhiều tính năng.
- Kiến thức lập trình còn hạn chế nên chương trình còn chưa được tốt.

Khó Khăn:
- Do kiến thức còn hạn chế nên bài báo cáo còn thiếu sót.

Hướng phát triển:


- Phát triển thêm, đưa vào ứng dụng thực tế
- Tìm hiểu thêm một số ngôn ngữ, các phần mềm để nâng cao giao diện
đồ họa đẹp mắt hơn, thân thiện hơn với người dùng hơn…
- Tìm hiểu và hoàn thiện về vấn đề bảo mật.
- Xây dựng ứng dụng với quy mô lớn có nhiều chức năng hơn …

TÀI LIỆU THAM KHẢO

1. https://tailieu.vn/doc/bai-giang-lap-trinh-tren-thiet-bi-di-dong-ths-nguyen-ha-
giang-1774624.html
2. https://firebase.google.com/?gclid=Cj0KCQjwl92XBhC7ARIsAHLl9al9L--
m3VZZkGAN4JskLJKmBlprciYTx8BNcwGNZ5KhN6fSCuJpurUaAmusEAL
w_wcB&gclsrc=aw.ds
3. https://thietkewebhcm.com.vn/huong-dan-su-dung-firebase/

T r a n g 30 |

You might also like