App có chức năng : - Đăng kí thông qua số điện thoại bằng việc gửi OTP - Hiện thị và có thể chỉnh sửa thông tin người sử dụng. - Có thể chat với người khác thông qua tin nhắn, ảnh (sử dụng camera hoặc truy xuất ổ chứa trên điện thoại) và gửi đoạn ghi âm. - Hiển thị User bên kia có online hay là offline. - Danh sách bạn bè sẽ được cập nhật tự động theo danh bạ, có thể thêm bạn bè bằng số điện thoại. - Chat nhóm có thể chat giữa nhiều người với chức năng như chat 2 người, ngoài ra còn có quyền của admin và có thể cấp cho người khác, có thể chỉnh sửa thông tin nhóm hay thêm/xóa người khác ra khỏi nhóm. - Gửi tin nhắn về thông qua FCM trên thanh công cụ của điện thoại để thông báo có tin nhắn tới
GIỚI THIỆU TỔNG QUAN VỀ CƠ SỞ LÝ THUYẾT
Lý do chọn đề tài
Trong cuộc sống hằng ngày, ứng dụng nhắn tin luôn là ứng dụng thiết yếu trong mỗi điện thoại của chúng ta Với sự phát triển của ứng dụng android và nhu cầu nhắn tin lẫn việc chuyển dữ liệu sang người khác đang ngày càng phát triển thì các công ty đang đua nhau tạo ra các sản phẩm với các tiện ích và tối ưu ngày càng hiện đại
Chính vì vậy, em đã quyết đinh lựa chon đề tài “Ứng dụng nhắn tin cho các thiết bị Android ” tạo ra sản phẩm có thể đáp ứng nhu cầu của User với mục đích chính là xây dựng trải nghiệm của bản thân trong việc lập trình thiết bị di động.
Ý nghĩa bài toán và thực tiễn
Ứng dụng nhắn tin này phải đáp ứng được các nhu cầu tối thiểu như nhắn được tin nhắn và hình ảnh, hiện thị ra và chỉnh sửa thông tin của User (người dùng) và trò chuyện trong nhóm Vì các sản phẩm trên cửa hàng google play được các công ty xây dựng rất kĩ càng nên sản phẩm của em xây dựng trên trải nghiệm bản thân để học hỏi nên em không có nhu cầu cạnh tranh.
Bài toán đặt ra và giải pháp
Trước khi một thiết bị được tung ra thị trường, nó sẽ phải trải qua nhiều bước kiểm định đáp ứng các chính sách bảo mật nghiêm ngặt, nên nó phải đáp ứng được các nhu cầu bảo mật trên Google Play Ứng dụng này sẽ được cài đặt trên tất cả các thiết bị mới ngay trước khi được đóng gói đưa ra thị trường
Các bài toán gặp phải trong thiết kế ứng dụng - Ứng dụng sẽ sử dụng sever nào để lưu trữ dữ liệu
- Cách đăng nhập vào ứng dụng như thế nào
- User sẽ kết bạn với người khác kiểu gì và làm sao để giao tiếp với họ
- Ứng dụng sẽ truy cập vào những gì (ví dụ máy ảnh, ổ chứa file, ghi âm,… ) để trao đổi với người khác
- Làm sao để giao tiếp trong nhóm, cấp quyền admin cho nhóm và xóa/sửa thông tin nhóm
- Nhắn tin trên thiết bị thì thông báo trên thanh thông báo của thiết bị
Ứng dụng sẽ sử dụng firebase để lưu trữ dữ liệu User thông qua realtime database (dữ liệu thời gian thực) và storage cloud (ổ chứa file, ảnh trên đám mây)
User sẽ đăng kí thông qua số điện thoại, khi đó firebase sẽ gửi mã OTP (mã xác nhận) về và User nhập vào để đăng nhập, vào những lần sau User sẽ đăng nhập thẳng vào màn hình chính mà không cần đăng kí nữa
App sẽ tự động đọc danh bạ của User trên điện thoại để hiện bạn lên giống như WhatApps (kiểm tra xem User trong danh bạ có trùng số điện thoại với người nào đó trên database hay không), ngoài ra User còn có thể kết bạn thông qua việc điền số điện thoại
Ứng dụng cho phép gửi tin nhắn và hình ảnh, ngoài ra User có thể gửi đoạn ghi âm hoặc file bằng cách kéo nút trên màn hình User có thể click vào từng người trên danh sách để chat
Nhóm cũng sẽ hoạt động như chat 2 người với nhau, người tạo nhóm mặc định là admin, có quyền của admin và có thể cấp cho người khác, có thể chỉnh sửa thông tin nhóm hay thêm/xóa người khác ra khỏi nhóm
Ứng dụng sử dụng FCM (Firebase Cloud Messaging) là 1 công cụ giúp nhắn tin về điện thoại trên thanh thông báo, để khi User chat thì sẽ hiện thông báo như messager.
Mục tiêu của đề tài
App có chức năng : - Đăng kí thông qua số điện thoại bằng việc gửi OTP - Hiện thị và có thể chỉnh sửa thông tin người sử dụng
- Có thể chat với người khác thông qua tin nhắn, ảnh (sử dụng camera hoặc truy xuất ổ chứa trên điện thoại) và gửi đoạn ghi âm
- Hiển thị User bên kia có online hay là offline
- Danh sách bạn bè sẽ được cập nhật tự động theo danh bạ, có thể thêm bạn bè bằng số điện thoại
- Chat nhóm có thể chat giữa nhiều người với chức năng như chat 2 người, ngoài ra còn có quyền của admin và có thể cấp cho người khác, có thể chỉnh sửa thông tin nhóm hay thêm/xóa người khác ra khỏi nhóm
- Gửi tin nhắn về thông qua FCM trên thanh công cụ của điện thoại để thông báo có tin nhắn tới
Phương pháp nghiên cứu
- Ôn tập các kiến thức dã học như xử lý dữ liệu , mô hình hóa , lập trình hướng đối tượng , …
- Làm quen với các ứng dụng thiết kế (figma) để thiết kế qua giao diện cho ứng dụng cũng như tìm hiểu về Unit test , cách viết kịch bản để test app - Tham khảo các chính sách bảo mật của một số công ty lớn trên thị trường như
SamSung , Bkav - Tham khảo một số tính năng của một số app trên thị trường - Tham khảo ý kiến trên các diễn đàn công nghệ (StackOverFlow )
- Tự tìm hiểu và nghiên cứu các công nghệ hiện có trên thị trường như Java 11, Knox SDK , …
- Ngôn ngữ lập trình : Android java 1.8 , xml - Ứng dụng lập trình : Android Studio
- CSDL : Firestore database , Firebase messaging , Firebase Storage - Cùng 1 só các library , sdk khác
Giới thiệu về ngôn ngữ Java
Java là một ngôn ngữ lập trình hướng đối tượng (OOP) và dựa trên các class Khác với phần lớn ngôn ngữ lập trình thông thường , thay vì biên dịch mã nguồn thành mã máy hoặc thông dịch mã nguồn khi chạy Java được thiết kế biên dịch mã nguồn thành Bytecode, bytecode sau đó đã được môi trường thực thi (runtime environment chạy) Trước đây Java chạy chậm hơn các ngôn ngữ biên dich thẳng ra mã máy như C và C++
, nhưng sau đó nhờ công nghệ biên dịch tại chỗ khoảng cách này đã được thu hẹp , trong 1 số trường hợp java còn có thể chạy nhanh hơn Java chyaj nhanh hơn các ngôn ngữ thông dịch như Python , PHP , … và nó chạy gần như tương đương với C#
Java ban đầu được James Gosling tại Sun Microsystems (sau đó đã được Oracle mua lại) phát triển và được phát hành vào năm 1995 như một thành phần cốt lõi của nền tảng Java của Sun Microsystems Các trình biên dịch Java, máy ảo và thư viện lớp thực thi gốc và tham chiếu ban đầu được Sun phát hành theo giấy phép độc quyền Kể từ tháng 5 năm 2007, tuân theo các thông số kỹ thuật của Quy trình Cộng đồng Java, Sun đã cấp phép hầu hết các công nghệ Java của mình theo Giấy phép Công cộng GNU Oracle cung cấp Máy ảo Java HotSpot của riêng mình, tuy nhiên việc triển khai tham chiếu chính thức là OpenJDK JVM, là phần mềm mã nguồn mở miễn phí và được hầu hết các nhà phát triển sử dụng và là JVM mặc định cho hầu hết các bản phân phối Linux
Tính đến tháng 9 năm 2020, phiên bản mới nhất là Java 15, với Java 11, một phiên bản hỗ trợ dài hạn (LTS), được phát hành vào 25 tháng
9năm2018 Oracle phát hành bản cập nhật miễn phí cho công chúng với phiên bản kế thừa Java 8 LTS vào tháng 1 năm 2019 cho mục đích sử dụng thương mại, mặc dù nếu không nó sẽ vẫn hỗ trợ Java 8 với các bản cập nhật công khai cho mục đích sử dụng cá nhân vô thời hạn Các nhà cung cấp khác đã bắt đầu cung cấp các bản miễn phí của OpenJDK 8 và 11 mà vẫn đang nhận được bảo mật và các nâng cấp khá
1.6.3 Mục đích chính của ngôn ngữ java
Có 6 mục đích chính trong việc xây dựng ngôn ngữ Java :
- Đơn giản , hướng đối tượng và quen thuộc - Mạnh mẽ và an toàn
- Kiến trúc trung lập và di động - Thực thi với hiệu suất cao - Dịch ra bytecode , phân luồng và năng động - Dễ sử dụng cho User Java
1.6.4 Ưu điểm và nhược điểm
Java là ngôn ngữ mã nguồn mở , miễn phí và thuần hướng đối tượng
Được hỗ trợ IDE miễn phí
Có cộng đồng hỗ trợ lớn trên toàn thế giới
Dễ thực thi , dễ sử dụng , dễ tiếp cận
API hỗ trợ phong phú
Thư viện Java khá nặng
Tương tác với database phải có library riêng
Máy ảo java có thể chiếm nhiều bộ nhớ
Giới thiệu về lập trình Android
Android là một hệ điều hành được phát triển bởi “Gã khổng lồ” – Google dựa trên nền tảng Linux Từ khi xuất hiện tới nay, Android được phổ biến trên toàn thế giới và lượng User ngày một gia tăng Việc sử dụng ngôn ngữ lập trình Java kết hợp cùng mã nguồn mở giúp cho Android giúp cho các nhà phát triển ứng dụng được tự do hơn trong việc lập trình và khiến Android trở thành một hệ sinh thái các nhà phát triển ứng dụng
Khác với hệ điều hành IOS – bảo mật cao, Android được cộng đồng yêu thích bởi tính năng dễ dàng tùy biến và đa dạng
Tính tới thời điểm hiện tại, Android đã xuất hiện trên thị trường di động được hơn
20 năm và trải qua nhiều bản cập nhật lớn Mỗi bản cập nhật này đều mang lại những tính năng mới góp phần quan trọng trong sự phát triển và thống trị của nền tảng này.
Giới thiệu về Android Studio và Android SDK
- Tháng 5/2013, Google công bố Android Studio, một môi trường phát triển ứng dụng tích hợp (IDE) dành riêng cho Android, mã nguồn mở, dựa trên IDE Java IntelliJ của hãng JetBrains (đối thủ với Eclipse và Netbeans, vốn khá quen thuộc với dân lập trình Java)
- Android Studio chạy trên Windows, Mac và Linux, nhằm thay thế cho Eclipse Android Development Tool (ADT) vốn được sử dụng làm IDE chính trong các năm trước đó
- Một số tính năng nổi bật:
Bộ công cụ build ứng dụng dựa trên Gradle (thay vì Maven)
Chức năng dò và sửa lỗi nhanh, hướng Android
Công cụ chỉnh sửa màn hình dạng kéo thả tiện lợi
Các wizard tích hợp nhằm giúp lập trình viên tạo ứng dụng từ mẫu có sẵn
Tích hợp Google Cloud Platform, dễ dàng tích hợp với Google Cloud Messaging và App Engine của Google.
Giới thiệu về Firebase
- 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 User 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.Cụ thể là những giao diện lập trình ứng dụng API đơn giản Mục đích nhằm tăng số lượng User và thu lại nhiều lợi nhuận hơn
- Đặc biệt, còn là dịch vụ đa năng và bảo mật cực tốt Firebase hỗ trợ cả hai nền tảng Android và IOS Không có gì khó hiểu khi nhiều lập trình viên chọn Firebase làm nền tảng đầu tiên để xây dựng ứng dụng cho hàng triệu User trên toàn thế giới
- Gần một thập niên trước, Firebase ra đời với tiền thân là Envolve Đây là một nền tảng đơn giản chuyên cung cấp những API cần thiết để tích hợp tính năng chat vào trang web Bên cạnh ứng dụng nhắn tin trực tuyến, Envolve còn được User sử dụng để truyền và đồng bộ hóa dữ liệu cho những ứng dụng khác như các trò chơi trực tuyến,… Do đó, các nhà sáng lập đã tách biệt hệ thống nhắn tin trực tuyến và đồng bộ dữ liệu thời gian thực thành hai phần riêng biệt
- Trên cơ sở đó, năm 2012, Firebase ra đời với sản phẩm cung cấp là dịch vụ Backend- as-a-Service 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
Hiện nay , đã có rất nhiều dịch vụ đa dạng các chức năng như Firestore Database , Firebase Realtime , Firebase Meassing (FCM) , …
1.9.3 Ưu điểm và nhược điểm
Tạo tài khoản và phát triển nhanh
Tốc độ phát triển nhanh
Nhiều dịch vụ trong một nền tảng
Firebase được sở hữu bởi Google
Tạo lưu lượng truy cập và theo dõi lỗi
Đồng bộ dữ liệu online và offline
Không phải là mã nguồn mở
User không có quyền truy cập mã nguồn
Chỉ hoạt động với CSDL NoSQL
Không phải tất cả các dịch vụ của Firebase đều miễn phí
Chỉ chạy trên Google Clound
Không cung cấp các API GraphQL
1.9.4 Các công cụ Firebase mà em sử dụng
- Firestore Database : Cloud Firestore là một cloud-hosted, NoSQL database mà các ứng dụng phía client có thể trực tiếp truy cập thông qua native SDKs Nó lưu dữ liệu theo mô hình dữ liệu NoSQL Dữ liệu được lưu trữ trong các file tài liệu chứa các trường được ánh xạ vào các giá trị Các file tài liệu này được lưu trữ trong các tập hợp chúng có thể sử dụng nó để tổ chức dữ liệu và truy vấn dữ liệu Cloud Firestore hỗ trợ rất nhiều kiểu dữ liệu từ đơn giản như String, Integer hay những kiểu dữ liệu phức tạp như các nested object
- Firebase Cloud Messaging (FCM) là giải pháp nhắn tin đa nền tảng cho phép bạn gửi tin nhắn miễn phí một cách đáng tin cậy Sử dụng FCM, bạn có thể thông báo cho ứng dụng khách rằng email mới hoặc dữ liệu khác có sẵn để đồng bộ hóa Bạn có thể gửi tin nhắn thông báo để tăng mức độ tương tác lại và giữ chân User Đối với các trường hợp sử dụng như nhắn tin tức thì, một tin nhắn có thể chuyển tải trọng lên đến 4000 byte cho một ứng dụng khách
- Firebase Clound Storage : được xây dựng cho các nhà phát triển ứng dụng cần lưu trữ và phân phát nội dung do User tạo, chẳng hạn như ảnh hoặc video Cloud Storage cho Firebase là một dịch vụ lưu trữ đối tượng mạnh mẽ, đơn giản và tiết kiệm chi phí được xây dựng cho quy mô của Google SDK Firebase cho Bộ nhớ đám mây bổ sung tính năng bảo mật của Google cho các tệp tải lên và tải xuống cho các ứng dụng Firebase của bạn, bất kể chất lượng mạng như thế nào Chúng ta có thể sử dụng SDK của Firebase để lưu trữ hình ảnh, âm thanh, video hoặc nội dung khác do User tạo
Các nhà phát triển sử dụng SDK Firebase cho Bộ nhớ đám mây để tải lên và tải xuống tệp trực tiếp từ máy khách Nếu kết nối mạng kém, máy khách có thể thử lại hoạt động ngay tại nơi nó dừng lại, giúp tiết kiệm thời gian và băng thông cho User của bạn.
PHÂN TÍCH, THIẾT KẾ HỆ THỐNG
Khảo sát các ứng dụng tương tự
- Các tính năng nỗi bật có thể kể đến bao gồm:
Gọi video và âm thanh miễn phí cho User Zalo bất kể họ ở đâu trên thế giới
Tìm kiếm kết bạn dễ dàng nhanh chóng qua danh bạ
Hỗ trợ tìm kiếm bạn bè quanh khu vực bạn đang sinh sống
Nhắn tin icon, hình ảnh, ảnh động gif … cực kì vui nhộn, sống động
Chia sẻ tài liệu, danh thiếp
Chia sẻ vị trí, định vị trên bản đồ
Tin nhắn chúc mừng sinh nhật, lễ tết
Dễ sử dụng, thuận tiện cho User
Có thể hỗ trợ cho nhiều ứng dụng bên thứ 3
Đồng bộ rất bất tiện, không lưu và chuyển tiếp dữ liệu tự động giữa máy tính và điện thoại
Nhắn tin, gọi điện (cuộc gọi thoại và cuộc gọi video) cho bạn bè
Trả lời tin nhắn, chuyển tiếp tin nhắn giữa các ô chat với nhau
Thả biểu tượng cảm xúc cho tin nhắn
Tùy chọn chủ đề, màu sắc, biệt danh ngay trong ô chat
Chụp ảnh, quay video với nhiều hiệu ứng sáng tạo, độc đáo
Cùng xem film, video âm nhạc, chương trình TV thông qua tính năng chat video nhóm
Giao diện chat, danh sách bạn bè,danh sách các cuộc hội thoại
Dễ sử dụng, thuận tiện cho User
Có thể hỗ trợ cho nhiều ứng dụng bên thứ 3 và chính bản thân công ty Facebook
Việc lưu trữ tin nhắn tự động ngay cả online lẫn offline khiến tạo ra rất nhiều lưu trữ rác trên máy điện thoại
Giao diện trò chuyện đơn giản
Chức năng trò chuyện theo nhóm
Gọi điện miễn phí xuyên quốc gia
Cơ chế mã hóa tin nhắn bằng giọng nói và gửi các tệp PDF, slide, … đơn giản
Đồng bộ tốt với danh bạ điện thoại trong máy
Dễ sử dụng, thuận tiện cho User
Việc lưu trữ tin nhắn tự động ngay cả online lẫn offline khiến tạo ra rất nhiều lưu trữ rác trên máy điện thoại
Phân tích chức năng
Hình 2.1 Biểu đồ ca sử dụng tổng quát
- Biểu đồ ca sử dụng đăng kí tài khoản
Hình 2.2 Biểu đồ ca sử dụng đăng kí tài khoản
Use Case Name Create Account
Description là User muốn đăng kí để sử dụng ứng dụng
Pre-Conditions Thiết bị cần có internet
Post-Conditions User đăng kí thành công và hệ thống ghi nhận tài khoản đã đăng kí , lưu lại token của thiết bị đã đăng nhập để lần sau vào sẽ không cần đăng nhập OTP nữa ( nếu thiết bị đã có tài khoản trên số điện thoại thì sẽ bỏ qua bước điền thông tin)
Trigger User muốn đăng kí vào hệ thống
Basic flow User truy cập vào ứng dụng
User nhập số điện thoại và mã vùng
Hệ thống xác nhận thông tin đăng kí thành công và cho phép User điền thông tin cá nhân
Hệ thống lưu thông tin và gửi lên sever, đồng thời cho phép User vào trang chủ
Exception Flow Hệ thống kiểm tra xem token có trên máy hay không
- Biểu đồ ca sử dụng đăng nhập tài khoản
Hình 2.3 Biểu đồ ca sử dụng đăng nhập tài khoản
Description là User muốn đăng nhập lại để sử dụng ứng dụng
Pre-Conditions Thiết bị cần có internet Đã có tài khoản
Post-Conditions Hệ thống sẽ kiểm tra token lần trước đăng kí, và sẽ chuyển User vào trang chủ chính
Trigger User muốn đăng nhập vào hệ thống
Basic flow User truy cập vào ứng dụng
User nhập số điện thoại và mã vùng
Hệ thống xác nhận thông tin đăng kí thành công và cho phép User điền thông tin cá nhân
Hệ thống lưu thông tin và gửi lên sever, đồng thời cho phép User vào trang chủ
Exception Flow Hệ thống kiểm tra thông tin số điện thoại và mã OTP xem có hợp lệ không, thông tin tài khoản có trống không
Hệ thống yêu cầu User đăng kí lại
- Biểu đồ ca sử dụng chat giữa các tài khoản và trong nhóm
Hình 2.4 Biểu đồ ca sử dụng chat giữa các tài khoản và trong nhóm
Description là User muốn nhắn tin với nhóm hoặc bạn riêng
Pre-Conditions Thiết bị cần có internet Đã ở trong ứng dụng
Post-Conditions Hệ thống sẽ cập nhật thông tin người hoặc nhóm sẽ được nhắn tin
Trigger User click vào phần chat
Basic flow Phần chat hiện lên, cập nhật các tin nhắn trước (nếu có)
User có thể gửi tin nhắn, hình ảnh hoặc ghi âm lại để gửi cho người khác
Exception Flow Hệ thống sẽ liên tục kiểm tra phần nhắn tin để đảm bảo lỗi không xảy ra trong chuyển dữ liệu
- Biểu đồ ca sử dụng thêm bạn để chat
Hình 2.5 Biểu đồ ca sử dụng thêm bạn để chat
Use Case Name Add Friend
Description là User muốn thêm bạn trong ứng dụng để nhắn tin
Pre-Conditions Thiết bị cần có internet Đã ở trong ứng dụng
Post-Conditions Hệ thống sẽ kiểm tra xem trong danh bạ có số điện thoại nào trùng với người nào trong database không, nếu có sẽ thêm người đó vào
Trigger User muốn thêm bạn để nhắn tin
Basic flow User nhập ID hay số điện thoại của User
Hệ thống sẽ kiểm tra, nếu trùng với dữ liệu trên sever thì sẽ thêm vào
Exception Flow Nếu thông tin không đúng thì hệ thống sẽ không thêm bạn vào
- Biểu đồ tuần tự đăng kí
Hình 2.6 Biểu đồ tuần tự đăng kí
- Biểu đồ tuần tự đăng nhập
Hình 2.7 Biểu đồ tuần tự đăng nhập
- Biểu đồ tuần tự chat
Hình 2.8 Biểu đồ tuần tự chat
- Biểu đồ tuần tự thêm bạn
Hình 2.9 Biểu đồ tuần tự thêm bạn
- Biểu đồ tuần tự tạo nhóm và thêm bạn bè
Hình 2.10 Biểu đồ tuần tự tạo nhóm
Cơ sở dữ liệu được lưu trên firebase theo mô hình cơ sở dữ liệu phi quan hệ trên Firebase bằng cơ sở dữ liệu thời gian thực (Real-time database)
- User : Lưu trữ thông tin User
User PK uID name image number online status token
uID : Id tự tạo cho User
number : số điện thoại User
online : thể hiện trạng thái online hay offline User
status : dòng trạng thái của User
token : token để nhận thông báo tin nhắn đến và đăng nhập vào app
image : lưu hình ảnh User dưới dạng đường dẫn trong firebase
- Chat : Lưu thông tin tin nhắn User
Chat PK uID date message receiver sender type
date : thời gian gửi tin nhắn
message : tin nhắn người gửi, có thể là tin nhắn, ảnh hoặc ghi âm
type : thay đổi tùy theo message, có thể là text, image hoặc record
- Chat List: Lưu thông tin tin nhắn User đã nhắn tin
Chat List PK uID date Lastmessage Member ChatListID
Lastmessage : tin nhắn cuối được gửi từ người chat
- Group Detail : Lưu thông tin chi tiết của nhóm
AdminID adminName CreateAt Image isAdmin
isAdmin : kiểm tra có phải admin hay không
- Group Message : Lưu thông tin chat của nhóm, ngoài ra cách lưu tin nhắn cũng giống như Chat list
Group Message PK uID date Lastmessage Member ChatListID
uID : ID tự tạo nhóm
date : thời gian gửi trong nhóm
Lastmessage : tin nhắn cuối được gửi từ người chat trong nhóm
member : id người gửi trong nhóm
ChatListID : id người nhận trong nhóm
Hình 2.11 Cơ sở dữ liệu trên Firebase
Hình 2.12 Lưu trữ file trên firebase
Hình 2.13 Key sever để gửi tin nhắn đến ứng dụng
Luồng màn hình
Hình 2.14 Sơ đồ luồng chạy ứng dụng
STT Tên màn hình Mô tả
1 Login Screen Màn hình đăng nhập
2 Verify Screen Màn hình xác nhận OTP
3 User Data Screen Màn hình điền dữ liệu User
4 Home Screen Màn hình trang chủ
5 Last Message Screen Màn hình tin nhắn gần nhất
6 Group Screen Màn hình nhóm
7 Contact Screen Màn hình hiển thị và thêm bạn bè 8 Profile Screen Màn hình thông tin cá nhân
9 Profile Contact Screen Màn hình thông tin bạn bè
10 Chat Screen Màn hình nhắn tin
2.3.2 Sơ đồ luồng chạy trong nhóm
Hình 2.15 Sơ đồ luồng chạy trong nhóm
STT Tên màn hình Mô tả
1 Group Screen Màn hình nhóm
2 Chat Group Screen Màn hình chat trong nhóm 3 Add Member Screen Màn hình thêm bạn bè vào nhóm 4 Group Info Screen Màn hình thông tin nhóm
Đặc tả các màn hình chính
Hình 2.16 Màn hình đăng nhập (Login Screen)
- Ứng dụng sẽ chuyển đến màn hình chờ OTP, User sẽ nhập mã OTP được gửi trên thanh thông báo
- Số điện thoại gửi đến phải hợp lệ, nghĩa là phải có sim nếu không sẽ không nhận được tin nhắn
Hình 2.17 Màn hình nhập OTP (Verify Screen)
- Khi User nhập mã OTP thì sẽ chuyển đến phần nhập thông tin, User sẽ phải nhập thông tin cá nhân vào
- User điền thông tin vào tên, trạng thái và chỉnh ảnh, ảnh có thể được lấy từ bộ sưu tập hoặc tự chụp rồi lưu vào
Hình 2.18 Màn hình điền thông tin (User Data Screen)
- Phần hiển thị chat giữa 2 người trong thời gian trước
Hiển thị ra những đoạn chat mà User đã chat trước đó với thời gian các từ lần chat gần nhất
User có thể click vào để đến đoạn chat đó luôn
Hình 2.19 Màn hình thông tin chat (Last Message Screen)
- Phần hiển thị chat nhóm
Hiển thị phần chat nhóm mà bạn là thành viên trong đó ( có thể là admin lẫn thành viên)
User click vào thì sẽ chuyển đến đoạn hội thoại nhóm
Hình 2.20 Màn hình thông tin nhóm (Group Screen)
- Phần hiển thị chat trong danh sách bạn bè
Hiển thị thông tin bạn bè ( đồng bộ từ danh bạ), ngoài ra User có thể thêm bạn bằng cách nhập số điện thoại
Click vào icon thông tin thì sẽ xem được trang cá nhân bạn bè, còn click vào thì sẽ chuyển đến cuộc hội thoại
Hình 2.21 Màn hình thông tin chat bạn bè (Contact Screen)
- Phần hiển thị thông tin cá nhân (có thể chỉnh sửa)
Hiển thị trang thông tin cá nhân, User có thể chỉnh sửa các thông tin trên đó
Hình 2.22 Màn hình thông tin cá nhân (Profile Screen)
- Phần hiển thị thông tin cá nhân bạn bè chỉ có thể xem
Hình 2.23 Màn hình thông tin bạn bè (Profile Contact Screen)
2.4.3 Màn hình chat (giữa 2 người với nhiều người)
User có thể chat tin nhắn, ảnh, ghi âm cho nhau
Hình 2.24 Màn hình chat giữa 2 người (Chat Screen)
Tương tự như chat 2 người nhưng có thể phần quản lý nhóm (như trong hình là quản lý nhóm cho admin)
Hình 2.25 Màn hình chat nhóm (Chat Group Screen)
- Phần thêm bạn bè vào nhóm
Phần thêm bạn bè vào nhóm, bạn bè sẽ được hiển thị dựa vào danh bạ để User thêm vào
Hình 2.26 Màn hình thêm bạn bè vào nhóm (Add Member Screen)
- Phần hiển thị thông tin nhóm
Phần hiển thị quản lý nhóm, User có quyền cũng có thể cấp quyền admin cho người khác
Hình 2.27 Màn hình hiển thị thông tin nhóm (Group Info Screen)
Kiểm thử chức năng của ứng dụng
STT Nội dung Mục đích kiểm thử Đầu vào Đầu ra mong muốn
1 Đăng nhập/đăng kí bằng số điện thoại
Kiểm tra xem điện thoại có nhận được
Nhập số điện thoại vào Điện thoại nhận được OTP để điền vào
Kiểm tra xem OTP xác nhận có hoạt động không
Xác nhận mã OTP và vào phần nhập thông tin
2 Nhập thông tin đầu vào của tài khoản
Kiểm tra xem nhập thông tin có validate chưa
Validate thông tin xem hợp lệ không
Kiểm tra xem máy ảnh và bộ sưu tập có lấy được ảnh không
Nhấn vào icon chỉnh sửa ảnh
Lấy ảnh và thay đổi avatar
3 Phần hiển thị bạn bè để chat
Kiểm tra xem có hiển thị được bạn bè từ danh bạ không
Lấy dữ liệu từ danh bạ
Thêm dữ liệu User vào màn hình
Tìm kiếm, thêm số điện thoại
Thêm bạn bè vào màn hình
4 Phần gửi tin nhắn giữa 2 người/nhóm
Kiểm tra xem có gửi được tin nhắn/hình ảnh không
Thêm ảnh vào trong phần chat
Hiển thị ảnh lên màn hình và gửi dữ liệu ảnh về kho chứa trên sever
Thêm tin nhắn vào trong phần chat
Hiển thị ảnh lên màn hình và gửi dữ liệu tin nhắn về cơ sở dữ liệu
Kiểm tra hiển thị trạng thái User
Hiển thị online khi giữ ứng dụng chạy
Thông báo bằng icon online
Hiển thị offline khi thoát ứng dụng ra ngoài
5 Quản lý quyền trong nhóm
Kiểm tra chức năng của admin và thành viên hoạt động không
Admin hiển thị quyền quản lý còn thành viên thì không
Hiển thị đúng với yêu cầu
Kiểm tra việc phân quyền admin trong nhóm
Click vào phần chuyển quyền cho người khác
Thay đổi giao diện và dữ liệu của thành viên
KẾT QUẢ
- Sau 1 thời gian tìm hiểu đề tài “Thiết kế và xây dựng App nhắn tin” em đã cơ bản thực hiện được những nội dung theo yêu cầu của em đặt ra
- Đề tài “Thiết kế và xây dựng App nhắn tin” xây dựng trên những ý tưởng khi em học tập về lập trình trên thiết bị di động và qua các đợt thực tập để từ đó em có thể hiểu được cách lập trình và phát triển ứng dụng trong tương lai
- Mặc dù em đã có nhiều cố gắng, tìm hiểu các kiến thức đã được học kết hợp với tra cứu các tài liệu trên mạng nhưng do hạn chế về thời gian, trình độ và kinh nghiệm nên không tránh khỏi những sai sót trong ứng dụng cũng như chưa hoàn thành được các tính năng nâng cao
- Ứng dụng của em đã đạt được :
Đăng nhập vào bằng điện thoại, có đăng xuất và User có thể đăng ký thông qua số điện thoại với mã vùng ( điện thoại phải có sim mới nhận được thông báo)
Thêm bạn bè thông qua nhập số điện thoại, số điện thoại sẽ tự động được lưu vào danh bạ và có thể đồng bộ
Nhắn tin bằng đoạn text, hình ảnh, icon hoặc là file ghi âm
Hiển thị online, offline User trên máy