Chào các bạn! Ở các bài học trước, chúng ta đã cùng nhau tìm hiểu về FIREBASE & THÀNH PHẦN CLOUD MESSAGING của nó nói riêng, cũng như bước đầu setup một project trên Google Firebase để làm việc với một project mới toanh: Tạo ứng dụng nhận tin nhắn push từ Firebase.
Ở bài này chúng ta sẽ vào phần 2 của bài học trước, lần này chúng ta sẽ code logic chính của ứng dụng, và chạy thử.
Nội dung
Để đọc hiểu bài này tốt nhất các bạn nên có kiến thức cơ bản về các phần:
Trong bài học này, chúng ta sẽ cùng tìm hiểu các vấn đề:
Khởi tạo các hàm cần thiết
Instance ID
MessagingService
NotificationUtils
MainActivity
Khởi tạo các hàm cần thiết
Để làm việc với Firebase và Google Cloud Messaging hiệu quả, chúng ta cần bố trí các class, các package hợp lý trong project bởi một tin nhắn push từ server sẽ cần khá nhiều thành phần liên quan như Notification, Service, Broadcast Receiver,...
Với những lý do như trên, để có thể mở rộng thêm tính năng về lâu dài, chúng ta sẽ tổ chức các hàm chức năng vào các class chuyên biệt. Đây cũng là cách phân bố chức năng hợp lý mà bạn cũng nên áp dụng cho các project sau này.
Các hàm chức năng đưa vào một class riêng có tên NotificationUtils.
Lớp chức năng FirebaseMessage đặt riêng. Lớp này là một Service, có chức năng lắng nghe các thông báo được gửi đến thiết bị Android.
Lớp chức năng FirebaseInstanceID đặt riêng. Lớp này cũng là một Service, có chức năng lắng nghe thay đổi và xử lý thay đổi liên quan đến ID Firebase đi kèm với thiết bị.
Chỉ cần một Activity duy nhất là MainActivity để demo. Sau đó Sử dụng các chức năng đã tạo vào đây.
Lưu ý: Để sử dụng được Firebase / GCM, điện thoại của bạn phải hỗ trợ Google Play Services (tức là có App Store, hoặc Google Chrome, hoặc một app nào đó của Google). Điều này áp dụng cho cả Emulator, nên khi tạo Emulator bạn cũng cần chú ý.
Để biết được máy của bạn có Google Services hay không thì chỉ cần xem nó có sẵn một app của Google nào đó đã được cài chưa là biết, ví dụ: Google Plus / Map / Google Play.
Ở trên chúng ta có các class:
HowkFirebaseInstanceIDService: Chứa hàm onTokenRefresh, thực hiện lưu lại thay đổi khi GCM token mới được tạo ra cho thiết bị. Mỗi lần như vậy thì sẽ lưu token vào một vùng nhớ tĩnh trong máy mà chúng ta đã được tìm hiểu ở bài trước là SharedPreferences.
HowkFirebaseMessagingService: Class này sẽ nhận tin nhắn từ GCM / FCM rồi chuyển vào hàm onMessageReceived. Tại đây chúng ta sẽ mổ xẻ tin nhắn.
NotificationUtils: Chứa các hàm xử lý tin nhắn chính. Ví dụ: Nhận được tin nhắn thì tạo ra Notification đẩy xuống thông báo trên điện thoại,…
Instance ID
Như đã đề cập ở trên, class này chứa hàm onTokenRefresh, thực hiện lưu lại thay đổi khi GCM token mới được tạo ra cho thiết bị.
package com.howkteam.pushexample.service;
import android.content.Intent;
import android.content.SharedPreferences;
import android.support.v4.content.LocalBroadcastManager;
import android.util.Log;
import com.google.firebase.iid.FirebaseInstanceId;
import com.google.firebase.iid.FirebaseInstanceIdService;
import com.howkteam.pushexample.util.Config;
publicclassHowkFirebaseInstanceIDServiceextendsFirebaseInstanceIdService {privatestaticfinal String TAG = HowkFirebaseInstanceIDService.class.getSimpleName();
@OverridepublicvoidonTokenRefresh() {
super.onTokenRefresh();
Log.e("RR", "Regresh");
String refreshedToken = FirebaseInstanceId.getInstance().getToken();
// Lưu token vào SharedPreferences để sử dụng về sau.
storeRegIdInPref(refreshedToken);
Log.e(TAG, refreshedToken);
// Gửi token lên server.
sendRegistrationToServer(refreshedToken);
Intent registrationComplete = new Intent(Config.REGISTRATION_COMPLETE);
registrationComplete.putExtra("token", refreshedToken);
LocalBroadcastManager.getInstance(this).sendBroadcast(registrationComplete);
}
privatevoidsendRegistrationToServer(final String token) {
// Hàm gửi token lên server, cần xử lý bằng AsyncTask hoặc thread riêng.
Log.e(TAG, "sendRegistrationToServer: " + token);
}
privatevoidstoreRegIdInPref(String token) {
SharedPreferences pref = getApplicationContext().getSharedPreferences(Config.SHARED_PREF, 0);
SharedPreferences.Editor editor = pref.edit();
editor.putString("regId", token);
editor.apply();
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
Xin lưu lý là hàm sendRegistrationToServerở trên chỉ là hàm nháp, các bạn có thể mở rộng tính năng của app ra sau này với server phía back-end, còn hiện tại thì như thế này là đủ.
MessagingService
Class này sẽ nhận tin nhắn từ GCM / FCM rồi chuyển vào hàm onMessageReceived. Tại đây chúng ta sẽ mổ xẻ tin nhắn.
Qua bài này chúng ta đã nắm được cách tích hợp GCM / FCM cơ bản vào ứng dụng Android. Cũng như cách test push notification.
Cảm ơn các bạn đã theo dõi bài viết. Hãy để lại bình luận hoặc góp ý của mình để phát triển bài viết tốt hơn. Đừng quên “Luyện tập – Thử thách – Không ngại khó”.
Tải xuống
Tài liệu
Nhằm phục vụ mục đích học tập Offline của cộng đồng, Kteam hỗ trợ tính năng lưu trữ nội dung bài học Google Cloud Messaging và Push Notification trong Android - Phần 2 dưới dạng file PDF trong link bên dưới.
Ngoài ra, bạn cũng có thể tìm thấy các tài liệu được đóng góp từ cộng đồng ở mục TÀI LIỆU trên thư viện Howkteam.com
Đừng quên like và share để ủng hộ Kteam và tác giả nhé!
Thảo luận
Nếu bạn có bất kỳ khó khăn hay thắc mắc gì về khóa học, đừng ngần ngại đặt câu hỏi trong phần bên dưới hoặc trong mục HỎI & ĐÁP trên thư viện Howkteam.com để nhận được sự hỗ trợ từ cộng đồng.
File Config kia tự tạo hay gì thế Ad ơi, cho mình xin mã nguồn nội dung 2 file java đó với
ádasd