Đặt vấn đề Trong bối cảnh phát triển của khoa học và công nghệ, mạng xã hội đã trở nên phổ biến với tất cả mọi người. Với sự hấp dẫn của mình, mạng xã hội đã trở thành một phần không thể thiếu trong cuộc sống thường ngày, đặc biệt là với giới trẻ. Có thể nói mạng xã hội là một kho tàng thông tin và kiến thức khổng lồ. Nó giúp chúng ta dễ dàng tìm kiếm thông tin một cách nhanh chóng và mang đến cho chúng ta những thông tin đa dạng, phong phú.Một số lợi ích có thể kể đến như: • Kết nối bạn bè: Mạng xã hội là phương tiện để những người dùng có thể kết nối với nhau.
Thông qua mạng xã hội, có thể nhắn tin, gọi video call để gặp mặt bạn bè, người thân bỏ qua những trở ngại về khoảng cách địa lý. • Chia sẻ tin tức, kiến thức: Mạng xã hội là phương tiện để những người dùng có thể kết nối với nhau. Thông qua mạng xã hội, có thể nhắn tin, gọi video call để gặp mặt bạn bè, người thân bỏ qua những trở ngại về khoảng cách địa lý. Đặc biệt, bạn cũng có thể làm quen với những người bạn mới có chung sở thích, lý tưởng, đam mê thông qua các hội nhóm, các trang chung hoặc bắt gặp khi cùng chia sẻ về một vấn đề nào đó.
Đó là lý do vì sao nói mạng xã hội là cầu nối gắn kết, củng cố các mối quan hệ hiện hữu và tạo cơ hội xác lập các mối quan hệ mới. • Chia sẻ cảm xúc cá nhân: Thông qua mạng xã hội, có thể bày tỏ quan điểm cá nhân cũng như chia sẻ cảm xúc, ý kiến về một vấn đề nào đó. Đôi khi niềm hạnh phúc sẽ được nhân lên khi có nhiều người bạn cùng chung vui hoặc nỗi buồn vơi đi khi có người cùng chia sẻ, đồng cảm. • Bán hàng, kinh doanh: Mạng xã hội tạo điều kiện cho nhiều bạn có thể bán hàng, kinh doanh các mặt hàng đa chủng loại hoặc quảng cáo cho thương hiệu của mình để tiếp cận nhiều đối tượng khách hàng hơn.
Việc kinh doanh, kiếm tiến online trên mạng xã hội ngày càng phổ biến và đem lại nguồn thu nhập không nhỏ cho các chủ shop, doanh nghiệp. • Giải trí: Lợi ích tuyệt vời của mạng xã hội đó là giúp người dùng có những phút giây giải trí, thư giãn với những tiện ích tích hợp như game, âm nhạc, phim ảnh. Thậm chí, việc xem newfeed và đọc những bài đăng mang ý nghĩa tích cực cũng giúp người dùng cảm thấy bớt mệt mỏi và căng thẳng sau một ngày làm việc, học tập vất vả. 1 Đồ án tốt nghiệp khóa 2019-2023 Trường Đại học Bà Rịa- Vũng Tàu 1.
Các công nghệ được lựa chọn 1. Frontend - Flutter (Cross-platform UI framework) Hình 1. Trang chủ https://flutter.dev Ra mắt vào Tháng 5 năm 2017, Flutter với sứ mệnh là một bộ thư viện dựa trên ngôn ngữ Dart (đều do Google tạo ra) giúp lập trình viên phát triển các phần mềm đa nền tảng (đa nền tảng đối với Flutter là việc viết phần mềm một lần bằng một ngôn ngữ Dart, tuy nhiên cho khả năng tự biên dịch ra các phần mềm tương tự nhau ở các nền tảng hệ điều hành như Android, iOS, Windows, Linux, MacOS, Web frontend… thay vì như cách phát triển truyền thống phải tự xây dựng từng phần mềm bằng ngôn ngữ lập trình riêng biệt cho mỗi nền tảng[Java/Kotlin cho Android; Swift/Objective-C cho iOS] – dẫn đến tốn thời gian và chi phí gấp nhiều lần). Các đặc trưng của Flutter: • Sử dụng ngôn ngữ Dart (ngôn ngữ lập trình mềm dẻo, hỗ trợ cả OOP, Reactive Programming và Functional Programming, static và dynamic typing, dễ học với hầu hết mọi người do cú pháp của Dart thuộc họ ngôn ngữ lập trình C [C-based programming language], ngôn ngữ được đội ngũ chuyên gia hàng đầu của Google phát triển - do đó đảm bảo độ tin cậy và mạnh mẽ cho các ứng dụng được viết bằng Dart) • Hỗ trợ Hot-reload (cơ chế tải lại mã [rebuild] cấp tốc giúp việc phát triển nhanh hơn bao giờ hết, người lập trình chỉ cần tạo thay đổi trong code và nhấn lưu thì giao diện sẽ được ngay lập tức cập nhật) 2 Đồ án tốt nghiệp khóa 2019-2023 Trường Đại học Bà Rịa- Vũng Tàu • Giúp tạo ra các ứng dụng có giao diện nhất quán bởi việc sử dụng trình render giao diện Skia (một trình render giao diện được viết bằng C++, giúp tái tạo lại mọi pixel trong màn hình thay vì sử dụng lại cơ chế sẵn có của hệ điều hành, điều này cho phép người lập trình khả năng tùy chỉnh mọi điểm ảnh trên màn hình của mình, từ đó cho hiệu năng cao hơn so với các công nghệ cùng lĩnh vực như React Native, Xamarin.
hay đặc biệt nhanh hơn khi so với các công nghệ Web-embedded như Ionic/PhoneGap). Ngoài ra, Flutter đảm bảo việc render giao diện giữ ở mức cơ bản 60FPS (60 khung hình/s) hoặc thậm chí 120FPS nếu thiết bị đáp ứng được (xem chi tiết), giúp mang lại trải nghiệm mượt mà cho người dùng • Bản thân Flutter đã và đang được đội ngũ phát triển tạo ra một kho các widget (controls/components/hay gọi là các thành phần giao diện) phong phú, giúp cho Flutter dễ dàng tiếp cận hơn đa số các công nghệ đa nền tảng khác. Họ không ngừng chia sẻ các video giới thiệu về các widgets, các series trên YouTube “vọc vạch” sâu vào cơ chế hoạt động của Flutter để giúp bất kì ai khi làm quen cũng sẽ có một kiến thức vững chắc về cách Flutter hoạt động • Flutter sử dụng ngôn ngữ Dart cho cả việc xây dựng code logic và giao diện (không giống như Java hay Kotlin cần viết riêng giao diện vào các file .xml), điều này giúp người lập trình không cần phải học thêm những khái niệm khác khi tạo giao diện – giúp quá trình phát triển được nhất quán và nhanh hơn bao giờ hết. Bản chất Flutter chỉ là một bộ UI framework giúp tạo giao diện nhanh chóng, nó không thể trực tiếp cung cấp cho người lập trình các API của hệ điều hành (các tác vụ thao tác với phần cứng, can thiệp sâu vào hệ thống như đọc ghi file, truy cập Camera, Micro…) như cách mà các công nghệ Native như Android (Java/Kotlin) hay iOS (Swift/Objective-C) làm được.
Để khắc phục nhược điểm đó, Flutter cung cấp cơ chế có tên gọi MethodChannel. Đây là một cơ chế giúp người lập trình có thể đứng ở code Flutter (Dart) và gọi được tới các hàm nằm ở phía ứng dụng Native của hệ điều hành để lấy thông tin, điều này giống như trái tim của Flutter khi nó vốn chỉ là thư viện tạo giao diện, nhờ đó làm tăng tính khả dụng khi lập trình phần mềm cho nhiều nền tảng mà vẫn đảm bảo tính tương thích hoàn toàn và tạo nên được những ứng dụng giúp xử lí hầu hết những yêu cầu khắt khe từ người dùng không kém cạnh những nền tảng Native. 3 Đồ án tốt nghiệp khóa 2019-2023 Trường Đại học Bà Rịa- Vũng Tàu Với những ưu điểm kể trên của Flutter, tôi chọn Flutter làm nền tảng để phát triển phần mềm cho đề tài này, với mong muốn phần mềm được tạo ra nhanh chóng, có một giao diện bắt mắt, hiệu năng tốt và chạy được trên nhiều nền tảng – do trong thực tế đối tượng sử dụng sẽ có thể dùng một trong hai hệ điều hành Android hoặc iOS Hình 1. Các ứng dụng nổi tiếng được xây dựng bởi Flutter 1.
Backend - Firebase Firebase được Google ra mắt vào Tháng 4 năm 2012, tới nay (2021) đã hơn 9 năm phát triển. Tiếp đến, vào năm 2014, Google mua lại Firebase và phát triển nó thành một dịch vụ đa chức năng được hàng triệu người sử dụng cho đến hiện nay. Firebase là dịch vụ cơ sở dữ liệu hoạt động trên nền tảng đám mây – cloud. Kèm theo đó là hệ thống máy chủ cực kỳ mạnh mẽ của Google.
Chức năng chính là giúp người dùng lập trình ứng dụng bằng cách đơn giản hóa các thao tác với cơ sở dữ liệu. Là một bộ công cụ đa năng giúp cho các nhà lập trình thúc đẩy quá trình phát triển sản phẩm với tốc độ cao ở phía giao diện người dùng mà không cần quan tâm nhiều đến Backend. Firebase cung cấp các cách tương tác cơ bản sau để kết hợp và xây dựng nên một hệ thống Phần mềm/Web: 4 Đồ án tốt nghiệp khóa 2019-2023 Trường Đại học Bà Rịa- Vũng Tàu - Web Console: Bộ công cụ quản trị các chức năng trên giao diện Web console.com - Backend SDK: Bộ thư viện phía Backend (dành cho máy chủ Web), giúp người lập trình có quyền truy cập sâu (quyền quản trị) vào các chức năng của Firebase - Frontend SDK: Bộ thư viện phía Frontend (dành cho Web frontend, Mobile/Desktop apps), giúp người lập trình kết nối tới/sử dụng các chức năng của Firebase. Hiện tại, Firebase cung cấp các chức năng/dịch vụ chính sau: - Authentication: Xác thực người dùng.
Với Firebase Authentication, người lập trình có thể tích hợp nhiều cách thức đăng nhập vào hệ thống như Xác thực bằng Email, số điện thoại, thông qua tài khoản của các bên như Facebook, Apple, Microsoft, Github… - Realtime Database: Cơ sở dữ liệu thời gian thực. Dữ liệu được lưu trữ ở định dạng cây JSON. Firebase Realtime Database cung cấp các bộ Client SDK (thư viện phát triển ở phía giao diện người dùng) cho phép cập nhật (đồng bộ) trong thời gian thực khi dữ liệu có thay đổi - Firestore Database: Cơ sở dữ liệu thời gian thực mở rộng. Đây là một kiểu CSDL mới được Firebase ra mắt vào Tháng 10/2017, cũng cho khả năng cập nhật thời gian thực như Firebase Realtime DB, thêm vào đó cho phép lưu trữ các loại dữ liệu phức tạp hơn, hỗ trợ việc truy vấn với các điều kiện đầy đủ hơn.
- Storage: Lưu trữ tập tin. Firebase Storage cho phép lưu trữ, truy xuất, tải lên/xuống các tập tin như: Ảnh, video, âm thanh… - Hosting: Lưu trữ website frontend. Firebase Hosting cho phép lưu trữ các website có nội dung ở phía frontend (JavaScript/HTML/CSS, ReactJS, VueJS, Angular, Svelte…). Hỗ trợ publish ra môi trường Internet với domain tùy chỉnh - Functions: Hàm từ xa.