Chủ đề notification android studio: Notification trong Android Studio là một phần quan trọng giúp người dùng nhận được các thông tin quan trọng từ ứng dụng của bạn. Bài viết này sẽ hướng dẫn bạn cách tạo, tùy chỉnh và tối ưu hóa thông báo trong Android một cách hiệu quả, từ cơ bản đến nâng cao, giúp ứng dụng của bạn trở nên chuyên nghiệp hơn và thu hút người dùng tốt hơn.
Mục lục
- Giới thiệu về Thông báo trong Android Studio
- Cấu hình Firebase Cloud Messaging (FCM) trong Android Studio
- Cách tạo Notification cơ bản với NotificationCompat
- Gửi Push Notification bằng Firebase Console
- Cách tối ưu hóa thông báo đẩy trong Android
- Google Cloud Messaging (GCM) và Firebase Cloud Messaging (FCM)
- Phương thức truyền nhận dữ liệu trong Firebase Cloud Messaging
- Xử lý sự kiện khi nhận thông báo trong ứng dụng
Giới thiệu về Thông báo trong Android Studio
Thông báo (Notification) trong Android Studio là một cách quan trọng để cung cấp thông tin trực tiếp đến người dùng từ ứng dụng, ngay cả khi họ không đang sử dụng ứng dụng đó. Các thông báo này có thể xuất hiện dưới dạng tin nhắn ngắn trong thanh trạng thái, và khi người dùng nhấn vào, nó có thể mở một Activity cụ thể trong ứng dụng của bạn.
Bắt đầu từ Android 8.0 (Oreo), các thông báo được quản lý qua **Notification Channels**. Điều này giúp phân loại thông báo theo mức độ quan trọng, cho phép người dùng lựa chọn loại thông báo mà họ muốn nhận. Mỗi thông báo phải được gán vào một kênh (channel), điều này giúp nâng cao trải nghiệm người dùng khi tương tác với ứng dụng.
Để tạo ra một thông báo cơ bản, bạn sử dụng lớp NotificationCompat.Builder, lớp này cung cấp các phương thức như setContentTitle(), setContentText(), và setSmallIcon() để tùy chỉnh tiêu đề, nội dung, và biểu tượng của thông báo.
- Bước 1: Khởi tạo kênh thông báo (Notification Channel).
- Bước 2: Tạo một đối tượng
NotificationCompat.Builderđể thiết lập nội dung thông báo. - Bước 3: Đính kèm hành động thông qua
PendingIntent, để người dùng có thể tương tác trực tiếp với ứng dụng từ thông báo. - Bước 4: Sử dụng
NotificationManagerđể hiển thị thông báo với phương thứcnotify().
Ngoài ra, bạn có thể thêm các nút hành động vào thông báo, cho phép người dùng thực hiện các tác vụ ngay lập tức mà không cần mở ứng dụng. Những tính năng này giúp tăng tính tương tác và tiện ích của ứng dụng đối với người dùng.

Cấu hình Firebase Cloud Messaging (FCM) trong Android Studio
Firebase Cloud Messaging (FCM) là một dịch vụ miễn phí cho phép gửi thông báo đẩy (push notification) đến người dùng trên các nền tảng như Android, iOS và web. Trong Android Studio, việc cấu hình FCM giúp ứng dụng của bạn có thể tương tác với người dùng ngay cả khi ứng dụng không chạy.
Dưới đây là các bước chi tiết để cấu hình FCM trong Android Studio:
-
Bước 1: Thêm Firebase vào dự án Android Studio
- Mở Android Studio và tạo một dự án mới hoặc mở dự án có sẵn.
- Chuyển đến Firebase Console, tạo một project mới và thêm ứng dụng Android của bạn vào project đó.
- Tải xuống file cấu hình
google-services.jsonvà đặt vào thư mụcappcủa dự án.
-
Bước 2: Thêm thư viện Firebase Cloud Messaging vào file
build.gradle- Mở file
build.gradlecủa module app và thêm dòng sau để tích hợp FCM:
implementation 'com.google.firebase:firebase-messaging:17.0.0' - Mở file
- Đồng bộ dự án (Sync project) để tải xuống các dependency cần thiết.
-
Bước 3: Cấu hình AndroidManifest
- Thêm các service sau vào file
AndroidManifest.xmlđể ứng dụng có thể nhận thông báo và quản lý token:
- Thêm các service sau vào file
- Thiết lập icon và màu mặc định cho các thông báo nếu cần:
-
Bước 4: Gửi thông báo từ Firebase Console
- Truy cập Firebase Console, chọn dự án của bạn, vào phần Cloud Messaging và tạo một thông báo mới.
- Chọn đối tượng người nhận và nội dung thông báo, sau đó gửi đến thiết bị của bạn để kiểm tra.
Với các bước trên, bạn đã hoàn tất việc cấu hình FCM cho ứng dụng Android của mình. Thông qua FCM, bạn có thể gửi các thông báo hiệu quả để tăng cường tương tác với người dùng.
Cách tạo Notification cơ bản với NotificationCompat
Để tạo một Notification cơ bản trong Android, chúng ta thường sử dụng lớp NotificationCompat. Thư viện này giúp đảm bảo thông báo tương thích với nhiều phiên bản Android khác nhau. Dưới đây là các bước thực hiện:
- Thiết lập kênh thông báo (Notification Channel): Bắt đầu bằng việc tạo một kênh thông báo (Notification Channel) cho các thiết bị chạy Android 8.0 (API 26) trở lên. Đây là yêu cầu bắt buộc để hiển thị thông báo.
- Khởi tạo NotificationCompat.Builder: Sử dụng
NotificationCompat.Builderđể xây dựng nội dung thông báo. - Thiết lập hành động khi người dùng nhấp vào thông báo: Bạn cần tạo
PendingIntentđể mở một Activity khi người dùng tương tác với thông báo. - Hiển thị thông báo: Cuối cùng, sử dụng
NotificationManagerđể hiển thị thông báo.
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
CharSequence name = "Channel name";
String description = "Channel description";
int importance = NotificationManager.IMPORTANCE_DEFAULT;
NotificationChannel channel = new NotificationChannel(CHANNEL_ID, name, importance);
channel.setDescription(description);
NotificationManager notificationManager = getSystemService(NotificationManager.class);
notificationManager.createNotificationChannel(channel);
}
NotificationCompat.Builder builder = new NotificationCompat.Builder(this, CHANNEL_ID)
.setSmallIcon(R.drawable.notification_icon)
.setContentTitle("Tiêu đề thông báo")
.setContentText("Nội dung thông báo")
.setPriority(NotificationCompat.PRIORITY_DEFAULT);
Intent intent = new Intent(this, ResultActivity.class);
PendingIntent pendingIntent = PendingIntent.getActivity(this, 0, intent, 0);
builder.setContentIntent(pendingIntent);
NotificationManagerCompat notificationManager = NotificationManagerCompat.from(this);
notificationManager.notify(notificationId, builder.build());
Với các bước cơ bản trên, bạn có thể tạo và hiển thị một thông báo đơn giản trong ứng dụng Android của mình.
Gửi Push Notification bằng Firebase Console
Firebase Console là công cụ mạnh mẽ để gửi thông báo (Push Notification) tới ứng dụng Android. Bạn có thể thực hiện việc này trực tiếp mà không cần tạo server riêng, giúp đơn giản hóa việc quản lý và gửi thông báo đến nhiều người dùng cùng lúc.
Để gửi Push Notification từ Firebase Console, bạn cần làm theo các bước sau:
- Truy cập Firebase Console: Truy cập vào và chọn dự án Android của bạn.
- Chọn phần Notifications: Trong giao diện chính của Firebase Console, chọn mục "Cloud Messaging" hoặc "Notifications" để bắt đầu gửi thông báo.
- Tạo thông báo mới: Nhấp vào nút "Send your first message" hoặc "New Notification". Điền tiêu đề, nội dung thông báo và chọn ứng dụng Android mục tiêu.
- Cài đặt nâng cao: Trong mục "Advanced options", bạn có thể tùy chỉnh thời gian gửi, các thông tin bổ sung như dữ liệu JSON để đính kèm với thông báo.
- Chọn đối tượng nhận: Bạn có thể nhắm mục tiêu đến tất cả người dùng, hoặc chỉ gửi đến một nhóm thiết bị cụ thể dựa trên token hoặc chủ đề (topic).
- Gửi thông báo: Sau khi hoàn tất các thiết lập, bạn chỉ cần nhấn "Send" và thông báo sẽ được đẩy đến các thiết bị mục tiêu.
Thông báo sẽ được hiển thị trên các thiết bị của người dùng, và nếu ứng dụng của bạn được cấu hình đúng với Firebase Cloud Messaging (FCM), nó sẽ hiện thông báo trực tiếp ngay cả khi ứng dụng đang chạy ở chế độ nền.
Bạn cũng có thể sử dụng Firebase Console để kiểm tra lịch sử các thông báo đã gửi, giúp theo dõi và quản lý hiệu quả các chiến dịch thông báo.

Cách tối ưu hóa thông báo đẩy trong Android
Thông báo đẩy (Push Notification) là một công cụ quan trọng để tương tác với người dùng trong các ứng dụng di động. Tuy nhiên, để tối ưu hóa thông báo đẩy một cách hiệu quả, cần thực hiện những bước sau đây nhằm đảm bảo người dùng nhận được thông tin đúng lúc và phù hợp với nhu cầu cá nhân của họ.
1. Cá nhân hóa nội dung thông báo
Thông báo đẩy nên được cá nhân hóa dựa trên hành vi và sở thích của người dùng. Điều này bao gồm:
- Sử dụng dữ liệu người dùng để tạo ra các thông điệp cá nhân hóa (ví dụ: khuyến mãi cá nhân hoặc cập nhật đơn hàng).
- Phân đoạn khách hàng theo các tiêu chí cụ thể để gửi thông báo đúng đối tượng.
- Tránh gửi thông báo đẩy chung chung để nâng cao trải nghiệm người dùng.
2. Chọn thời điểm gửi thông báo phù hợp
Việc gửi thông báo đúng thời điểm rất quan trọng để tránh làm phiền người dùng. Một số gợi ý:
- Gửi thông báo trong các khung giờ mà người dùng thường sử dụng điện thoại (buổi sáng, giữa buổi làm việc, hoặc buổi tối).
- Không gửi quá nhiều thông báo trong một thời gian ngắn, tránh gây cảm giác khó chịu.
- Sử dụng hệ thống phân tích dữ liệu để tìm ra thời gian gửi thông báo phù hợp với từng nhóm người dùng.
3. Tối ưu hóa tần suất gửi thông báo
Tần suất gửi thông báo đẩy cần được quản lý một cách hợp lý. Gửi quá nhiều thông báo có thể khiến người dùng cảm thấy bị làm phiền và thậm chí dẫn đến việc gỡ bỏ ứng dụng. Nên:
- Giới hạn số lần gửi thông báo trong tuần, tốt nhất từ 1 đến 3 lần.
- Đảm bảo mỗi thông báo gửi đi đều có nội dung giá trị và liên quan đến người dùng.
4. Thiết kế giao diện thông báo hấp dẫn
Một thông báo đẩy với thiết kế hấp dẫn sẽ thu hút sự chú ý của người dùng và khuyến khích họ tương tác với ứng dụng:
- Sử dụng hình ảnh và biểu tượng bắt mắt (Rich Push Notification) để tăng cường tính tương tác.
- Đảm bảo rằng nội dung văn bản ngắn gọn nhưng đủ thu hút để người dùng mở thông báo.
5. Tối ưu hóa việc đăng ký nhận thông báo
Để người dùng có trải nghiệm tốt hơn với thông báo đẩy, cần tối ưu hóa quá trình đăng ký nhận thông báo:
- Cho phép người dùng tùy chỉnh loại thông báo họ muốn nhận (ví dụ: thông báo khuyến mãi, cập nhật tin tức, thông tin sản phẩm mới).
- Đảm bảo rằng việc đăng ký và hủy nhận thông báo dễ dàng, không gây khó khăn cho người dùng.
6. Sử dụng các chiến lược nhắc nhở
Thông báo đẩy có thể được sử dụng hiệu quả để nhắc nhở người dùng về các hoạt động chưa hoàn tất như giỏ hàng bỏ quên hoặc cập nhật đơn hàng. Điều này giúp tăng tỉ lệ chuyển đổi và giữ chân người dùng.
7. Phân tích và điều chỉnh chiến lược
Luôn theo dõi và phân tích hiệu suất của thông báo đẩy qua các chỉ số như tỉ lệ mở thông báo, tỉ lệ chuyển đổi và mức độ hài lòng của người dùng. Từ đó, bạn có thể điều chỉnh chiến lược thông báo để cải thiện hiệu quả.
Google Cloud Messaging (GCM) và Firebase Cloud Messaging (FCM)
Google Cloud Messaging (GCM) và Firebase Cloud Messaging (FCM) đều là các dịch vụ của Google dùng để gửi thông báo đẩy (Push Notification) đến các ứng dụng Android, iOS và web. Tuy nhiên, từ năm 2016, GCM đã được thay thế hoàn toàn bằng FCM với nhiều tính năng mới và tiện lợi hơn.
Sự khác biệt giữa GCM và FCM
- Khả năng tương tác: GCM cung cấp tính năng cơ bản để gửi thông báo và dữ liệu từ server đến các thiết bị người dùng. Trong khi đó, FCM nâng cấp với khả năng tương tác mạnh mẽ hơn như gửi thông báo qua Firebase Console, quản lý phân tích chi tiết với Google Analytics và tích hợp dễ dàng với các sản phẩm Firebase khác.
- Tích hợp: FCM tích hợp chặt chẽ với các dịch vụ khác của Firebase như A/B testing, dự đoán hành vi người dùng (Firebase Predictions), và nhiều công cụ hỗ trợ marketing khác để tăng hiệu quả gửi thông báo và nâng cao trải nghiệm người dùng.
- Quản lý thông báo: GCM không cung cấp giao diện trực quan để quản lý thông báo. Ngược lại, FCM cung cấp giao diện dễ sử dụng trên Firebase Console để bạn có thể gửi, lên lịch và kiểm tra hiệu quả của các thông báo dễ dàng.
- Khả năng tương thích ngược: FCM vẫn hỗ trợ các token GCM cũ, đảm bảo bạn không mất kết nối với người dùng cũ khi chuyển đổi từ GCM sang FCM.
Những tính năng mới của FCM
- Gửi thông báo từ Firebase Console: FCM cho phép bạn gửi thông báo trực tiếp từ Firebase Console mà không cần viết mã, giúp việc triển khai thông báo trở nên nhanh chóng và dễ dàng hơn.
- Thông báo phong phú (Rich Notifications): FCM hỗ trợ thông báo có hình ảnh, video, âm thanh và dữ liệu phức tạp với dung lượng lên đến 4KB trong payload, giúp cải thiện trải nghiệm người dùng.
- Quản lý và phân tích dữ liệu: Bạn có thể sử dụng Google Analytics để theo dõi hành vi người dùng khi nhận thông báo, từ đó tối ưu hóa chiến lược gửi thông báo dựa trên dữ liệu thực tế.
- Tối ưu hóa tài nguyên: FCM hoạt động tốt hơn trên các thiết bị Android nhờ khả năng tối ưu hóa năng lượng và sử dụng băng thông hiệu quả hơn so với GCM, đặc biệt với các tính năng như Doze và App Standby trên Android.
Quy trình nâng cấp từ GCM lên FCM
- Cấu hình Firebase Project: Tạo một project Firebase mới hoặc liên kết ứng dụng hiện tại với Firebase Console. Quá trình này giúp bạn tích hợp các dịch vụ của Firebase vào ứng dụng một cách dễ dàng.
- Thay đổi mã nguồn ứng dụng: Thực hiện các thay đổi trong mã nguồn của ứng dụng để sử dụng API của FCM thay vì GCM. Điều này bao gồm việc cập nhật các hàm đăng ký nhận thông báo và các sự kiện nhận token mới từ FCM.
- Cập nhật server: Nếu server của bạn đang sử dụng endpoint của GCM để gửi thông báo, bạn cần chuyển sang sử dụng endpoint của FCM để đảm bảo tính tương thích với các dịch vụ mới.
Lợi ích của việc sử dụng FCM
Việc nâng cấp từ GCM lên FCM không chỉ giúp cải thiện hiệu suất gửi thông báo mà còn mở ra nhiều cơ hội để bạn tận dụng các dịch vụ khác của Firebase, từ đó tăng cường tương tác và giữ chân người dùng hiệu quả hơn.
XEM THÊM:
Phương thức truyền nhận dữ liệu trong Firebase Cloud Messaging
Firebase Cloud Messaging (FCM) là dịch vụ thông báo đẩy mạnh mẽ và linh hoạt, cho phép bạn truyền tải tin nhắn từ máy chủ đến các thiết bị của người dùng, thông qua ứng dụng Android hoặc các nền tảng khác. Việc truyền nhận dữ liệu trong FCM diễn ra qua các bước cơ bản như sau:
Bước 1: Thiết bị đăng ký với FCM
- Khi ứng dụng Android được cài đặt lần đầu trên thiết bị, Firebase SDK sẽ gửi yêu cầu đăng ký đến server FCM để nhận một "token" duy nhất đại diện cho thiết bị đó.
- Token này sẽ được sử dụng để định danh thiết bị khi gửi thông báo sau này.
Bước 2: Máy chủ gửi tin nhắn đến FCM
- Tin nhắn có thể được gửi từ máy chủ của bạn bằng cách sử dụng FCM API hoặc Firebase Console.
- Máy chủ cần cung cấp "token" nhận được từ thiết bị ở bước trước, cùng với nội dung thông báo hoặc dữ liệu khác.
- Message có thể là Notification Message hoặc Data Message. Trong đó, Notification Message sẽ được Firebase SDK xử lý và hiển thị tự động, còn Data Message sẽ yêu cầu lập trình viên xử lý chi tiết hơn.
Bước 3: FCM chuyển tiếp tin nhắn đến thiết bị
- FCM nhận yêu cầu từ máy chủ, kiểm tra tính hợp lệ của token và gửi tin nhắn đến thiết bị đã đăng ký.
- Trong trường hợp ứng dụng đang chạy nền hoặc bị tắt, FCM sẽ đảm bảo tin nhắn được gửi vào thời điểm thiết bị sẵn sàng nhận thông báo.
Bước 4: Xử lý tin nhắn trên ứng dụng
- Khi ứng dụng nhận được thông báo, có hai phương thức chính để xử lý tin nhắn:
- onMessageReceived(): Phương thức này được gọi khi ứng dụng đang hoạt động và tin nhắn được nhận.
- onNewToken(): Được gọi khi token của thiết bị thay đổi, đảm bảo máy chủ có thể cập nhật và gửi thông báo đến đúng token mới.
- Ứng dụng có thể hiển thị thông báo ngay lập tức hoặc lưu trữ dữ liệu từ Data Message để sử dụng sau.
Các loại thông báo
- Notification Message: Thường dùng để hiển thị trực tiếp cho người dùng, bao gồm tiêu đề, nội dung và icon.
- Data Message: Bao gồm dữ liệu tùy chỉnh và thường dùng để xử lý logic riêng trong ứng dụng, như cập nhật nội dung hoặc trigger hành động đặc biệt.
- Kết hợp: Một tin nhắn có thể chứa cả Notification và Data, cho phép bạn hiển thị thông báo và truyền thêm dữ liệu nếu cần.
Đối tượng nhận thông báo
- Global: Tin nhắn sẽ được gửi đến tất cả người dùng ứng dụng đã đăng ký nhận thông báo từ máy chủ.
- Topic: Người dùng có thể đăng ký vào các chủ đề (topic) cụ thể để chỉ nhận thông báo liên quan đến chủ đề đó. Ví dụ, người dùng có thể đăng ký nhận thông báo về các bài viết mới hoặc khuyến mãi.
Như vậy, quá trình truyền nhận dữ liệu trong Firebase Cloud Messaging rất linh hoạt và mạnh mẽ, giúp bạn dễ dàng kết nối và tương tác với người dùng thông qua thông báo đẩy một cách hiệu quả.

Xử lý sự kiện khi nhận thông báo trong ứng dụng
Khi nhận được thông báo trong ứng dụng Android, việc xử lý các sự kiện tương tác của người dùng rất quan trọng. Dưới đây là các bước và phương thức phổ biến để xử lý các sự kiện này:
1. Phương thức onMessageReceived() và onNewToken()
- onMessageReceived(): Phương thức này sẽ được kích hoạt khi ứng dụng nhận được tin nhắn FCM từ server. Bạn có thể triển khai xử lý logic tại đây, ví dụ như hiển thị thông báo hoặc xử lý dữ liệu.
- onNewToken(): Phương thức này được gọi khi có sự thay đổi token FCM của thiết bị. Token này thường được dùng để định danh thiết bị khi gửi thông báo.
2. Tạo PendingIntent để xử lý sự kiện
Để tương tác với thông báo, bạn cần sử dụng PendingIntent. Đây là cách để mở một Activity hoặc xử lý một sự kiện khi người dùng tương tác với thông báo. Ví dụ:
Intent intent = new Intent(this, MainActivity.class);
PendingIntent pendingIntent = PendingIntent.getActivity(this, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT);
NotificationCompat.Builder builder = new NotificationCompat.Builder(this, CHANNEL_ID)
.setContentTitle("Tiêu đề thông báo")
.setContentText("Nội dung thông báo")
.setSmallIcon(R.drawable.notification_icon)
.setContentIntent(pendingIntent) // Intent sẽ được kích hoạt khi người dùng nhấn vào thông báo
.setAutoCancel(true);
3. Xử lý khi người dùng thao tác với thông báo
- setContentIntent(): Phương thức này định nghĩa hành động khi người dùng nhấn vào thông báo. Ví dụ, mở một Activity cụ thể.
- setDeleteIntent(): Được gọi khi người dùng xóa (swipe) thông báo. Điều này giúp bạn có thể ghi nhận hoặc thực hiện hành động khi thông báo bị xóa.
- addAction(): Thêm các nút hành động vào thông báo, ví dụ như trả lời tin nhắn hoặc thực hiện một thao tác cụ thể.
4. Sử dụng BroadcastReceiver để xử lý sự kiện
Nếu bạn cần xử lý các hành động phức tạp, bạn có thể sử dụng BroadcastReceiver. Ví dụ:
public class NotificationReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
String action = intent.getAction();
if ("ACTION_1".equals(action)) {
// Xử lý hành động 1
} else if ("ACTION_2".equals(action)) {
// Xử lý hành động 2
}
}
}
Đừng quên đăng ký BroadcastReceiver trong file AndroidManifest.xml:
5. Tự động xóa thông báo sau khi tương tác
Bạn có thể sử dụng phương thức setAutoCancel(true) để đảm bảo rằng thông báo sẽ tự động bị xóa sau khi người dùng nhấn vào nó.
6. Hiển thị nhiều loại thông báo
Bạn có thể cấu hình thông báo cho nhiều mức độ quan trọng khác nhau bằng cách sử dụng các kênh thông báo (Notification Channels) trên các thiết bị Android từ phiên bản 8.0 trở lên.
Ví dụ, bạn có thể tạo thông báo ưu tiên cao và thấp:
NotificationCompat.Builder highPriorityNotification = new NotificationCompat.Builder(this, CHANNEL_HIGH)
.setPriority(NotificationCompat.PRIORITY_HIGH);
NotificationCompat.Builder lowPriorityNotification = new NotificationCompat.Builder(this, CHANNEL_LOW)
.setPriority(NotificationCompat.PRIORITY_LOW);





.jpg)















Blender Room - Cách Tạo Không Gian 3D Tuyệt Đẹp Bằng Blender
Setting V-Ray 5 Cho 3ds Max: Hướng Dẫn Tối Ưu Hiệu Quả Render
D5 Converter 3ds Max: Hướng Dẫn Chi Tiết Và Các Tính Năng Nổi Bật
Xóa Lịch Sử Chrome Trên Máy Tính: Hướng Dẫn Chi Tiết Và Hiệu Quả
VLC Media Player Android: Hướng Dẫn Chi Tiết và Tính Năng Nổi Bật
Chuyển File Canva Sang AI: Hướng Dẫn Nhanh Chóng và Đơn Giản Cho Người Mới Bắt Đầu
Chuyển từ Canva sang PowerPoint - Hướng dẫn chi tiết và hiệu quả
Ghi Âm Zoom Trên Máy Tính: Hướng Dẫn Chi Tiết và Mẹo Hữu Ích
"Notion có tiếng Việt không?" - Hướng dẫn thiết lập và lợi ích khi sử dụng
Facebook No Ads XDA - Trải Nghiệm Không Quảng Cáo Đáng Thử
Ký Hiệu Trên Bản Vẽ AutoCAD: Hướng Dẫn Toàn Diện và Thực Hành
Tổng hợp lisp phục vụ bóc tách khối lượng xây dựng
Chỉnh kích thước số dim trong cad – cách đơn giản nhất 2024