CHƯƠNG 1: TỔNG QUAN1.1 Giới thiệu chung Dating app, hay còn gọi là ứng dụng tìm bạn tâm sự, hẹn hò là một nơi để các đối tượng còn độc thân tìm kiếm bạn đời, trò truyện với những người b
Trang 1ĐẠI HỌC QUỐC GIA THÀNH PHỐ HỒ CHÍ MINH TRƯỜNG ĐẠI HỌC
CÔNG NGHỆ THÔNG TIN KHOA CÔNG NGHỆ PHẦN MỀM
BÁO CÁO ĐỒ ÁN 2
Đề Tài: Xây dựng ứng dụng tìm bạn
tâm sự
Sinh viên thực hiện:
Lê Hoàng Long - 17520709 Nguyễn Văn Tuấn: 17521218
GVHD:
Th.s Lê Thanh Trọng
TP Hồ Chí Minh, ngày 12 tháng 01 năm 2021
Trang 2NHẬN XÉT CỦA GIẢNG VIÊN
Trang 3
LỜI CẢM ƠN
Trước tiên nhóm chúng em xin gửi chân thành nhất đến thầy Lê Thanh Trọng.Chính nhờ sự giúp đỡ cũng như chia sẻ của thầy cùng những lời góp ý, phản biện mànhóm có thể hoàn thành ra được một sản phẩm khá hoàn thiện
Tuy vậy, trong quá trình thực hiện đồ án, viết báo cáo việc không tránh khỏinhững thiếu sót là điều chắc chắn Vì thế, nhóm rất mong nhận được những ý kiến đónggóp quý báu của quý Thầy để nhóm có thể rút kinh nghiệm và hoàn thiện đồ án mộtcách tốt nhất
Nhóm em xin chân thành cảm ơn!
Tp Hồ Chí Minh, tháng 07 năm 2020
Nhóm thực hiện.
Lê Hoàng Long Nguyễn Văn Tuấn
Trang 4Mục Lục
Contents
NHẬN XÉT CỦA GIẢNG VIÊN 2
LỜI CẢM ƠN 3
CHƯƠNG 1: TỔNG QUAN 5
1.1 Giới thiệu chung 5
1.2 Xu thế nghiên cứu và phát triển ứng dụng mạng xã hội kết bạn 5
1.3 Các ứng dụng mạng xã hội tìm bạn hiện nay 6
1.3 Tổng quan quá trình nghiên cứu 10
1.4 Mục tiêu đề tài 10
CHƯƠNG 2: CƠ SỞ LÝ THUYẾT XÂY DỰNG ỨNG DỤNG 11
2.1 Tìm hiểu về Flutter 11
2.1.1 Giới thiệu Flutter 11
a Flutter là gì? 11
b Ưu điểm của flutter 11
c Nhược điểm của flutter 11
2.2 Tìm hiểu về Dart 12
Dart tại trang chủ của nó https://www.dartlang.org/ 13
2.3 Tìm hiểu về Firebase 13
CHƯƠNG 3: Phân tích chức năng ứng dụng 16
3.1 Thiết kế màn hình 16
3.1.1 Màn hình đăng nhập 16
a Màn hình 16
16 b Chức năng 16
Sử dụng tài khoản đã đăng ký đăng nhập vào ứng dụng 16
3.1.2 Màn hình đăng ký 16
a Màn hình 17
17 b Mô tả chức năng 17
Đăng ký tài khoản để đăng nhập ứng dụng 17
Trang 53.1.3 Màn hình trang chủ 17
a Màn hình 17
18 b Mô tả chức năng 18
Màn hình chính 18
3.1.4 Màn hình kết bạn 18
a Màn hình 18
19 b Mô tả chức năng 19
Xem danh sách bạn bè và nhắn tin 19
3.1.5 Màn hình tài khoản cá nhân 19
a Màn hình 19
20 b Mô tả chức năng 20
Quản lí bài viết và thồn tin của bạn của bạn 20
3.1.6 Màn hình nghe nhạc 20
a Màn hình 20
21 b Mô tả chức năng 21
Nghe nhạc và thư giãn cùng bạn bè 21
3.1.7 Màn hình bài viết 21
a Màn hình 21
22 b Mô tả chức năng 22
Đăng bài viết và tương tác với bạn bè 22
CHƯƠNG 4: KẾT LUẬN 23
4.1Kết quả đạt được 23
4.2 Hạn chế 23
Trang 6CHƯƠNG 1: TỔNG QUAN
1.1 Giới thiệu chung
Dating app, hay còn gọi là ứng dụng tìm bạn tâm sự, hẹn hò là một nơi để các đối tượng còn độc thân tìm kiếm bạn đời, trò truyện với những người bạn xung quanh hay chỉ đơn giản những người đang cô đơn cần tìm bạn bè để tâm sự chia sẻ những trải nghiệm cuộc sống Ứng dụng hẹn hò, tìm bạn tâm sự hay chỉ đơn giản những người đang cô đơn cần tìm bạn bè để tâm sự chia sẻ những trải nghiệm của cuộc sống
Các ứng dụng kết bạn tâm sự hiện nay có nhiều tính năng và hình thức khác nhau, linh hoạt vận hành trên nhiều loại thiết bị điện tử hơn như điện thoại, máy tính bảng , laptop … phục vụ rất hiệu quả cho như cầu người dùng hiện nay.
1.2 Xu thế nghiên cứu và phát triển ứng dụng mạng xã hội kết bạn
Với sự phát triển bùng nổ của Internet, các mạng xã hội phổ biến hiện
nay như: Zalo, Facebook, Instagram, Viber … hay các trang web hẹn hò
bốn phương trở thành những kênh để việc kết nối, làm quen qua mạng
trở nên vô cùng đơn giản
Thêm vào đó phổ biến của điện thoại thông minh, các ứng dụng di động
cũng ngày một được đa dạng hóa để phù hợp với nhiều nhu cầu hơn,
trong đó bao gồm những ứng dụng dùng để hẹn hò.
Hiện nay, các ứng dụng tìm bạn, hẹn hò được phân ra 3 loại cơ bản như
Ứng dụng chia sẻ cảm xúc,liên lạc,cách khoảnh khắc trong cuộc sống
bằng các bảng tin (Face
Ứng dụng kết bạn
Trang 7 Các giao diện đàm thoại Một mô hình mới để tương tác với các dịch vụ trực tuyến.
1.3 Các ứng dụng mạng xã hội tìm bạn hiện nay
Instagram là một mạng xã hội chuyên chia sẻ ảnh và video nên bản thân nó được thiết kế dựa trên cơ sở sáng tạo ra những hình ảnh đẹp và thu hút Đồng thời, nó cũng cung cấp rất nhiều các chế độ chỉnh sửa ảnh và video khác nhau theo sở thích của người dùng
Trang 8Instagram bây giờ có nhiều hơn 1 tỷ người dùng hoạt động hàng tháng Con số này gấp hơn ba lần số người dùng hoạt động hàng tháng của TWITTER và trong khi hiện đang theo dõi người dùng WhatsApp và Facebook Messenger.
Tinder
Tinder là ứng dụng di động tìm kiếm xã hội dựa trên vị trí và ứng dụng Web thường được sử dụng làm dịch vụ hẹn hò trực tuyến, cho phép người dùng sử dụng chuyển động vuốt để thích (vuốt sang phải) hoặc không thích (vuốt sang trái) và cho phép người dùng trò chuyện nếu cả hai bên đều thích nhau ("hợp nhau")
Tinder có mặt ở 196 quốc gia khác nhau Trong đó, 3 quốc gia sử dụng nhiều nhất là Mỹ, Brazil và Anh.Có hơn 50 triệu người dùng Tinder và Trung bình mỗi ngày, một người dùng đăng nhập vào Tinder 11 lần
Trang 9 Lotus
Là mạng xã hội đa nền tảng, Lotus dưới sự điều hành của tập đoàn VCCorp đã trở thành một cộng đồng thông tin thu hút người Việt Nam sử dụng theo đúng với slogan quen thuộc “Người Việt Nam dùng hàng Việt Nam” Ứng dụng này cung cấp đa dạng các tính năng như:Tương tác với người nổi tiếng, Chia sẻ tiện ích, Chia sẻ và nâng cao ý thức cộng đồng,Hoạt động dựa trên tin tức và cộng đồng
Trang 10Các ứng dụng mạng xã hội kết bạn hẹn hò đều rất đa dạng và phong phú , đáp ứng tốt nhu cầu của người dùng hiện nay.Là cầu nối quan trọng trong việc nối kết mọi người lại với nhau.
Trang 11 Hệ sinh thái, các project mã nguồn mở để xây dựng chatbot ngày càng hoàn thiện và đầy đủ, có thể sử dụng trên hầu hết các môi trường develop.
Các ngôn ngữ cũng có những thư viện dành riêng cho ChatBot, các platform cócông cụ phát triển đầy đủ
Trang 121.3 Tổng quan quá trình nghiên cứu
Trong thời đại bùng nổ của tin nhắn cũng như thời đại công nghệ 4.0 thì chatbot rađời như một phần thiết yếu giúp mọi thứ trở nên tự động hơn thay vì một chủ cửa hàngphải trả lời tin nhắn hỏi mua sản phẩm của hơn nghìn người gửi đến thì chatbot sẽ tựđộng làm việc đó Ứng dụng những ưu điểm của chatbot thì nhóm em có chọn đề tài xâydụng chatbot để hỗ trợ học tập cho sinh viên, và tập trung vào xây dựng một con botcho việc học tập môn “Lập trình hướng đối tượng” là một môn nền tảng nhưng cũng khákhó đối với các bạn sinh viên năm nhất, năm hai tại trường Đề tài có ứng dụng việc xử lýngôn ngữ tự nhiên để hiểu được những câu hỏi của các bạn sinh viên để đưa ra câu trảlời chính xác.Ngoài ra các câu trả lời có thể chỉnh sửa được nếu có sai xót Ứng dụng hivọng sẽ giúp được các bạn sinh viên trong quá trình học tập
1.4 Mục tiêu đề tài
Tạo ứng dụng kết nối bạn bè bốn phương, kết nối bạn bè, chia sẻ cảm xúc trong cuộc sống
Tìm hiểu ngôn ngữ lập trình Dart và framwork UI Flutter
Tìm hiểu và sử dụng dịch vụ cơ sở dữ liệu Firebase ứng dụng vào việc phát triển Phần mền tìm bạn
Giúp người dùng thư giãn khi sử dụng ứng dụng bằng âm nhạc
Trang 13CHƯƠNG 2: CƠ SỞ LÝ THUYẾT XÂY DỰNG ỨNG
DỤNG
2.1 Tìm hiểu về Flutter
2.1.1 Giới thiệu Flutter
a Flutter là gì?
Flutter là nền tảng phát triển ứng dụng đa nền tảng cho iOS và Android do
Google phát triển Flutter sử dụng ngôn ngữ DART cũng do Google phát triển vàflutter cũng đã được sử dụng để tạo ra các ứng dụng native cho Google
Ngôn ngữ DART là ngôn ngữ thuần hướng đối tượng được Google giới thiệu từ năm 2011, với mục đích cung cấp sự lựa chọn hiện đại hơn nhưng không thay
thế Javascript Tối ưu cho client, nhất là ứng dụng đa nền tảng
b Ưu điểm của flutter
Mạnh về hiệu ứng, hiệu suất ứng dụng rất cao
Giao tiếp gần như trực tiếp với hệ thống
Ngôn ngữ kiểu tĩnh nhưng với cú pháp hiện đại (tương tự JS, Python, Java), compiler linh động khi dùng AOT (cho sản phẩm cuối) và JIT (cho quá trình phát triển với hot reload)
Có thể chạy được giả lập mobile ngay trên web, tiện cho việc phát triển Các bộ đo lường chỉ số hiệu suất được hỗ trợ sẵn giúp lập trình viên kiểm soát tốt hiệu suất củaứng dụng
Có thể dùng để xây dựng các nền tảng gắn vào ứng dụng native để tăng hiệu suất
c Nhược điểm của flutter
Bộ render UI được nhóm phát triển gần như viết lại, không liên quan tới UI có sẵn củaFramework native, dẫn đến memory sử dụng khá nhiều Hơn nữa, các UI không đi chung với OS, mà được phát triển riêng, nghĩa là cùng 1 phiên bản Flutter khi tạo ra ứng dụng cho iOS thì iOS 8.x -> 12.x đều y chang nhau, tương tự như với Android Nhưng UI của Android thì tất nhiên khác với iOS
Trang 14 Phải học thêm ngôn ngữ DART: lập trình viên biết về DART không nhiều, cũng có rủi
ro là học xong DART sẽ dính liền luôn với DART ở mảng phát triển ứng dụng mobile.Chứ không uyển chuyển như JS hay Python có thể nhảy qua lại giữa front, back hay AI…
Mô hình dữ liệu mới: bloc pattern, DART Streaming; nếu đã quen với Redux khi làm phát triển React Native, bạn sẽ mất thời gian để học thêm mô hình dữ liệu trong Flutter, mặc dù nó không khó
Là con cưng của Google, tuy nhiên hãng dính nhìu phốt với thói quen “quăng con giữa chợ” nên cũng cần cân nhắc Tuy nhiên, mình nhận thấy Flutter rất tốt, tốt hơn nhiều so với những cái mà Google từng làm ra như Angular
2.2 Tìm hiểu về Dart
a Dart là gì?
Dart là gì? Dart là ngôn ngữ lập trình đa mục đích ban đầu được phát triển bởi Google
và sau đó được Ecma (ECMA-408) phê chuẩn làm tiêu chuẩn Nó được sử dụng để xâydựng các ứng dụng web, server, máy tính để bàn và thiết bị di động Dart là một ngôn ngữ hướng đối tượng, được xác định theo lớp, với cơ chế garbage-collected, sử dụng
cú pháp kiểu C để dịch mã tùy ý sang JavaScript Nó hỗ trợ interface, mixin, abstract, generic, static typing và sound type (2 cái cuối có thể hiểu là type-safe) Dart là ngôn ngữ mã nguồn mở và miễn phí, được phát triển trên GitHub Hiện nay Dart đã releasephiên bản 2.10
b Những ưu điểm của dart.
Năng suất Cú pháp Dart rõ ràng và súc tích, công cụ của nó đơn giản nhưng mạnh mẽ.
Type-safe giúp bạn xác định sớm các lỗi tinh tế Dart có các thư viện cốt lõi và một hệ sinh thái gồm hàng ngàn package
Nhanh Dart cung cấp tối ưu hóa việc biên dịch trước thời hạn để có được dự đoán
hiệu suất cao và khởi động nhanh trên các thiết bị di động và web
Trang 15 Di động Dart biên dịch thành mã ARM và x86, để các ứng dụng di động của Dart có
thể chạy tự nhiên trên iOS, Android và hơn thế nữa Đối với các ứng dụng web, chuyển mã từ Dart sang JavaScript
Dễ gần Dart quen thuộc với nhiều nhà phát triển hiện có, nhờ vào cú pháp và định
hướng đối tượng không gây ngạc nhiên của nó Nếu bạn đã biết C ++, C # hoặc Java, bạn có thể làm việc hiệu quả với Dart chỉ sau vài ngày
Reactive Dart rất phù hợp với lập trình Reactive, với sự hỗ trợ để quản lý các đối
tượng tồn tại trong thời gian ngắn, chẳng hạn như các widget UI, thông qua phân bổ đối tượng nhanh và GC Dart hỗ trợ lập trình không đồng bộ thông qua các tính năng ngôn ngữ và API sử dụng các đối tượng Future và Stream
2.3 Tìm hiểu về Firebase
rất nhiều công cụ và dịch vụ để phát triển ứng dụng chất lượng, rút ngắn
thời gian phát triển và phát triển cơ sở người dùng mà không cần quan tâm
đến hạ tầng phần cứng
mẽ của Google 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.Đơn giản vì giờ
chúng ta chỉ cần phải lo phát triển phía Client( Ứng dụng mobile), còn phần
backend(server) đã có Firebase lo, chúng ta chỉ cần gọi API là đủ
Những dịch vụ mà Firebase cung cấp như:
a Realtime Database
Trang 16Firebase Realtime Database là kiểu dữ liệu NoSQL được lưu trữ trên cloud, cho phép bạn lưu trữ và đồng bộ dữ liệu người dùng theo thời gianthực.
Realtime syncing( đồng bộ theo thời gian thực) giúp người dùng truy cập vào dữ liệu của họ ở bất kỳ thiết bị nào
Có một ưu điểm của Realtime Database là Firebase sẽ cung cấp cho bạn một bộ SDK để bạn dễ dàng xây dựng ứng dụng mobile, web mà không cần một server
Khi thiết bị ngoại tuyến(offline), Realtime Database SDK sẽ sử dụng bộ nhớ của thiết bị Ứng dụng vẫn tương tác với người dùng như bình
thường Đến khi thiết bị online trở lại, nó tự động đồng bộ lên server
b Authentication
Với tính năng này của Firebase, bạn sẽ dễ dàng xây dựng tính năng login
mà không cần phải sử dụng dữ liệu đăng ký riêng Trước mình cũng có bài viết hướng dẫn các bạn sử dụng tính năng này để xây dựng tính năng xác thực bằng React native
Firebase cung cấp một số phương pháp authenticate cho ứng dụng của bạn như:
Email & Password
Trang 17 Phone numbers
c Firebase Cloud Messaging (FCM)
Đây chính là tính năng khởi thủy của Firebase, giúp chúng ta xây dựng ứng
dụng chat -trò chuyện Giờ đây, nó còn cho phép bạn đẩy thông báo( push
notification) tới nhiều thiết bị Android, IOS hay Web Bạn có thể gửi thông
báo(tối đa 2KB) hay tin nhắn( giới hạn 4KB) với độ tin cậy cao và được tối
ưu cho Battery Với FCM, bạn có thể tích hợp với Firebase Analytics để bạn
có thể dễ dàng phân tích người dùng, từ đó đưa ra chiến lược marketing
hợp lý
d Firebase Database Query
Bình thường, khi các bạn làm việc với database như MySQL, SQL Server…
bạn muốn lấy dữ liệu ra thì sẽ cần phải query vào database với câu lệnh
SQL rất phực tạp Fireabase database query giúp đơn giản hóa quá trình
mà không cần đưa ra một bản update nào cả
Trang 18CHƯƠNG 3: Phân tích chức năng ứng dụng
Trang 19b Mô tả chức năng
Đăng ký tài khoản để đăng nhập ứng dụng
a Màn hình
Trang 20b Mô tả chức năng Màn hình chính
a Màn hình
Trang 21b Mô tả chức năng
Xem danh sách bạn bè và nhắn tin
a Màn hình
Trang 22b Mô tả chức năng
Quản lí bài viết và thồn tin của bạn của bạn
a Màn hình
Trang 23b Mô tả chức năng
Nghe nhạc và thư giãn cùng bạn bè
a Màn hình
Trang 24b Mô tả chức năng
Đăng bài viết và tương tác với bạn bè
Trang 25CHƯƠNG 4: KẾT LUẬN
4.1Kết quả đạt được
Hiểu hơn về ngông ngữ lập trình dart và flutter
Có kinh nghiệm hơn trong việc làm việc nhóm, quản lý thời gian và quản lý source code
Hiểu hơn về quy trình và nhiệm vụ của một ứng dụng kết bạn
4.2 Hạn chế
Do thời gian thực hiện đồ án không quá nhiều và kiến thức cũng như khả năng
tự nghiên cứu của các thành viên trong nhóm còn có hạn nên nhóm chỉ thực
hiện được một số chức năng chính cho ứng dụng
Một số tính năng nâng cao cho ứng nhóm chưa thể hoàn thành và hi vọng sẽ có thời gian thực hiện đầy đủ hơn ở khóa luận tốt nghiệp
TÀI LIỆU THAM KHẢO
Một số link nhóm tham khảo để thực hiện đồ án:
https://firebase.google.com/docs
https://stackoverflow.com/
https://dart.dev/
https://flutter.dev/