Tải bản đầy đủ (.docx) (62 trang)

BTL Xây dựng ứng dụng mua bán trao đổi đồ cũ trên Android

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (1.87 MB, 62 trang )

BỘ CÔNG THƯƠNG
TRƯỜNG ĐẠI HỌC CÔNG NGHIỆP HÀ NỘI
KHOA CÔNG NGHỆ THÔNG TIN
----------

ĐỒ ÁN

TỐT NGHIỆP ĐẠI HỌC
NGÀNH: KỸ THUẬT PHẦN MỀM
ĐỀ TÀI
XÂY DỰNG ỨNG DỤNG
MUA BÁN TRAO ĐỔI ĐỒ CŨ TRÊN ANDROID

Giáo Viên Hướng Dẫn
Sinh Viên Thực Hiện
MSV
Lớp

: Ths. Nguyễn Thái Cường
: Tạ Đăng Huân
: 0941360160
: KTPM CLC K9

Hà Nội - 2018

1


NHẬN XÉT, CHO ĐIỂM, ĐÁNH GIÁ
(Của giảng viên hướng dẫn)
...................................................................................................................................


...................................................................................................................................
...................................................................................................................................
...................................................................................................................................
...................................................................................................................................
...................................................................................................................................
...................................................................................................................................
...................................................................................................................................
...................................................................................................................................
...................................................................................................................................
...................................................................................................................................
Điểm ............................... (Bằng chữ ......................................................................)
.........................................
Đồng ý/Không đồng ý cho SV bảo vệ trước hội đồng chấm đồ án tốt nghiệp.
Hà Nội, Ngày ...........Tháng ..........Năm 2018
NHẬN XÉT CỦA GIẢNG VIÊN PHẢN BIỆN
...................................................................................................................................
...................................................................................................................................
...................................................................................................................................
...................................................................................................................................
...................................................................................................................................
...................................................................................................................................
...................................................................................................................................
...................................................................................................................................
...................................................................................................................................
...................................................................................................................................
...................................................................................................................................
...................................................................................................................................
Điểm ............................... (Bằng chữ ......................................................................)
.........................................
Đồng ý/Không đồng ý cho SV bảo vệ trước hội đồng chấm đồ án tốt nghiệp.

Hà Nội, Ngày ...........Tháng ..........Năm 2018

Lời nói đầu
Trong thời buổi công nghệ phát triển, mua sắm trực tuyến đã trở thành một nhu cầu
không thể thiếu của mọi người. Tuy vậy, không phải lúc nào mọi người cũng có thể sử
dụng máy tính để vào các trang web mua sắm. Ngược lại bằng việc sử dụng điện thoại


di động, muốn truy cập website phải thực hiện nhiều thao tác từ tìm kiếm trang web,
chờ truy cập, chưa kể website đó nếu chưa làm chuẩn di động sẽ rất khó theo dõi. Thay
vì tìm kiếm và mua sản phẩm trên website, rất nhiều người đã sử dụng app trên điện
thoại di động để mua hàng. Từ đó em đã hướng tới đến đề tài “Xây dựng ứng dụng mua
bán trao đổi đồ cũ trên hệ điều hành Android”. Ứng dụng cho phép người sử dụng có
thể đăng bán những sản phẩm mình có cũng như tìm kiếm, mua sắm những sản phẩm
mình cần một cách nhanh chóng và tiện lợi nhất. Là một kênh rao vặt trung gian, kết nối
người bán và người mua bằng những giao dịch đơn giản, tiện lợi, nhanh chóng, an toàn.
Người dùng dễ dàng mua bán, mọi mặt hàng, dù đó là đồ cũ hay đồ mới ở các lĩnh vực
như xe cộ, đồ dùng cá nhân, đồ điện tử,... ngay trên điện thoại của mình chỉ với kết nối
Internet.
Em xin trân trọng cảm ơn ThS. Nguyễn Thái Cường - Khoa Công Nghệ Thông Tin
trường Đại học Công Nghiệp Hà Nội đã hỗ trợ trong suốt quá trình thực hiện đề tài này.
Mặc dù đã rất cố gắng nhưng trong quá trình thực hiện sẽ không tránh khỏi những
sai sót, rất mong được sự phản hồi và góp ý của thầy cô và các bạn đọc. Em xin chân
thành cảm ơn!


Mục Lục


Danh sách các hình ảnh



Danh sách các bảng


CHƯƠNG I. TỔNG QUAN
I

Giới thiệu đề tài

o

Tên đề tài: Xây dựng ứng dụng mua bán trao đổi đồ cũ trên Android.

o

Tóm tắt

Hiện nay, thương mại điện tử đang được nhiều quốc gia quan tâm, coi là một trong những
động lực phát triển chủ yếu của nền kinh tế cũng như việc mua sắm trực tuyến đã trở thành
một nhu cầu không thể thiếu của mọi người. Việc mua bán hàng qua mạng đem lại rất nhiều
lợi ích: tiết kiệm và chủ động về thời gian, vượt qua giới hạn địa lý, dễ dàng kết nối giữa
người mua và người bán, tăng tính cạnh tranh, dễ dàng so sánh giá cả. Cùng với đó, điện
thoại di động thông minh ngày càng phổ biến, mọi người hoàn toàn có thể thực hiện mua
bán trực tuyến ngay trên thiết bị của mình. Tuy vậy, bằng việc sử dụng điện thoại di động,
muốn truy cập các website mua bán trực tuyến phải thực hiện nhiều thao tác từ tìm kiếm
trang web, chờ truy cập, chưa kể website đó nếu chưa chuẩn di động sẽ rất khó theo dõi. Từ
đó em đã hướng tới đến đề tài “Xây dựng ứng dụng mua bán trao đổi đồ cũ trên hệ điều
hành Android”. Ứng dụng là một kênh rao vặt trung gian, kết nối người bán và người mua
bằng những giao dịch đơn giản, tiện lợi, nhanh chóng, an toàn.

o

Mục đích
• Nghiên cứu, tìm hiểu quy trình phát triển ứng dụng trên nền tảng hệ điều hành di động
Android.


Thực hiện phân tích, thiết kế, xây dựng ứng dụng trên Android cho phép người
dùng đăng bán các sản phẩm của mình cũng như tìm kiếm những sản phầm quan
tâm.



Làm chủ, ứng dụng API Firebase của Google vào xây dựng server cho phép ứng dụng tương tác
thời gian thực.

II Phương pháp triển khai
Phương pháp triển khai ứng dụng được thực hiện tuần tự theo các bước sau:


Nghiên cứu cơ sở lý thuyết về phát triển một ứng dụng Android.



Nghiên cứu cơ sở lý thuyết về Firebase, cách triển khai, áp dụng API trên vào xây dựng ứng
dụng.



Khảo sát, phân tích, thiết kế hệ thống ứng dụng mua bán trực tuyến đầy đủ các nghiệp vụ cơ

bản của một ứng dụng mua bán trực tuyến.



Tiến hành xây dựng ứng dụng và viết các tài liệu liên quan.



Báo cáo đề tài.



CHƯƠNG II. CƠ SỞ LÝ THUYẾT
III Tổng quan về Android
1 Giới thiệu
Android là một hệ điều hành dựa trên nền tảng Linux được thiết kế dành cho các thiết bị di
động có màn hình cảm ứng như điện thoại thông minh và máy tính bảng. Trước đây,
Android được phát triển bởi công ty liên hợp Android ( sau đó được Google mua lại vào
năm 2005). Chiếc điện thoại đầu tiên chạy Android được bán vào năm 2008. Từ đó, Android
đã trải qua nhiều lần cập nhật để dần dần cải tiến hệ điều hành, bổ sung các tính năng mới
và sửa các lỗi trong những lần phát hành trước với phiên bản mới nhất hiện nay là 8.1 Oreo.
Tính đến vào quý 2 năm 2017 Android chiếm 87,7% thị phần điện thoại thông minh trên
toàn thế giới.
Android được xây dựng cho phép các nhà phát triển tạo ra các ứng dụng di động hấp dẫn tận
dụng tối đa các tính năng của một chiếc điện thoại di động thông minh. Nó cung cấp một
loạt các thư viện hỗ trợ nhà phát triển xây dựng các ứng dụng phong phú. Với một cộng
đồng lớn mạnh, giúp cho người mới học dễ dàng tiếp cận.

2 Kiến trúc của hệ điều hành Android
Hệ điều hành Android là 1 ngăn xếp các thành phần phần mềm, được chia thành 5 phần và 4

lớp chính như trong hình bên dưới.


Hình 1.

1

Kiến trúc hệ điều hành Android

Tầng Linux Kernel

Dưới cùng là lớp Linux - Linux 3.6 cùng với khoảng 115 bản vá. Lớp này cung cấp một cấp
độ trừu tượng giữa phần cứng của thiết bị và các thành trình điều khiển phần cứng thiết yếu
như máy ảnh, bàn phím, màn hình hiển thị... Đồng thời, hạt nhân (kernel) còn xử lý tất cả
các thứ mà Linux có thể làm tốt như mạng kết nối và 1 chuỗi các trình điều khiển thiết bị,
giúp cho giao tiếp với các thiết bị ngoại vi dễ dàng hơn.

2

Libraries

Đây là các thư viện dựa trên Java phục vụ cho việc phát triển Android. Ví dụ của các thư
viện này bao gồm các thư viện ứng dụng dùng để xây dựng giao diện người dùng, vẽ đồ họa
hay truy cập cơ sở dữ liệu. Một số thư viện chính của Android:
-

android.app - Cung cấp quyền truy cập vào ứng dụng và là nền tảng của tất cả ứng
dụng Android.

-


android.content - Cung cấp quyền truy cập nội dung (content), truyền tải thông điệp
giữa các ứng dụng hay các thành phần của ứng dụng.

-

android.database – Được sử dụng để truy cập dữ liệu của content provider và cơ sở
dữ liệu SQLite.

-

android.opengl - giao diện các phuơng thức Java để sử dụng OpenGL ES

-

android.os - Cung cấp các ứng dụng với quyền truy cập vào các dịch vụ của hệ điều
hành bao gồm thông điệp, các dịch vụ hệ thống và các giao tiếp nội tại.

-

android.text – Được sử dụng để hiển thị và điều chỉnh chữ trên màn hình thiết bị.

-

android.view - Các thành phần cơ bản trong việc xây dựng giao diện người dùng của
ứng dụng.

-

android.widget - Tập các thành phần giao diện người dùng đã được xây dựng sẵn như

các nút, các nhãn (label), list view,....

-

android.webkit - Tập các lớp cho phép xây dựng khả năng duyệt web.


3

Android Runtime

Đây là phần thứ 3 của kiến trúc và nằm ở lớp thứ hai từ dưới lên. Phần này cung cấp một bộ
phận quan trọng là Dalvik Virtual Machine - là một Java Virtual Machine được thiết kế đặc
biệt để tối ưu cho Android. Dalvik VM sử dụng các đặc trưng của nhân Linux như quản lý
bộ nhớ và đa luồng, những thứ mà đã có sẵn trong Java. Dalvik VM giúp mọ ứng dụng
Android chạy trong tiến trình riêng của nó, với các thể hiện (instance) riêng của Dalvik
virtual Machine. Android Runtime cũng cung cấp một tập các thư viện chính giúp các nhà
phát triển ứng dụng Android có thể viết ứng dụng Android bằng Java.

4

Application Framework

Lớp Android Framework cung cấp các dịch vụ cấp độ cao hơn cho các ứng dụng dưới dạng
các lớp Java. Các nhà phát triển ứng dụng được phép sử dụng các dịch vụ này trong ứng
dụng của họ.
Android Framework bao gồm các dịch vụ chính sau:
-

Activitty Manager - Kiểm soát tất cả khía cạnh của vòng đời ứng dụng và ngăn xếp các Activity.


-

Content Providers - Cho phép các ứng dụng chia sẽ dữ liệu với các ứng dụng khác.

-

Resource Manager - Cung cấp quyền truy cập vào các tài nguyên như các chuỗi, màu sắc, các
layout giao diện người dùng...

-

Notifications Manager - Cho phép các ứng dụng hiển thị cảnh báo và các thông báo cho người
dùng.

-

View System - Tập các thành phần giao diện (view) được sử dụng để tạo giao diện người dùng.

5

Tầng Application

Lớp trên cùng của kiến trúc là Application. Các ứng dụng bạn tạo ra sẽ được cài đặt trên lớp
này. Ví dụ như: Danh bạ, nhắn tin, trò chơi...

3 Công cụ Android Studio
Android Studio là môi trường phát triển tích hợp (IDE) chính thức dành cho phát triển nền
tảng Android. Nó được ra mắt vào ngày 16 tháng 5 năm 2013 tại hội nghị Google I/O.
Android Studio được phát hành miễn phí theo giấy phép Apache Licence 2.0. Dựa trên phần

mềm IntelliJ IDEA của JetBrains, Android Studio được thiết kế đặc biệt để phát triển ứng
dụng Android. Nó hỗ trợ các hệ điều hành Windows, Mac OS X và Linux, và là IDE chính
thức của Google để phát triển ứng dụng Android gốc để thay thế cho Android Development
Tools (ADT) dựa trên Eclipse. Phiên bản mới nhất của Android Studio hiện nay là 3.1.


4 Mô hình lập trình MVC
Mô hình MVC (Model - View - Controller) là một kiến trúc phần mềm hay mô hình thiết kế
được sử dụng trong kỹ thuật phần mềm. Nó giúp cho các developer tách ứng dụng của họ ra
3 thành phần khác nhau Model, View và Controller. Mỗi thành phần có một nhiệm vụ riêng
biệt và độc lập với các thành phần khác.
1 Các thành phần trong MVC
Mô hình MVC tách ứng dụng thành 3 thành phần chính sau:
• Model
Đây là thành phần chứa tất cả các nghiệp vụ logic, phương thức xử lý, truy xuất database,
đối tượng mô tả dữ liệu như các Class, các hàm xử lý.
• View
Đảm nhận việc hiển thị thông tin, tương tác với người dùng, nơi chứa tất cả các đối tượng
GUI như Textbox, ImageView...Hiểu một cách đơn giản, nó là giao diện tương tác với người
dùng.
• Controller
Giữ nhiệm vụ nhận điều hướng các yêu cầu từ người dùng và gọi đúng những phương thức
xử lý. Chẳng hạn thành phần này sẽ nhận request từ View để thao tác trực tiếp với Model.

Hình 2.

Cấu trúc lớp MVC (Model-View-Controller)


2 MVC làm việc như thế nào?

Đây là một cách đơn giản để mô tả lại luồng sự kiện được xử lý trong MVC:
-

User tương tác với View, bằng cách click vào button, user gửi yêu cầu đi.

-

Controller nhận và điều hướng chúng đến đúng phương thức xử lý ở Model.

-

Model nhận thông tin và thực thi các yêu cầu.

-

Khi Model hoàn tất việc xử lý, View sẽ nhận kết quả từ Model và hiển thị lại cho
người dùng.

Hình 3.

Luồng xử lý trong mô hình MVC

3 Ưu điểm và nhược điểm của MVC
• Ưu điểm:
Thể hiện tính chuyên nghiệp trong lập trình, phân tích thiết kế. Do được chia thành các
thành phần độc lập nên giúp phát triển ứng dụng nhanh, đơn giản, dễ nâng cấp, bảo trì..
• Nhược điểm
Đối với dự án nhỏ việc áp dụng mô hình MC gây cồng kềnh, tốn thời gian trong quá trình
phát triển. Tốn thời gian trung chuyển dữ liệu giữa các thành phần.



IV Tổng quan về Firebase
1 Giới thiệu
“Firebase is a mobile and web application platform with tools and infrastructure designed to
help developers build high-quality apps” [1] - Google
Nghĩa là:
“Firebase là một nền tảng ứng dụng di động và web với các công cụ và hạ tầng được thiết
kế để giúp các lập trình viên xây dựng các ứng dụng chất lượng cao”.

2 Kiến trúc của Firebase
Hiện nay Firebase không giới hạn chỉ là một cơ sở dữ liệu. Firebase bây giờ là một chiếc dù
cho toàn bộ sản phẩm có khả năng hoạt động như một dịch vụ phụ trợ (Backend as a
Service). Nó cho phép bạn tất cả mọi thứ bạn cần để xây dựng và phát triển ứng dụng của
mình, tất cả ở cùng một nơi. [2]

Hình 4.

trữ.

Biểu đồ kiến trúc Firebase

Chú giải :
App Engine : nền tảng ứng dụng cho phép theo dõi, cập nhật và cân chỉnh môi trường lưu

Mô hình sử dụng Firebase ở trên với một kiến trúc hai tầng, trong đó các ứng dụng di động
và Firebase đều thao tác dữ liệu trực tiếp. Điều này tạo ra sự khác biệt quan trọng trong cách
xử lý xác thực và bảo mật dữ liệu. Dữ liệu được update từ một thiết bị, thông qua Firebase
tự động đồng bộ dữ liệu thời gian thực trên nhiều thiết bị. Google App Engine mang đến
một nền tảng ứng dụng cho phép theo dõi, cập nhật và cân chỉnh môi trường lưu trữ, tất cả
những gì bạn cần làm là viết mã dịch vụ phụ trợ di động của bạn. Trong Firebase, bạn chỉ



định chứng thực và xác nhận hợp lệ như là các quy tắc khai báo trong giao diện web
Firebase, mà không cần phải viết mã. Firebase là nền tảng được quản lý đầy đủ để xây dựng
ứng dụng iOS, Android và web cung cấp đồng bộ hóa dữ liệu, dịch vụ xác thực, nhắn tin,
lưu trữ tệp, phân tích và hơn thế nữa. Bắt đầu với Firebase là một cách hiệu quả để xây dựng
hoặc thử nghiệm dịch vụ phụ trợ di động.

3 Lợi ích khi sử dụng Google Firebase
• Triển khai ứng dụng cực nhanh
Với Firebase bạn có thể giảm bớt rất nhiều thời gian cho việc viết các dòng code để quản lý
và đồng bộ cơ sở dữ liệu, mọi việc sẽ diễn ra hoàn toàn tự động với các API của Firebase.
Không chỉ có vậy Firebase còn hỗ trợ đa nền tảng nên bạn sẽ càng đỡ mất thời gian rất
nhiều khi ứng dụng bạn muốn xây dựng là ứng dụng đa nền tảng.
Không chỉ nhanh chóng trong việc xây dựng database, Google Firebase còn giúp ta đơn giản
hóa quá trình đăng kí và đăng nhập vào ứng dụng bằng các sử dụng hệ thống xác thực do
chính Firebase cung cấp.
• Bảo mật
Firebase hoạt động dựa trên nền tảng cloud và thực hiện kết nối thông qua giao thức bảo
mật SSL, chính vì vậy bạn sẽ bớt lo lắng rất nhiều về việc bảo mật của dữ liệu cũng như
đường truyền giữa client và server. Không chỉ có vậy, việc cho phép phân quyền người dùng
database bằng cú pháp javascipt cũng nâng cao hơn nhiều độ bảo mật cho ứng dụng của
bạn, bởi chỉ những user mà bạn cho phép mới có thể có quyền chỉnh sửa cơ sở dữ liệu.
• Tính linh hoạt và khả năng mở rộng
Sử dụng Firebase sẽ giúp bạn dễ dàng hơn rất nhiều mỗi khi cần nâng cấp hay mở rộng dịch
vụ. Ngoài ra firebase còn cho phép bạn tự xây dựng server của riêng mình để bạn có thể
thuận tiện hơn trong quá trình quản lý.
Việc Firebase sử dụng NoSQL, giúp cho database của bạn sẽ không bị bó buộc trong các
bảng và các trường mà bạn có thể tùy ý xây dựng database theo cấu trúc của riêng bạn.
• Sự ổn định



Firebase hoạt động dựa trên nền tảng cloud đến từ Google vì vậy hầu như bạn không bao
giờ phải lo lắng về việc sập server, tấn công mạng như DDOS, tốc độ kết nối lúc nhanh lúc
chậm, bởi đơn giản là Firebase hoạt động trên hệ thống server của Google. Hơn nữa nhờ
hoạt động trên nền tảng Cloud nên việc nâng cấp, bảo trì server cũng diễn ra rất đơn giản
mà không cần phải dừng server để nâng cấp như truyền thống.
• Giá thành
Google Firebase có rất nhiều gói dịch vụ với các mức dung lượng lưu trữ cũng như băng
thông khác nhau với mức giá dao động từ Free đến $1500 đủ để đáp ứng được nhu cầu của
tất cả các đối tượng. Chính vì vậy bạn có thể lựa chọn gói dịch vụ phù hợp nhất với nhu cầu
của mình. Điều này giúp bạn tới ưu hóa được vốn đầu tư và vận hành của mình tùy theo số
lượng người sử dụng. Ngoài ra bạn còn không mất chi phí để bảo trì, nâng cấp, khắc phục
các sự cố bởi vì những điều này đã có Firebase lo.


4 Các tính năng cơ bản của Firebase
Firebase cung cấp các công cụ để phát triển các ứng dụng chất lượng cao, cho phép phát
triển cơ sở người dùng và hỗ trợ kiếm được nhiều tiền hơn. Các tính năng của Firebase
được nêu trong hình dưới đây:

Hình 5. Các tính năng cơ bản của Firebase
Dưới đây chúng ra sẽ tìm hiểu một số tính năng thường được sử dụng nhất:
• Realtime Database – Cơ sở dữ liệu thời gian thực

Firebase lưu trữ dữ liệu database dưới dạng JSON và thực hiện đồng bộ database tới tất cả
các Client theo thời gian thực. Chúng ta có thể xây dựng được Client đa nền tảng (crossplatform client) và tất cả các Client này sẽ cùng sử dụng chung một Database đến từ
Firebase và có thể tự động cập nhật mỗi khi dữ liệu trong database được thêm mới hoặc sửa
đổi. Ngoài ra Firebase còn cho phép bạn phân quyền một các đơn giản bằng cú pháp tương
tự như javascript.[3]

 Tự động tính toán quy mô ứng dụng của bạn

Khi ứng dụng của bạn muốn phát triển, bạn không cần lo lắng về việc nâng cấp máy chủ.
Firebase sẽ xử lý việc tự động cho bạn. Các máy chủ của Firebase quản lý hàng triệu kết nối
đồng thời và hàng tỉ lượt truy vấn mỗi tháng.
 Các tính năng bảo mật lớp đầu

Tất cả dữ liệu được truyền qua một kết nối an toàn SSL với một chứng nhận 2048-bit. Cơ sở
dữ liệu truy vấn và việc xác nhận được điều khiển tại một cấp độ chi tiết sử dụng theo một


số các quy tắc mềm dẻo Security Rules Language. Tất cả các logic bảo mật dữ liệu được tập
trung ở một nơi để dễ dàng cho việc cập nhật và kiểm thử.
 Làm việc offline

Ứng dụng Firebase của bạn sẽ duy trì tương tác bất chấp một số các vấn đề về internet xảy
ra. Trước khi bất kỳ dữ liệu được ghi đến server thì tất cả dữ liệu lập tức sẽ được viết vào
một cơ sở dữ liệu Firebase ở local. Ngay khi có thể kết nối lại, Client đó sẽ nhận bất kỳ thay
đổi mà nó thiếu và đồng bộ hoá nó với trạng thái hiện tại server.
• Firebase Authentication - Hệ thống xác thực của Firebase

Với Firebase, bạn có thể dễ dàng xác thực người dùng từ ứng dụng của bạn trên Android,
iOS và JavaScript SDKs chỉ với một vài đoạn mã. Firebase đã xây dựng chức năng cho việc
xác thực người dùng với Email, Facebook, Twitter, GitHub, Google, và xác thực nạc danh.
Các ứng dụng sử dụng chức năng xác thực của FireBase có thể giải quyết được vấn đề khi
người dùng đăng nhập, nó sẽ tiết kiện thời gian và rất nhiều các vấn đề phức tạp về phần
backend. Hơn nữa bạn có thể tích họp xác thực người dùng với các chức năng backend đã
có sẵn sử dụng custom auth tokens.
• Firebase Hosting


Phát triển ứng dụng web của bạn trong thời gian ngắn với các hosting tĩnh đã được cung cấp
sẵn. Tất cả các kết nối được phân phối qua SSL từ CDN trên toàn thể giới của Firebase.
Triểu khai siêu tốc: Việc triển khai sử dụng các công cụ dòng lệnh Firebase và có thể quay
trở lại với phiên bản trước chỉ với một cú click chuột. Tất cả các ứng dụng sẽ có đường dẫn
mặc đinh ở sau firebaseapp.com và nếu trả phí thì có thể triểu khai một tên miền tuỳ chỉnh.
SSL bởi default: Mọi ứng dụng được xử lý thông qua một kết nối an toàn, và Firebase đã
cẩn thận cung cấp SSL cert cho bạn.
• Cloud Messaging

Google Cloud Messaging, dịch vụ cloud-to-device push messaging nổi tiếng nhất thế giới,
đang tích hợp với Firebase và đổi tên thành Firebase Cloud Messaging (FCM). FCM không
có giới hạn và hoàn toàn miễn phí. FCM hỗ trợ messaging trên iOS, Android và Web, và tối
ưu mạnh mẽ hướng đến bảo mật và tiếp kiệm pin. FCM có thể xử lý lượng lớn thông tin và
hiện đã có thể gửi 170 tỷ tin nhắn mỗi ngày đến 2 tỷ thiết bị.
• Firebase Storage


Firebase cũng sẽ ra mắt Firebase Storage để giúp lập trình viên upload và download file dễ
dàng. Firebase Storage được Google Cloud Storage hỗ trợ, mang đến khả năng lưu trữ
khổng lồ và cho phép Google Cloud project truy cập file dễ dàng. Firebase Storage client
SDKs còn có logic nâng cao có thể dễ dàng xử lý điều kiện mạng kém. ‘
• Adwords

Adwords là dịch vụ quảng cáo trực tuyến của Google hợp nhất để cho phép các nhà phát
triển nhắm mục tiêu người dùng sử dụng Firebase Analytics
• Earn - với Admob

Admob là một sản phẩm của Google tích hợp với đối tượng Firebase. Là nền tảng quảng cáo
trên thiết bị di động cung cấp dịch vụ cho các nhà quảng cáo, nhà xuất bản, đại lý và nhà
phát triển ứng dụng. Cho phép các nhà phát triển ứng dụng kiếm tiền thông qua dịch vụ

quảng cáo.

5 Realtime Database trong FireBase
4

Định nghĩa Realtime Database

Realtime Database Firebase là một dịch vụ cơ sở dữ liệu thời gian thực hoạt động trên
nền tảng đám mây được cung cấp bởi Google nhằm giúp các lập trình phát triển nhanh các
ứng dụng bằng cách đơn giản hóa các thao tác với cơ sở dữ liệu. [4]
Firebase Database Realtime cho phép bạn xây dựng các ứng dụng hợp tác phong phú
bằng cách cho phép truy cập an toàn vào cơ sở dữ liệu trực tiếp từ mã phía máy khách. Dữ
liệu được duy trì ở địa phương và thậm chí trong khi ngoại tuyến, sự kiện thời gian thực tiếp
tục bùng nổ, mang lại cho người dùng cuối một trải nghiệm đáp ứng. Khi thiết bị lấy lại kết
nối, Cơ sở dữ liệu thời gian thực đồng bộ hóa các thay đổi dữ liệu cục bộ với các bản cập
nhật từ xa xảy ra trong khi máy khách đang ngoại tuyến, tự động hợp nhất các xung đột.
Cơ sở dữ liệu thời gian thực cung cấp một ngôn ngữ quy tắc linh hoạt dựa trên biểu thức,
được gọi là Quy tắc bảo mật cơ sở dữ liệu thời gian thực dựa trên nền Firebase, để xác định
cách cấu trúc dữ liệu của bạn và khi dữ liệu có thể được đọc hoặc ghi vào. Khi được tích
hợp với Firebase Authentication, các nhà phát triển có thể xác định ai có quyền truy cập vào
dữ liệu nào, và cách họ có thể truy cập vào nó.


Cơ sở dữ liệu thời gian thực là một cơ sở dữ liệu NoSQL và do đó có sự tối ưu hóa và
chức năng khác so với cơ sở dữ liệu quan hệ. Cơ sở dữ liệu thời gian thực API được thiết kế
để chỉ cho phép hoạt động có thể được thực hiện nhanh chóng. Điều này cho phép bạn tạo
trải nghiệm thời gian thực tuyệt vời có thể phục vụ hàng triệu người dùng mà không ảnh
hưởng đến phản hồi. Do đó, điều quan trọng là phải suy nghĩ về cách người dùng cần truy
cập vào dữ liệu của bạn và sau đó cấu trúc nó cho phù hợp.
5


Lợi ích khi sử dụng Realtime Database so với các cơ sở dữ liệu quan hệ
đang có

Có lẽ chúng ta đã ít nhiều quen thuộc với SQL Database. SQL Database (SQLD) được tổ
chức dưới dạng các bảng, mỗi bảng bao gồm các hàng và các cột. Các cột đại diện cho các
thuộc tính của các đối tượng, trong khi các hàng đại diện cho các đối tượng. Ví dụ, ta có
bảng quản lí sinh viên, trong đó các cột là STT, Họ, Tên, Giới tính, Ngày sinh, Địa chỉ liên
hệ, còn mỗi hàng là một sinh viên cụ thể. Có bao nhiêu sinh viên thì sẽ có bấy nhiêu hàng
tương ứng.
Firebase Realtime Database (FRB) không được tổ chức như vậy. Nó được tổ chức theo
dạng cây (trees), giống như dạng cây thư mục (folder tree) mà các bạn đã quá quen thuộc
trong Windows Explorer. Tuy nhiên, một nhánh (branch) không được chứa đồng thời nhiều
dữ liệu khác nhau. Trong Windows Explorer 1 thư mục mẹ có thể chứa nhiều thư mục con
và các tập tin nằm ngang hàng với các thư mục con kia, trong thư mục con lại có các thư
mục cháu và các tập tin cùng hàng với thư mục cháu. Trong Firebase Realtime Database,
mỗi nhánh giống như một container, chỉ chứa hoặc là dữ liệu ứng với nhánh đó (tức là value
tương ứng với key), hoặc một tập hợp các nhánh con cũng được tổ chức theo một cách
tương tự.
Như vậy, FRD được tổ chức theo dạng cây với các nhánh chứ không phải dạng hàng - cột
và đây có thể là một vấn đề hết sức nan giải cho những lập trình viên đã và đang thiết kế cơ
sở dữ liệu dạng bảng. Thực ra đó không phải là một hạn chế, vì FRD được tạo ra dựa trên ý
tưởng này ngay từ đầu. Và họ cũng không có ý định cho ra mắt thêm một dạng cơ sở dữ liệu
dạng bảng, ít nhất là cho tới thời điểm hiện tại.
Rõ ràng, cơ cấu tổ chức của FRD tỏ ra có nhiều lợi thế rõ rệt hơn so với dạng bảng của
SQLDatabase (SQLD). Chẳng hạn, FRD thích hợp hơn hẳn để làm ứng dụng chat. Hơn thế


nữa, FRD tỏ ra linh hoạt (flexible) hơn so với SQLD, chẳng hạn như việc thêm một cột mới
vào CSDL SQLD đã có là cả một vấn đề, đặc biệt nhất là vấn đề về sự tương thích giữa

nhiều phiên bản ứng dụng chạy trên thiết bị khách (client), chưa kể đến việc các câu
Schema phải chuẩn nữa. Trong khi đó, đối với FRD, chúng ta chỉ cần thêm một trường mới
vào Object của mình. Đối với các Object cũ, các trường không có dữ liệu sẽ đơn giản là
được trả về kết quả null (Android, web) hoặc nil (iOS, macOS).
Ví dụ, chúng ta đang có một class Student(String name, String birthday). Đối với SQLD,
bạn tạo một CSDL có hai cột là NAME và BIRTHDAY. Đối với FRD, chúng ta chỉ cần 2
nhánh name và birthday trong một Object làm value là được. Sau khi đã sử dụng CSDL đó
để nhập liệu được gần 2 năm thì bấy giờ, nếu bất ngờ được yêu cầu bổ sung thêm một
trường nữa là lớp học và cột này phải là NON NULL. Vậy, chúng ta làm cách nào? Đối với
SQLD, bạn sẽ ALTER TABLE để thêm một cột. Ố kề, xong câu Schema rồi và đã có cột
mới. Nhưng những học sinh đầu tiên chưa có thông tin về lớp học và khi fetch thông tin về
thì chắc chắn sẽ xảy ra mâu thuẫn.
Còn đối với FRD thì bạn chỉ đơn giản là bổ sung thêm một trường mới vào Student
object của bạn, tức là Student(String name, String birthday, String class). Đối với các học
sinh không có thông tin về class, thì khi bạn fetch các thông tin về, String class chỉ đơn giản
là bị null/nil và bạn chỉ cần xét if (class != null) là được.
Tuy nhiên, nếu chúng ta cần sự kết nối giữa các hàng trong một bảng, chẳng hạn như việc
quản lí tiền lương thì SQLD vẫn sẽ tỏ ra vượt trội hơn, mặc dù chúng ta vẫn có khả năng
xoay sở đối với FRD. Còn nếu phải quản lí các dữ liệu theo kiểu liên bảng, tức là chúng ta
phải thực hiện thao tác JOIN các dữ liệu trong SQLD, có thể việc thực hiện các thao tác
thay thế trên FRD trên thực tế sẽ khó khăn hơn là bạn nghĩ.
Một vấn đề quan trọng hơn nữa, là PRIMARY KEY. PRIMARY KEY là một trong những
điều cần thiết để quản lí hiệu quả CSDL SQLD. Tuy nhiên trong FRD thì hoàn toàn không
tồn tại khái niệm PRIMARY KEY, do đó bạn sẽ cần cẩn thận trong việc quản lí các objects
để tránh bị cập nhật sai các dữ liệu đã có sẵn.
Tóm lại, Firebase Realtime Database ngoài ưu điểm mang tính Realtime thì còn có tính
linh hoạt rất cao, dễ dàng trong việc bổ sung hoặc cắt bớt các trường trong một Object. Tuy
nhiên, sự liên hệ tương ứng giữa các đối tượng trong FRD sẽ là một bài toán không hề dễ và



cách xử lí phụ thuộc rất nhiều vào trình độ và kinh nghiệm của lập trình viên, cũng như bản
chất và mục đích của bản thân CSDL được tạo.

6 Xác thực người dùng FireBase Authentication
Với FireBase Authentication, người dùng đăng nhập vào ứng dụng của bạn bằng cách sử
dụng một hệ thống mà họ đã sử dụng. Sau đó, ứng dụng của bạn có thể lưu dữ liệu của
người dùng một cách an toàn trên Cloud và mang lại trải nghiệm được cá nhân hóa giống
nhau trên tất cả các thiết bị của họ. Xác thực Firebase cung cấp các dịch vụ phụ trợ, SDK dễ
sử dụng và thư viện giao diện người dùng sẵn sàng để xác thực người dùng đến với ứng
dụng, mang lại trải nghiệm hấp dẫn hơn trên các nền tảng khác nhau và giữa các ứng dụng.
Tính năng này hỗ trợ xác thực bằng mật khẩu, các nhà cung cấp danh tính được liên kết nổi
tiếng như Google; Facebook và Twitter… giúp người dùng dễ dàng truy cập vào nội dung
và ứng dụng của bạn một cách nhanh chóng và an toàn.[5]
Các tính năng chính
-

Tích hợp chặt chẽ với các tính năng khác của Firebase.

-

Sử dụng tiêu chuẩn ngành như OAuth 2.0 và OpenID Connect, vì vậy có thể dễ dàng
tích hợp với chương trình phụ trợ tùy chỉnh.

-

Cung cấp hai tùy chọn phát triển hoặc là FirebaseUI như một giải pháp xác thực thả
hoàn chỉnh hoặc SDK xác thực Firebase để tích hợp thủ công một hoặc nhiều phương
pháp đăng nhập vào ứng dụng.

-


Cung cấp xác thực an toàn giúp người dùng dễ dàng đăng nhập bằng tài khoản
Google mà họ đã sử dụng với Gmail, Google Play, Google+ và các dịch vụ khác của
Google. Tính năng này cũng hỗ trợ xác thực bằng mật khẩu và các nhà cung cấp
danh tính được liên kết nổi tiếng như Facebook và Twitter.

-

Cung cấp trải nghiệm ứng dụng liền mạch trên các thiết bị và vào trang web một cách
an toàn từ sự đồng ý một lần. Điều này sẽ giúp giữ cho người dùng liên tục tương tác,
bất kể họ chọn hay ngồi cạnh thiết bị nào.

-

Kết nối người dùng an toàn với các dịch vụ của Google. Chia sẻ với Danh bạ của
Google, lưu tệp vào Drive, thêm sự kiện vào Lịch, v.v.

-

Cho phép người dùng thanh toán bằng Google Wallet của họ. Đơn giản hóa mua
hàng trong ứng dụng bằng cách cung cấp cho người dùng khả năng thanh toán bằng
Google Wallet của họ.


CHƯƠNG III. PHÂN TÍCH THIẾT KẾ ỨNG DỤNG
V Các chức năng của ứng dụng
1 Quản lý tài khoản
❖ Đăng nhập
❖ Xem thông tin tài khoản
❖ Sửa thông tin tài khoản

❖ Đăng xuất

2 Tìm kiếm sản phẩm
❖ Tìm kiếm theo khu vực
❖ Tìm kiếm theo loại sản phẩm

3 Xem sản phẩm
❖ Quan tâm sản phẩm
❖ Liên lạc với người bán
- Gọi điện cho người bán
- Nhắn tin cho người bán

4 Trao đổi sản phẩm
❖ Đưa yêu cầu trao đổi cho người bán

5 Đăng bán sản phẩm
❖ Sửa thông tin sản phẩm
❖ Tra cứu các sản phẩm đang đăng bán


VI Biểu đồ Usecase
1

Biểu đồ Usecase tổng quát

Hình 6.

Biểu đồ Use case tổng quát
Bảng 1.



2

Đặc tả các Usecase
1

Đặc tả Usecase “Đăng nhập”

Mã Usecase

UC01

Tên Usecase

Use case Đăng nhập

Tác nhân

Người dùng

Mô tả

Cho phép người dùng truy cập để sử dụng thêm các tính năng
của ứng dụng

Điều kiện tiên
quyết

Người dùng chưa đăng nhập trên thiết bị hoặc đã đăng xuất
Tác nhân

1

Truy cập vào ứng
dụng

2

Đưa ra giao diện đăng nhập

3

Nhập thông tin số
điện thoại

4

Nhấn nút đăng nhập

Luồng sự kiện

Hệ thống tiếp nhận thông tin. Gửi
một mã OTP xác nhận và đưa sang
màn hình nhập mã OTP

5
6

7

Luống thay thế

và ngoại lệ
Điều kiện sau
Điều kiện thoát

Hệ thống phản hồi

Nhập mã OTP
Hệ thống xác nhận mã OTP, gửi
mã lên server kiểm tra. Nếu hợp lệ,
đưa ra thông báo thành công và
chuyển tới màn hình chính của ứng
dụng.
Nếu dữ liệu không hợp lệ, hệ thống
đưa ra thông báo và yêu cầu nhập
lại

Đăng nhập vào ứng dụng để thực hiện các chức năng
• Khi chức năng thực hiện thành công
• Khi người dùng chọn thoát


×