12/08/2018, 14:48

Push notification trong Android với Firebase

Tại Google I/O 2016, Google đã thông báo những sự cải tiến lớn trong những sản phẩm tuyệt vời của họ. Firebase một nền tảng điện toán đám mây với nhiều tính năng tuyệt vời cho những nhà phát triển ứng dụng mobile. Một trong số những tính năng tuyệt vời của Firebase là Firebase Cloud ...

Tại Google I/O 2016, Google đã thông báo những sự cải tiến lớn trong những sản phẩm tuyệt vời của họ. Firebase một nền tảng điện toán đám mây với nhiều tính năng tuyệt vời cho những nhà phát triển ứng dụng mobile. Một trong số những tính năng tuyệt vời của Firebase là Firebase Cloud Messaging(FCM), một giải pháp gửi tin nhắn đa nền tảng cho phép người dùng gửi đi những thông điêp hữu ích tới người dùng app của họ và nó hoàn tòan miễn phí. Nói đến đây, hẳn nhiều bạn cũng nghĩ tới một sản phẩm với những tính năng tương tự nhự vậy cuả google đó là Google Cloud Messaging. Trong bài viết này tôi sẽ giới thiệu với các bạn về làm thế nào để gửi push notification tới thiết bị android thông qua Firebase dựa trên phiên bản mới nhất được release . Trong tutorial này tôi sẽ giới thiệu làm thế nào để gửi và nhận push notification thông qua FCM. Trước khi bắt đầu các bạn cần :

  • phiên bản mới nhất của Android Studio
  • Một tài khoản của Firebase

Tạo Project

Tạo một project tới Firebase console. Bạn cần điền tên và country Sau đó chọn Add Firebase to your Android app Bạn điền packagename cho app của bạn. Ở đây tôi chỉ điền package name và bỏ qua SHA1 bởi vì tôi không sử dụng firebase cho chức năng xác thực trong app của tôi. Click vào button ADD APP để download file google-services.json . Đây là file quan trọng bạn sẽ cần đặt nó vào trong app.

Câu hình Project

Ở trên chúng ta đã tạo một project, tiếp theo chúng ta sẽ cần cấu hình nó trong project android của chúng ta. Copy file google-services.json tới folder app trong project android Đặt file google-services.json vào trong folder app của project android.Google services plugin cho Gradle sẽ load file này. Cấu hình file gradle Mở Android Studio và thay đổi file build.gradle để sử dụng Google services plugin.

update file build.gradle level project

buildscript {
  dependencies {
    classpath 'com.google.gms:google-services:3.0.0' // Add this line
  }
}

update file build.gradle level app

Thêm dòng này xuống cuối cùng của file build.gradle apply plugin: 'com.google.gms.google-services'

Add các firebase dependencies

dependencies {
compile 'com.google.firebase:firebase-core:10.0.1'                  // this line must be included to integrate with Firebase
 compile 'com.google.firebase:firebase-messaging:10.0.1'    // this line must be included to use FCM
 }

Console Notifications

Cách đơn giản nhất để gửi và nhận notification với firebase là công cụ đã xây dựng sẵn console Notifications. Một notification đơn giản sẽ được hiển thị với những thông tin sau:

  • 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. Ở đây có vấn đề lớn là nếu bạn gửi push notification trong khi app của bạn đang ở foreground 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 đó.

Xử lý Notifications in Foreground

Khi App đang đóng, Notification của bạn sẽ được xử lý bới Google Service . Google service sẽ hiển thị notification cho bạn bao gồm action click mặc định (mở app ) và icon notification Khi app trong Foreground message được nhận về và được xử lý bởi app và nếu không có logic xử lý nó, thì sẽ không có gì xảy ra. để xử lý vấn đề này chúng ta cần FirebaseMessagingService của riêng trong app . Chúng ta tạo một class extend từ class FirebaseMessagingService và thực hiện method **onMessageReceived **. Sau đó nhận được object Notification từ remoteMessage và tạo một notification của riêng app.

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 đó add Service này trong file AndroidManifest.xml

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

Để hiểu rõ hơn, bạn có thể tham khảo link bên dưới https://firebase.google.com/docs/cloud-messaging/android/client Bây giờ bạn chạy app bạn sẽ hiển thị notification trong khi app của bạn vẫn trong foreground

0