Mở đầu về Firebase Cloud Messaging
Bài đăng này đã không được cập nhật trong 3 năm
1 - Giới thiệu
Ngày nay các ứng dụng sử dụng nền tảng đám mây để gửi đi những thông báo, đồng bộ thời gian thực được sử dụng rất nhiều. Đã có nhiều nền tảng hỗ trợ thực hiện việc này và một trong số đó là Firebase Cloud Messaing.
Trong bài này tôi sẽ giới thiệu với các bạn một ví dụ đơn giản nhất để có thể nhận thông báo (notification) từ đám mây (cloud). Bài dướng dẫn sẽ có 5 bước sau:
- Bước 1: Tạo mới project
- Bước 2: Lấy file cầu hình Firebase
- Bước 3: Thêm dependencies
- Bước 4: Thêm các Services để nhận notification
- Bước 5: Thử gửi notification tới app từ Firebase Console
2 - Các bước thực hiện
- Bước 1: Tạo mới project
Ở bước này các bạn chỉ cần tạo mới một project. ví dụ trong hình mình đã tạo project có tên Android-FCM. Các bạn cần copy lại package name ở trong file AndroidManifest.xml để dùng cho bước 2.
- Bước 2: Lấy file cấu hình Firebase
Các bạn vào trang Firebase Console và chọn CREATE NEW PROJECT để tạo mới.
Một cửa sổ popup sẽ hiện lên yêu cầu bạn điền thông tin về tên của project và quốc gia. Sau đó bạn chọn CREATE PROJECT
Sau khi tạo project xong thì đến phần lựa chọn nền tảng, Firebase hỗ trợ cả nền Web lẫn mobile như Android và IOS. Tuy nhiên trong bài hướng dẫn này thì bạn hãy chọn Firebase cho ANDROID.
Cửa sổ popup hiện lên và yêu cầu bạn nhập tên package của project đã tạo ở bước 1. Bạn có thể xem Package name này ở trong file Manifest.xml của project. Sau khi đã điền xong Package name thì bạn nhấn chọn ADD APP.
Tiếp tục với cửa sổ popup lúc nãy, lúc này chúng ta sẽ được tự động tải về file google-services.json, và trên màn hình là hướng dẫn vị trí bạn cần lưu file này trong project. Bạn nhấn CONTINUE để tiếp tục.
Tại màn hình tiếp theo sẽ có hướng dẫn thêm về việc cấu hình project mà toi sẽ giới thiệu rõ hơn trong bước sau. Bạn chọn FINISH để kết thúc.
Tiếp theo bạn mở thư mục tải xuống, copy file google-services.json, đổi view của project từ Android sang Project và paster vào folder app.
- Bước 3: Thêm dependencies
TIếp theo bạn mở file project build.gradle và thêm vào như trong hình
classpath 'com.google.gms:google-services:3.0.0'
Tiếp nữa bạn mở file app build.gradle vvaf thêm các dòng sau như hình
compile 'com.google.firebase:firebase-core:9.6.1'
compile 'com.google.firebase:firebase-messaging:9.6.1'
}
apply plugin: 'com.google.gms.google-services'
Sau khi thêm đầy đủ các dependencies bạn nhấn sync now để build lại project.
- Bước 4: Thêm các Services để nhận notification
Các bạn lần lượt tạo 2 class sau
MyFirebaseInstanceIDService.java
package com.example.quanda.android_fcm;
import android.util.Log;
import com.google.firebase.iid.FirebaseInstanceId;
import com.google.firebase.iid.FirebaseInstanceIdService;
public class MyFirebaseInstanceIDService extends FirebaseInstanceIdService {
private static final String TAG = "InstanceIDService";
@Override
public void onTokenRefresh() {
String refreshToken = FirebaseInstanceId.getInstance().getToken();
Log.d(TAG, "Refresh token: " + refreshToken);
}
}
MyFirebaseMessagingService.java
package com.example.quanda.android_fcm;
import android.app.NotificationManager;
import android.app.PendingIntent;
import android.content.Context;
import android.content.Intent;
import android.media.RingtoneManager;
import android.net.Uri;
import android.support.v4.app.NotificationCompat;
import android.util.Log;
import com.google.firebase.messaging.FirebaseMessagingService;
import com.google.firebase.messaging.RemoteMessage;
public class MyFirebaseMessagingService extends FirebaseMessagingService {
private static final String TAG = "MessagingService";
@Override
public void onMessageReceived(RemoteMessage remoteMessage) {
//It is optional
Log.e(TAG, "From: " + remoteMessage.getFrom());
Log.e(TAG, "Notification Message Body: " + remoteMessage.getNotification().getBody());
//Calling method to generate notification
sendNotification(remoteMessage.getNotification().getTitle(),
remoteMessage.getNotification().getBody());
}
//This method is only generating push notification
private void sendNotification(String title, String messageBody) {
Intent intent = new Intent(this, MainActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
PendingIntent pendingIntent = PendingIntent.getActivity(this, 0, intent,
PendingIntent.FLAG_ONE_SHOT);
Uri defaultSoundUri = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION);
NotificationCompat.Builder notificationBuilder = new NotificationCompat.Builder(this)
.setSmallIcon(android.R.mipmap.sym_def_app_icon)
.setContentTitle(title)
.setContentText(messageBody)
.setAutoCancel(true)
.setSound(defaultSoundUri)
.setContentIntent(pendingIntent);
NotificationManager notificationManager =
(NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
notificationManager.notify(0, notificationBuilder.build());
}
}
Trong file Manifest.xml các bạn thêm quyền
<uses-permission android:name="android.permission.INTERNET" />
và khai báo 2 services trong thẻ application
<application>
....
<service android:name=".MyFirebaseMessagingService">
<intent-filter>
<action android:name="com.google.firebase.MESSAGING_EVENT" />
</intent-filter>
</service>
<service android:name=".MyFirebaseInstanceIDService">
<intent-filter>
<action android:name="com.google.firebase.INSTANCE_ID_EVENT" />
</intent-filter>
</service>
</application>
Bây giờ bạn có thể chạy app trên device thật hoặc emulator (Lưu ý thiết bị cần có google play services).
Sau khi chạy bạn sẽ thấy TOKEN ở LOGCAT của Android Studio, hãy copy lại.
- Bước 5: Thử gửi notification tới app từ Firebase Console
Bạn truy cập vào o Firebase Console và mở project tương ứng
Từ thanh menu trái bạn chọn notification. Tiếp đó bạn chọn NEW MESSAGE
Bạn điền nội dung tin nhắn và chọn single device, paste device token đã lấy được ở bước trên vào ô token. Sau đó bạn nhấn SEND MESSAGE và xem kết quả notification ở thiết bị.
Notification nhận được.
3 - Kết luận
Như vậy tôi đã giới thiệu một cách sơ bộ về sử dụng Firebse Cloud Message để tạo notification cho một thiếu bị Android. Firebase còn rất nhiều công dụng khác mà tôi sẽ hướng dẫn cho các bạn trong các bài tiếp theo.
All rights reserved