Tạo Push Notification với Firebase trong ứng dụng Android

Dịch vụ dạy kèm gia sư lập trình
Bài này thuộc phần 5 của 8 phần trong series Học Firebase cơ bản

Trên VNTALKING, mình đã từng có bài viết hướng dẫn cách sử dụng OneSignal để tạo push notification với ứng dụng viết bằng React native. Các bạn có thể đọc lại tại đây: Tạo Push Notification với React native

Tuy nhiên, có một dịch vụ tạo push notification khác cũng nổi tiếng không kém. Đó chính là Firebase. Để biết Firebase là gì và công dụng của nó như thế nào, mình mời các bạn tham khảo bài viết: Firebase là gì? Dịch vụ tuyệt vời của Google

Có rất nhiều dịch vụ hỗ trợ tạo push notification như: OneSignal, Firebase, Pushwoosh… Dịch vụ nào cũng có cái hay của nó.

Nhân tiện, mình cũng có một số dự án Android cần phải tạo Push Notification. Mình viết một bài chia sẻ cách tạo tính năng push notification với Firebase cho ứng dụng Android

Tạo Push Notification sử dụng Firebase trong ứng dụng Android

#Push Notification là gì?

Push Notification là một dạng tin nhắn đơn giản xuất hiện cùng với thông báo của hệ thống hoặc giống như tin nhắn bật lên -tuỳ thuộc vào nền tảng.

Push notification thường được đẩy từ một backend server, trong trường hợp này là firebase. Đây là cách cung cấp cho người dùng một tin nhắn mà không cần phải mở ứng dụng.

Push notification là gì
Push notification là hình thức giúp bạn kéo người dùng tương tác với ứng dụng

Push Notification là một công cụ hiệu quả cao để các nhà phát triển và nhà quảng cáo thu hút các người dùng không hoạt động. Từ đó lôi kéo người dùng tương tác với ứng dụng của bạn nhiều hơn.

#Firebase cloud Messaging là gì?

Firebase Cloud Messaging(FCM) là phiên bản mới của Google Cloud Messaging(GCM). Đây là một giải pháp nhắn tin đám mây đa nền tảng. Bạn có thể sử dụng Firebase Cloud Messaging cho bất kỳ loại thiết bị người dùng cuối nào bao gồm iOS, Android hoặc thậm chí Web mà không mất phí.

Firebase cho phép hai loại tin nhắn:

  • Notifications Messages được xử lý tự động bởi Firebase SDK. Tất cả những gì bạn cần làm là triển khai SDK Firebase và bắt đầu gửi tin nhắn từ Firebase Console
  • Dữ liệu tin nhắn được xử lý bởi client ứng dụng.

Bài viết này mình sẽ hướng dẫn làm theo cách 1, đây là phương án dễ làm nhất khi mà firebase đã làm gần như tất cả rồi.

#Push notification với Firebase cho ứng dụng Android

Những thứ bạn cần để bắt đầu gồm:

Bước 1 để push notification với firebase: Tạo ứng dụng trong Android Studio

Đầu tiên, bạn mở Android Studio và tạo một dự án mới.

Trong cửa sổ thiết lập dự án mới, bạn nhập chi tiết thông tin ứng dụng bao gồm: Tên ứng dụng, tên package, nơi lưu dự án… Còn lại để mặc định.

Trong trường hợp của mình, tên package là “com.example.pushnotification“. Nhưng bạn có thể tạo tên package cho riêng bạn.

Tạo ứng dụng demo với Android Studio

Sau khi Android Studio build ứng dụng thành công, hãy để đấy và chuyển sang bước tiếp theo, chúng ta sẽ sớm quay lại với Android Studio.

Bước 2: Thiết lập push notification với firebase

Có 3 bước để Thiết lập Firebase cho notification ứng dụng của bạn.

  • Đăng ký tài khoản Firebase.
  • Tạo project trong Firebase Console.
  • Đăng ký ứng dụng với Firebase.

#Đăng ký Firebase

Trước khi làm bất cứ điều gì, bạn cần phải có một tài khoản Firebase đã.
Nhấp vào đây đăng ký Firebase. Hãy đăng ký một tài khoản mới hoặc đăng nhập bằng tài khoản Google của bạn.

#Tạo Project

Sau khi đăng ký tài khoản thành công. Bây giờ bạn vào “Firebase console” và “Add Project”. Tạo tên project, chọn country/region.

Tạo project mới trên Firebase Console
Tạo project mới trên Firebase Console

#Đăng ký ứng dụng với Firebase

Sau khi ứng dụng của bạn được tạo xong trên firebase, bạn sẽ thấy một trang như bên dưới. Nhấn “Add Firebase to your Android App”

Đăng ký ứng dụng android với Firebase
Để ứng dụng Android có thể push notification, bạn cần đăng ký với Firebase

Nhập Tên package của bạn( Là tên package mà bạn đã tạo khi tạo ứng dụng trong Android Studio). Trong trường hợp của mình, đó là “com.example.pushnotification“.

Trường thứ ba dành cho certificate SHA-1, bạn có thể bỏ qua nó tại thời điểm này vì chúng ta sẽ không sử dụng tính năng Xác thực Firebase.

Nhấn  “Register App” để đăng ký ứng dụng của bạn với Firebase.

Đăng ký ứng dụng với Firebase

Nhấn “download  google-services.json” để tải xuống tệp JSON. Lưu tệp JSON trong thư mục ứng dụng của dự án Android Studio mà chúng ta đã tạo ở bên trên.

Tải file Json cấu hình về máy tính
Tải file JSON cấu hình và copy vào thư mục dự án Android

Sau khi copy tệp JSON vào thư mục ứng dụng của dự án, hãy nhấn “Continue” trên hộp thoại Bảng điều khiển Firebase.

Trong Android Studio, mở file build.gradle (Project level). Bạn sẽ tìm thấy nó trong thư mục dự án. Thêm dòng mã sau đây vào bên trong dependencies.

classpath 'com.google.gms:google-services:3.2.0'

Sau khi thêm ứng dụng của bạn sẽ như thế này

push-notification-su-dung-firebase-7

Tiếp tục mở build.gradle( App level) và thêm các dependencies.

compile 'com.google.firebase:firebase-core:11.8.0'
//Firebase Messaging library for Sending push Notifications
compile 'com.google.firebase:firebase-messaging:11.8.0'

Cuối cùng thêm vào cuối file build.gradle dòng sau:

apply plugin: 'com.google.gms.google-services'

Xong xuôi thì nhấn nút “Sync Now” để Android Studio tải các thư viện cần thiết.

push-notification-su-dung-firebase-8

Vậy là xong rồi đấy, giờ bạn thử build ứng dụng và cài apk vào điện thoại để test nhé.

#Gửi notification từ firebase console

Giờ các bạn quay trở lại Firebase Console, mở firebase project, rồi chọn “Cloud Message”.

Gửi notification từ Firebase Console

Giờ các bạn click vào “new notification” để tạo thông báo.

push-notification-su-dung-firebase-10

Trong đó:

  • Title sẽ là tên của app
  • Text là những gì bạn đặt trong Message text trong giao diện console.
  • Firebase sẽ sử dụng icon default với 1 background grey. Đây là 1 cách đơn giản nhất để bạn có thể gửi những thông báo đơn giản tới những người đang dùng app của bạn.

#Fix lỗi không nhận Notification
Ở đây có vấn đề lớn là nếu bạn gửi push notification trong khi app của bạn đang ở background thì nó sẽ không hiển thị. Chúng ta có thể fix vấn đề này bằng cách extend ** FirebaseMessagingService** để xử lý trường hợp đó.

public class NotificationService extends FirebaseMessagingService {
    @Override
    public void onMessageReceived(RemoteMessage remoteMessage) {
        super.onMessageReceived(remoteMessage);
        Notification notification = new NotificationCompat.Builder(this)
                .setContentTitle(remoteMessage.getNotification().getTitle())
                .setContentText(remoteMessage.getNotification().getBody())
                .setSmallIcon(R.mipmap.ic_launcher)
                .build();

        NotificationManagerCompat manager = NotificationManagerCompat.from(getApplicationContext());
        manager.notify(123, notification);
    }
}

Sau đó thêm Service này trong file AndroidManifest.xml

<service android:name=".NotificationService">
    <intent-filter>
        <action android:name="com.google.firebase.MESSAGING_EVENT" />
    </intent-filter>
</service>

Xong rồi đấy. Bạn có thể thử lại với ứng dụng của mình được rồi.

#Tạm kết

Như vậy, chúng ta đã tạo xong tính năng push notification với firebase cho ứng dụng Android.

Các bạn download mã nguồn dùng trong bài viết tại đây:

Mình hy vọng qua bài hôm nay sẽ giúp các bạn hiểu rõ về push notification với firebase. Đừng quên chia sẻ và đón đọc những bài viết tiếp theo của mình nhé.

Xem tiếp các bài trong Series
Phần trước: Xây dựng ứng dụng theo dõi khoảng cách xePhần kế tiếp: Xây dựng ứng dụng OCR sử dụng Machine Learning
Dịch vụ phát triển ứng dụng mobile giá rẻ - chất lượng
Bài trướcCallback hell là gì? 6 cách “trị” callback hell trong javascript
Bài tiếp theoTìm hiểu Higher-Order Functions và Lambda trong Kotlin
Tất cả lập trình viên đều là những nhà viết kịch và tất cả máy tính đều là những diễn viên tồi.

5
Bình luận. Cùng nhau thảo luận nhé!

avatar
  Theo dõi bình luận  
Mới nhất Cũ nhất Nhiều voted nhất
Thông báo
Truc
Guest
Truc

Dạ cho em hỏi là mình tạo Push Notification cho app thời tiết như nào vậy ạ, hay có tài liệu nào để tham khảo không ạ?

Sơn Dương
Admin

Mình nghĩ push notification cho app nào cũng giống nhau thôi mà bạn.

Good Friend
Guest
Good Friend

Chào bạn, cám ơn bạn vì bài viết. Mình đang gặp vấn đề khi chạy với con Huawei của mình, ở chế độ foreground, background thì mình nhận được, nhưng sau khi kill app thì mình không nhận được notification nữa. Bạn có gặp trường hợp này không và xử lý như thế nào, giúp mình với nhé. @Note: 1. Với con emulator thì mình luôn luôn nhận được, sau khi mình kill app thì vẫn thấy nút “Force stop” được enable. Sau khi chọn “Force stop” thì cũng không nhận được notification luôn. 2. Trên con Huawei của mình,… Đọc thêm »

Sơn Dương
Admin

Hi
1. Đúng là đã force stop thì ứng dụng bị kill hoàn toàn, bạn sẽ kg thể nhận được notification. App khác có lẽ cũng thế thôi.
2. Riêng trường hợp của Huawei thì có lẽ ROOM của họ đã được custom nên sẽ khác với bản gốc Android của Google.

Good Friend
Guest
Good Friend

Cám ơn bạn, bạn có cách nào xử lý trường hợp đối với các ROM như kiểu của Huawei không?