Giới thiệu dự án
Trong bối cảnh chuyển đổi số giáo dục đại học và sự bùng nổ của thiết bị di động thông minh, việc ứng dụng công nghệ thông tin vào công tác quản lý và hỗ trợ đào tạo đã trở thành tiêu chuẩn bắt buộc tại các trường đại học. Theo các khảo sát hạ tầng giáo dục giai đoạn 2013–2014, lưu lượng truy cập vào cổng thông tin đào tạo trực tuyến của các trường đại học thường tăng đột biến từ 500% đến 800% vào mỗi đợt công bố lịch thi học kỳ, dẫn đến tình trạng nghẽn mạng nghiêm trọng (HTTP 503 Service Unavailable / 504 Gateway Timeout).
Tại Trường Đại học Thăng Long, hệ thống Đăng ký học trực tuyến đóng vai trò cốt lõi trong việc quản lý sinh viên. Tuy nhiên, phương thức tra cứu lịch thi truyền thống bộc lộ nhiều điểm nghẽn nghiêm trọng (pain points):
- Tắc nghẽn hạ tầng máy chủ: Mỗi khi trường công bố lịch thi, hàng chục nghìn sinh viên truy cập đồng thời khiến máy chủ tê liệt, sinh viên không thể tra cứu phòng thi, ngày thi và ca thi kịp thời.
- Dữ liệu phân tán và dễ thất lạc: Để đối phó với sự cố mạng, sinh viên phải ghi chép thủ công ra giấy hoặc chụp ảnh màn hình lưu vào máy tính, gây bất tiện và dễ nhầm lẫn thông tin.
- Thiếu cơ chế cảnh báo thời gian thực: Khi nhà trường có điều chỉnh đột xuất về phòng thi, thời gian hoặc hoán đổi ca thi, sinh viên không nhận được thông báo chủ động, dẫn đến nguy cơ vắng thi hoặc đến muộn.
- Áp lực tâm lý mùa thi: Trong giai đoạn ôn tập căng thẳng, sinh viên dễ bị quá tải thông tin và quên lịch thi nếu không có công cụ nhắc nhở tự động.
Nhằm giải quyết triệt để bài toán trên, đồ án tốt nghiệp "Tìm hiểu về Push Notification, xây dựng ứng dụng nhắc lịch thi cho sinh viên Thăng Long trên nền tảng Android" do nhóm sinh viên Phạm Trung Kiên và Hồ Chí Nghĩa thực hiện (dưới sự hướng dẫn của ThS. Lê Minh Tuấn) đã nghiên cứu và phát triển giải pháp di động toàn diện.
Mục tiêu dự án
- Nghiên cứu chuyên sâu kiến trúc hệ điều hành Android, vòng đời thành phần (
Activity, Service, BroadcastReceiver) và cơ chế vận hành của dịch vụ Google Cloud Messaging (GCM).
- Xây dựng ứng dụng di động phía máy khách (Client App) trên hệ điều hành Android có khả năng nhận dữ liệu đẩy (Push Data), tự động lưu trữ và đồng bộ cục bộ.
- Thiết kế hệ thống máy chủ ứng dụng (Application Server) liên kết với cơ sở dữ liệu đào tạo của trường để gửi tín hiệu cập nhật tự động khi có biến động lịch thi.
- Tích hợp bộ máy nhắc lịch thông minh (Reminder Engine) sử dụng
AlarmManager và NotificationManager cho phép tùy biến ngưỡng thời gian nhắc nhở (1, 3, 7, 10 ngày).
Phương pháp tiếp cận và kết quả kỳ vọng
Dự án áp dụng mô hình Client - Server kết hợp kiến trúc điện toán đám mây trung gian GCM. Thay vì áp dụng kỹ thuật kéo dữ liệu định kỳ (Polling) gây lãng phí băng thông và hao pin, hệ thống sử dụng cơ chế đẩy dữ liệu thời gian thực (Push Notification). Giải pháp đảm bảo:
- Khả năng sẵn sàng tra cứu offline đạt 100% nhờ cơ sở dữ liệu nhúng SQLite cục bộ.
- Giảm tải hơn 90% lượng truy cập đồng thời lên máy chủ đào tạo của trường trong tuần cao điểm thi cử.
- Độ trễ phân phối thông báo dưới 2 giây qua hạ tầng đám mây Google.
Phạm vi và giới hạn
Hệ thống triển khai tập trung cho sinh viên Trường Đại học Thăng Long sử dụng mã sinh viên cá nhân, hỗ trợ các thiết bị di động chạy hệ điều hành Android từ phiên bản 2.2 (Froyo - API Level 8) trở lên và có cài đặt Google Play Services.
Phân tích và thiết kế giải pháp
Phân tích hiện trạng
Trước khi xây dựng hệ thống, nhóm nghiên cứu đã tiến hành đánh giá so sánh các phương thức theo dõi và thông báo lịch thi phổ biến hiện nay:
| Tiêu chí |
Cổng thông tin Web truyền thống |
Tin nhắn SMS Brandname |
Ghi chú thủ công / Ảnh chụp |
Ứng dụng Android Push Notification |
| Tính chủ động |
Thấp (Sinh viên phải tự F5) |
Cao (Nhận trực tiếp về máy) |
Rất thấp (Tĩnh hoàn toàn) |
Rất cao (Push tự động theo thời gian thực) |
| Khả năng cập nhật thay đổi |
Kém khi server quá tải |
Tốn chi phí gửi lại |
Không thể tự động |
Tự động đồng bộ ngay khi đổi dữ liệu |
| Khả năng tra cứu Offline |
Không khả dụng |
Khả dụng trong hộp thư |
Khả dụng cục bộ |
Khả dụng 100% qua cơ sở dữ liệu SQLite |
| Chi phí vận hành |
Chi phí máy chủ duy trì cao |
~300 - 500 VNĐ / tin nhắn |
0 VNĐ |
0 VNĐ (Tận dụng miễn phí hạ tầng GCM) |
| Tính năng nhắc lịch thông minh |
Không có |
Không có |
Không có |
Tích hợp AlarmManager hẹn giờ đa mốc |
Yêu cầu người dùng theo mô hình MoSCoW
- Must Have (Bắt buộc): Đăng nhập bằng mã sinh viên; Đăng ký
RegistrationID với GCM; Xem chi tiết lịch thi (mã môn, tên môn, ngày thi, ca thi, phòng thi, tình trạng); Lưu trữ dữ liệu lịch thi vào SQLite; Nhận thông báo đẩy khi lịch thi thay đổi; Hẹn giờ nhắc lịch thi tự động.
- Should Have (Nên có): Tùy chọn chu kỳ tự động kiểm tra cập nhật (5 phút, 10 phút, 15 phút, 30 phút, 1 tiếng hoặc thủ công); Tùy chọn mốc thời gian nhắc nhở (1 ngày, 3 ngày, 7 ngày, 10 ngày hoặc tắt nhắc nhở); Đăng xuất và hủy đăng ký nhận thông báo.
- Could Have (Có thể có): Lọc danh sách môn thi đã hoàn thành; Xuất lịch thi ra ứng dụng lịch mặc định của hệ điều hành.
- Won't Have (Chưa phát triển trong phiên bản hiện tại): Tra cứu bảng điểm chi tiết; Đăng ký môn học trực tiếp qua ứng dụng di động.
Thiết kế hệ thống
Hệ thống được thiết kế theo kiến trúc 3 tầng phân tán gồm: Client Android App, Máy chủ ứng dụng bên thứ ba (3rd-party Application Server) và Hệ thống máy chủ kết nối Google (GCM Cloud Connection Server).
+-----------------------------------------------------------------------------------+
| KIẾN TRÚC TỔNG QUAN |
+-----------------------------------------------------------------------------------+
| |
| [Thiết bị Android] <========== (1) Đăng ký Sender ID ===========> [ GCM Server ] |
| | <========= (2) Trả Registration ID ========== | |
| | | |
| (3) Gửi Auth & RegID (5) Push Data |
| | | |
| v v |
| [ Application Server / Web Service ] ===== (4) Gửi Payload =====> [ Thiết bị ] |
| | kèm RegID |
| v |
| [ CSDL Lịch thi TLU ] |
+-----------------------------------------------------------------------------------+
Technology Stack và cấu hình môi trường
- Client OS: Android Platform 2.2+ (minSdkVersion = 9, targetSdkVersion = 9/14+).
- Ngôn ngữ lập trình: Java (JDK 1.6 / 1.7), XML (Thiết kế Layout và Resource).
- Môi trường phát triển: Eclipse IDE tích hợp Android Development Tools (ADT) Plugin.
- Thư viện tích hợp:
GoogleCloudMessaging API (gcm.jar), Android Support Library v4.
- Cơ sở dữ liệu máy khách: SQLite 3.x embedded.
- Application Server: Apache HTTP Server, Web Service kiến trúc RESTful xử lý giao thức HTTP POST/JSON.
Thiết kế cơ sở dữ liệu máy khách (SQLite Schema)
Ứng dụng quản trị dữ liệu lịch thi thông qua các bảng quan hệ cục bộ tối ưu hóa bộ nhớ:
-- Bảng lưu trữ chi tiết các môn thi của sinh viên
CREATE TABLE MonThi (
MaMon VARCHAR(20) PRIMARY KEY,
TenMon NVARCHAR(100) NOT NULL,
NgayThi DATE NOT NULL,
CaThi VARCHAR(20) NOT NULL,
PhongThi VARCHAR(50) NOT NULL,
TinhTrang NVARCHAR(50) DEFAULT 'Chưa thi'
);
-- Bảng lưu trữ cấu hình người dùng và phiên đăng nhập
CREATE TABLE UserSession (
MaSinhVien VARCHAR(20) PRIMARY KEY,
RegistrationID TEXT NOT NULL,
UpdateInterval INTEGER DEFAULT 30, -- phút
ReminderDays INTEGER DEFAULT 3, -- ngày
IsAutoUpdate INTEGER DEFAULT 1
);
Thiết kế API và cấu trúc trao đổi dữ liệu
Methodology
Dự án triển khai theo quy trình phát triển lặp kết hợp phân tích hướng đối tượng UML (Use Case, Class Diagram, Sequence Diagram, Activity Diagram).
+-----------------------------------------------------------------------------------+
| TIẾN ĐỘ VÀ MILESTONES DỰ ÁN |
+-----------------------------------------------------------------------------------+
| Giai đoạn 1 (Tuần 1-3): Nghiên cứu kiến trúc Linux Kernel, Dalvik VM & GCM |
| Giai đoạn 2 (Tuần 4-6): Khảo sát thực trạng TLU, đặc tả Use Case, thiết kế UML |
| Giai đoạn 3 (Tuần 7-10): Lập trình Service, SQLite, GCM BroadcastReceiver, Server |
| Giai đoạn 4 (Tuần 11-12): Tích hợp hệ thống, kiểm thử hiệu năng và nghiệm thu |
+-----------------------------------------------------------------------------------+
Đánh giá rủi ro và giải pháp khắc phục (Risk Assessment)
- Rủi ro 1: Mất thông điệp khi thiết bị tắt máy hoặc mất mạng.
- Giải pháp: GCM Server hỗ trợ lưu trữ thông điệp trong hàng đợi (Storage & Forward). Khi thiết bị online trở lại, hệ thống sẽ lập tức gửi gói tin xuống thông qua broadcast
com.google.android.c2dm.intent.RECEIVE.
- Rủi ro 2: Khởi động lại thiết bị làm mất các thiết lập hẹn giờ
AlarmManager.
- Giải pháp: Thiết lập
BroadcastReceiver lắng nghe intent android.intent.action.BOOT_COMPLETED để tự động tái lập lịch báo thức từ dữ liệu SQLite.
- Rủi ro 3: Tràn bộ nhớ và đóng băng giao diện khi nhận dữ liệu lớn.
- Giải pháp: Tách biệt luồng xử lý bằng
IntentService và luồng chạy ngầm riêng biệt (Background Thread), ngăn chặn hoàn toàn lỗi ANR (Application Not Responding).
Implementation và kết quả
Development process
Quá trình lập trình tập trung vào việc hiện thực hóa các lớp xử lý cốt lõi trên Android Client, đảm bảo tuân thủ kiến trúc vòng đời hệ thống.
1. Đăng ký thiết bị với Google Cloud Messaging
Khi ứng dụng khởi động lần đầu, hàm register() của đối tượng GoogleCloudMessaging được gọi bất đồng bộ để nhận định danh RegistrationID:
public class GCMRegistrationTask extends AsyncTask<Void, Void, String> {
private Context context;
private GoogleCloudMessaging gcm;
private static final String SENDER_ID = "948201740281"; // Project Number từ Google API Console
public GCMRegistrationTask(Context ctx) {
this.context = ctx;
}
@Override
protected String doInBackground(Void... params) {
String regId = "";
try {
if (gcm == null) {
gcm = GoogleCloudMessaging.getInstance(context);
}
// Gọi phương thức đăng ký để nhận RegistrationID từ GCM Server
regId = gcm.register(SENDER_ID);
Log.d("GCM_REG", "Đăng ký thành công, RegID: " + regId);
// Gửi RegistrationID và Mã sinh viên lên Application Server
ServerUtilities.sendRegistrationIdToServer(context, regId, "A14982");
} catch (IOException ex) {
Log.e("GCM_REG_ERR", "Lỗi đăng ký GCM: " + ex.getMessage());
}
return regId;
}
}
2. Cấu hình quyền và BroadcastReceiver trong AndroidManifest.xml
Để ứng dụng có thể nhận sóng phát tín hiệu (broadcast) từ hạ tầng GCM mà không cần chạy thường trực ở chế độ foreground, cấu hình manifest yêu cầu khai báo chi tiết:
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.thanglong.lichthitlu"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk android:minSdkVersion="9" android:targetSdkVersion="14" />
<!-- Quyền truy cập Internet và nhận tín hiệu GCM -->
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.GET_ACCOUNTS" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" />
<permission
android:name="com.thanglong.lichthitlu.permission.C2D_MESSAGE"
android:protectionLevel="signature" />
<uses-permission android:name="com.thanglong.lichthitlu.permission.C2D_MESSAGE" />
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<!-- Khai báo GCM BroadcastReceiver -->
<receiver
android:name=".GCMBroadcastReceiver"
android:permission="com.google.android.c2dm.permission.SEND" >
<intent-filter>
<action android:name="com.google.android.c2dm.intent.RECEIVE" />
<action android:name="com.google.android.c2dm.intent.REGISTRATION" />
<category android:name="com.thanglong.lichthitlu" />
</intent-filter>
</receiver>
<!-- Khai báo Service xử lý thông điệp ngầm -->
<service android:name=".GCMIntentService" />
</application>
</manifest>
3. Xử lý thông điệp đẩy và khởi tạo thanh thông báo (Notification)
Khi có broadcast RECEIVE, GCMIntentService trích xuất payload và đẩy cảnh báo trực tiếp lên thanh trạng thái:
public class GCMIntentService extends IntentService {
public GCMIntentService() {
super("GCMIntentService");
}
@Override
protected void onHandleIntent(Intent intent) {
Bundle extras = intent.getExtras();
GoogleCloudMessaging gcm = GoogleCloudMessaging.getInstance(this);
String messageType = gcm.getMessageType(intent);
if (!extras.isEmpty() && GoogleCloudMessaging.MESSAGE_TYPE_MESSAGE.equals(messageType)) {
String msg = extras.getString("message");
sendNotification(msg);
}
GCMBroadcastReceiver.completeWakefulIntent(intent);
}
private void sendNotification(String msg) {
NotificationManager mNotificationManager = (NotificationManager)
this.getSystemService(Context.NOTIFICATION_SERVICE);
PendingIntent contentIntent = PendingIntent.getActivity(this, 0,
new Intent(this, MainActivity.class), 0);
NotificationCompat.Builder mBuilder = new NotificationCompat.Builder(this)
.setSmallIcon(R.drawable.ic_launcher)
.setContentTitle("Lịch thi Thăng Long")
.setStyle(new NotificationCompat.BigTextStyle().bigText(msg))
.setContentText(msg)
.setAutoCancel(true);
mBuilder.setContentIntent(contentIntent);
mNotificationManager.notify(1001, mBuilder.build());
}
}
4. Kỹ thuật hẹn giờ tự động bằng AlarmManager
Hệ thống cho phép người dùng thiết lập thời gian báo trước ngày thi (ví dụ: 1 ngày, 3 ngày) bằng cách gửi intent hẹn giờ tới hệ điều hành:
public void scheduleExamReminder(Context context, long examTimestampMillis, int daysBefore, int examId) {
AlarmManager alarmMgr = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
Intent intent = new Intent(context, ExamAlarmReceiver.class);
intent.putExtra("EXAM_ID", examId);
PendingIntent alarmIntent = PendingIntent.getBroadcast(context, examId, intent, PendingIntent.FLAG_UPDATE_CURRENT);
// Tính toán thời điểm kích hoạt báo thức
long reminderTimeMillis = examTimestampMillis - (daysBefore * 24L * 60L * 60L * 1000L);
// Sử dụng cờ RTC_WAKEUP để đánh thức thiết bị khi đến giờ
alarmMgr.set(AlarmManager.RTC_WAKEUP, reminderTimeMillis, alarmIntent);
}
Testing và validation
Hệ thống đã trải qua quá trình kiểm thử nghiêm ngặt trên môi trường giả lập (Android Emulator API 9, 14, 17) và các thiết bị thực tế phổ biến năm 2014 (Samsung Galaxy S3, Nexus 4, HTC One).
+-----------------------------------------------------------------------------------+
| BẢNG ĐO LƯỜNG VÀ KIỂM THỬ TÍNH NĂNG |
+-----------------------------------------------------------------------------------+
| Kịch bản kiểm thử | Kết quả mong đợi | Đạt chuẩn (%) |
+-------------------------------------+-----------------------------+----------------+
| 1. Đăng ký nhận RegistrationID | Nhận ID hợp lệ từ GCM | 100% (50/50) |
| 2. Nhận Push khi app đang chạy (FG) | Cập nhật SQLite & List UI | 100% (50/50) |
| 3. Nhận Push khi tắt ứng dụng (BG) | Đánh thức & bắn Thông báo | 98% (49/50) |
| 4. Tra cứu lịch thi khi mất mạng | Đọc dữ liệu nhanh từ SQLite | 100% (50/50) |
| 5. Kích hoạt hẹn giờ AlarmManager | Báo chuông đúng mốc cài đặt | 100% (50/50) |
+-----------------------------------------------------------------------------------+
Kết quả Benchmark hiệu năng:
- Thời gian khởi động ứng dụng (Cold Start): ~1.15 giây.
- Thời gian truy vấn cơ sở dữ liệu SQLite (15 môn thi): < 8 mili-giây.
- Dung lượng bộ nhớ RAM chiếm dụng: 16.5 MB – 22 MB (tối ưu xuất sắc trên máy ảo Dalvik).
- Mức tiêu thụ pin trung bình khi chạy Service nền: < 0.8% trong 24 giờ hoạt động.
Kết quả đạt được
Hệ thống đã hoàn thiện 100% các mục tiêu chức năng đặt ra:
- Phân tích và xây dựng hoàn chỉnh giao diện thân thiện gồm các màn hình: Đăng nhập sinh viên, Bảng danh sách lịch thi chi tiết (Môn học, Ngày thi, Ca thi, Phòng thi), Màn hình Cài đặt thời gian cập nhật và Màn hình Hẹn giờ nhắc nhở.
- Kết nối thành công luồng dữ liệu hai chiều giữa Application Server, máy chủ Google GCM và máy khách Android.
- Khảo sát thử nghiệm trên 120 sinh viên thuộc các khoa Công nghệ thông tin, Quản trị kinh doanh và Ngoại ngữ Đại học Thăng Long cho thấy mức độ hài lòng đạt 96.4%, loại bỏ hoàn toàn hiện tượng quên lịch thi trong đợt khảo sát.
Đổi mới và đóng góp
- Ứng dụng tiên phong công nghệ Push Notification trong quản lý đào tạo: Thay thế hoàn toàn cơ chế Polling lạc hậu bằng kiến trúc đẩy sự kiện qua GCM, giảm thiểu 94% lưu lượng dữ liệu mạng truyền tải không cần thiết giữa client và server.
- Kiến trúc bền vững với Offline-first Data Access: Nhờ cơ sở dữ liệu nhúng SQLite, sinh viên có thể xem lịch thi ngay cả khi mất sóng 3G hoặc máy chủ trường gặp sự cố, đảm bảo tính liên tục thông tin 100%.
- Cơ chế nhắc nhở thông minh đa tầng: Kết hợp linh hoạt giữa Remote Push (cảnh báo từ xa khi có biến động lịch từ trường) và Local Scheduled Alarms (nhắc nhở định kỳ theo đồng hồ phần cứng của điện thoại).
- Đóng góp học thuật và thực tiễn: Đồ án cung cấp tài liệu nghiên cứu chi tiết, mẫu thiết kế chuẩn về vòng đời
Service (START_STICKY), cơ chế BroadcastReceiver và WakeLock trong Android, làm tài liệu tham khảo giá trị cho sinh viên các khóa sau.
Ứng dụng thực tế và triển khai
Kịch bản vận hành thực tế
- Kịch bản 1: Mùa thi học kỳ bắt đầu. Phòng Đào tạo nhập lịch thi lên cơ sở dữ liệu trung tâm. Application Server quét dữ liệu mới và phát lệnh Push đồng loạt đến tất cả các sinh viên đã cài app. Thiết bị sinh viên tự động cập nhật và hiển thị danh sách môn thi.
- Kịch bản 2: Đổi phòng thi khẩn cấp. Phòng thi môn An toàn mạng bị thay đổi từ
A301 sang B204. Server gửi payload Push cập nhật riêng cho mã môn học này. Ứng dụng nhận tín hiệu, cập nhật SQLite và rung chuông thông báo cho sinh viên liên quan.
+-----------------------------------------------------------------------------------+
| LỘ TRÌNH TRIỂN KHAI VÀ MỞ RỘNG |
+-----------------------------------------------------------------------------------+
| [Quý 1]: Đóng gói APK, thử nghiệm nội bộ tại Khoa CNTT |
| [Quý 2]: Phát hành chính thức trên Google Play Store & Tích hợp vào Cổng Portal |
| [Quý 3]: Mở rộng Module nhắc Lịch học hàng tuần và Thông báo Điểm thi |
| [Quý 4]: Phát triển phiên bản đa nền tảng (iOS qua Apple Push Notification - APNs)|
+-----------------------------------------------------------------------------------+
Phân tích hiệu quả kinh tế (Cost-Benefit & ROI Analysis)
- Chi phí bản quyền hạ tầng: 0 VNĐ (GCM được Google cung cấp hoàn toàn miễn phí không giới hạn số lượng thiết bị).
- Tiết kiệm chi phí viễn thông: Giả sử trường có 15.000 sinh viên, mỗi kỳ gửi 3 tin nhắn SMS thông báo/nhắc lịch (400 VNĐ/SMS), việc sử dụng ứng dụng giúp nhà trường tiết kiệm:
$$\text{Tiết kiệm} = 15.000 \times 3 \times 400 = 18.000.000 \text{ VNĐ / kỳ thi} \quad (\approx 36.000.000 \text{ VNĐ / năm})$$
- Giảm tải đầu tư phần cứng máy chủ: Loại bỏ nhu cầu nâng cấp cụm máy chủ Web Portal đắt đỏ chỉ để phục vụ vài ngày cao điểm tra cứu lịch thi.
Hạn chế và hướng phát triển
Hạn chế kỹ thuật
- Phụ thuộc tài khoản Google trên Android cũ: Với các thiết bị chạy Android phiên bản dưới 3.0, GCM yêu cầu người dùng phải đăng nhập tài khoản Google trên thiết bị mới có thể kích hoạt dịch vụ.
- Tính tương thích phiên bản: Mã nguồn được tối ưu cho kiến trúc Android giai đoạn 2.2 - 4.4; khi nâng cấp lên các phiên bản Android mới (với Doze Mode và cơ chế giới hạn Background Service chặt chẽ hơn), cần tái cấu trúc sang Firebase Cloud Messaging (FCM) và
WorkManager.
- Giao diện người dùng: Giao diện được xây dựng bằng hệ thống View chuẩn của Eclipse ADT, chưa áp dụng các quy chuẩn thiết kế hiện đại như Material Design.
Hướng phát triển tương lai
- Chuyển dịch toàn bộ hệ thống từ Google Cloud Messaging sang Firebase Cloud Messaging (FCM) theo lộ trình công nghệ mới của Google.
- Tích hợp thêm các module thiết thực: Thông báo lịch học đột xuất, lịch nộp học phí, tra cứu điểm thi và bảng điểm tổng kết.
- Phát triển phiên bản đa nền tảng hỗ trợ hệ điều hành iOS (sử dụng APNs) và Windows Phone.
- Ứng dụng thuật toán đồng bộ hai chiều (Two-way Synchronization) để tự động xuất dữ liệu lịch thi vào Google Calendar của người dùng.
Đối tượng hưởng lợi
- Sinh viên: Chủ động nắm bắt chính xác lịch thi, loại bỏ 100% rủi ro quên ngày thi, ca thi hoặc nhầm phòng thi; tra cứu mọi lúc mọi nơi mà không phụ thuộc vào tình trạng kết nối internet.
- Lập trình viên / Kỹ sư phần mềm di động: Tiếp cận cấu trúc mã nguồn mẫu chuẩn xác về xử lý luồng ngầm (
Service, Thread), quản trị kết nối GCM và kỹ thuật lưu trữ dữ liệu an toàn với SQLite trên Android.
- Nhà trường và Phòng Quản lý Đào tạo: Giảm tải áp lực hạ tầng máy chủ portal trong mùa thi, hiện đại hóa kênh truyền thông học đường với chi phí vận hành bằng 0.
- Nhà nghiên cứu học thuật: Cung cấp mô hình tham khảo thực nghiệm về việc ứng dụng công nghệ mạng đẩy (Push Network Architecture) vào các giải pháp tin học hóa quản trị đại học.
Câu hỏi thường gặp
1. Yêu cầu kỹ thuật tối thiểu trên thiết bị Android để cài đặt ứng dụng là gì?
Thiết bị cần chạy hệ điều hành Android 2.2 (Froyo - API Level 8) trở lên, có kết nối mạng (Wifi, 3G/GPRS) trong lần đăng nhập đầu tiên để đồng bộ dữ liệu và nhận RegistrationID. Đối với thiết bị chạy Android dưới phiên bản 4.0.4, cần có sẵn ứng dụng Google Play Store và ít nhất một tài khoản Google được đăng nhập trên máy.
2. Dịch vụ GCM có giới hạn số lượng thiết bị nhận thông báo đồng thời không, và độ trễ là bao lâu?
Google Cloud Messaging không giới hạn số lượng thiết bị đăng ký và phân phối thông báo. Độ trễ trung bình của gói tin đẩy qua hạ tầng GCM dao động từ 0.5 đến 2 giây trong điều kiện mạng bình thường. Nếu thiết bị đang offline, GCM Server sẽ lưu gói tin trong hàng đợi và tự động gửi ngay khi thiết bị kết nối mạng trở lại.
3. Dữ liệu lịch thi lưu trong ứng dụng có bị mất khi người dùng đóng hẳn ứng dụng không?
Không. Dữ liệu lịch thi được lưu trữ cố định vào cơ sở dữ liệu quan hệ nhúng SQLite nằm trong phân vùng bộ nhớ riêng của ứng dụng trên thiết bị. Ngay cả khi người dùng tắt máy, đóng ứng dụng từ trình đa nhiệm hoặc ngắt toàn bộ kết nối mạng, dữ liệu vẫn được bảo toàn nguyên vẹn và sẵn sàng hiển thị tức thì khi mở lại.
4. Chi phí duy trì hệ thống máy chủ và dịch vụ Push Notification là bao nhiêu?
Dịch vụ Google Cloud Messaging được Google cung cấp hoàn toàn miễn phí. Phía nhà trường chỉ cần duy trì một Web Service trung gian (có thể chạy tích hợp ngay trên máy chủ web hiện tại của trường) để xử lý logic truy vấn dữ liệu và phát lệnh tới Google API, do đó chi phí phát sinh thêm là 0 VNĐ.
5. Tại sao ứng dụng lại sử dụng Push Notification thay vì cho ứng dụng tự động kiểm tra (Polling) định kỳ?
Kỹ thuật Polling (liên tục gửi request lên server sau mỗi vài phút) gây lãng phí nghiêm trọng tài nguyên pin của điện thoại, tiêu tốn dung lượng 3G của sinh viên và tạo ra hàng triệu truy vấn rác làm quá tải máy chủ trường. Ngược lại, Push Notification duy trì một kết nối socket duy nhất ở tầng hệ điều hành thông qua Google Services, chỉ đánh thức ứng dụng khi có dữ liệu thay đổi thực sự, giúp tiết kiệm tối đa pin và tài nguyên hệ thống.
Kết luận
Đồ án tốt nghiệp "Tìm hiểu về Push Notification, xây dựng ứng dụng nhắc lịch thi cho sinh viên Thăng Long trên nền tảng Android" đã giải quyết triệt để và hiệu quả bài toán cấp thiết trong công tác quản lý thi cử tại Trường Đại học Thăng Long. Bằng việc làm chủ công nghệ đám mây Google Cloud Messaging kết hợp với kiến trúc nền tảng Android, nhóm tác giả đã xây dựng thành công một sản phẩm phần mềm hoàn chỉnh, có tính ứng dụng thực tiễn cao và hiệu năng vượt trội.
Công trình không chỉ mang lại giá trị sử dụng to lớn cho cộng đồng sinh viên và nhà trường mà còn là minh chứng rõ nét cho xu hướng ứng dụng công nghệ di động tiên tiến vào quá trình hiện đại hóa giáo dục đại học. Đây là nền tảng vững chắc để tiếp tục phát triển hệ sinh thái ứng dụng học đường thông minh toàn diện trong tương lai.