1. Giới thiệu
So với API cũ của FCM, API HTTP phiên bản 1 của FCM cung cấp mô hình uỷ quyền an toàn hơn bằng cách sử dụng mã truy cập ngắn hạn. Các bước tạo mã truy cập cho API FCM phiên bản 1 khác biệt đáng kể so với các bước dành cho API cũ.
Lớp học lập trình này hướng dẫn bạn quy trình thiết lập phía máy khách và phía máy chủ để cho phép gửi thông báo đẩy đến ứng dụng Android bằng API HTTP v1 của FCM. Hướng dẫn này làm nổi bật bước quan trọng trong quá trình tạo thông tin xác thực cho API v1.
Bạn có thể xem thêm thông tin tại:
Điều kiện tiên quyết
- Hiểu biết cơ bản về cách phát triển bằng Java và Android
Kiến thức bạn sẽ học được
- Các bước chi tiết để thiết lập phía máy khách và phía máy chủ để cho phép gửi thông báo đẩy đến ứng dụng Android bằng API FCM HTTP v1
- Tạo thông tin xác thực cho API HTTP phiên bản 1 bằng tài khoản dịch vụ
- Gửi thông báo kiểm thử thông qua API HTTP v1
Bạn cần có
Phiên bản ổn định mới nhất của Android Studio
Một trong các thiết bị sau:
- Một thiết bị Android thực kết nối với máy tính của bạn
- Trình mô phỏng Android (xem phần Chạy ứng dụng trên Trình mô phỏng Android)
Môi trường phát triển Java hoặc trình soạn thảo mã mà bạn chọn
2. Thiết lập dự án Firebase và ứng dụng Android
Khi kết thúc lớp học lập trình này, bạn sẽ có thể gửi tin nhắn đến ứng dụng bằng Giải pháp gửi thông báo qua đám mây của Firebase. Trước khi làm việc đó, bạn cần tạo một dự án Firebase. Lớp học lập trình này cũng cung cấp một ứng dụng Android chứa mã mẫu để tích hợp với FCM.
Thiết lập dự án Firebase
- Làm theo "Bước 1: Tạo dự án Firebase" để tạo dự án Firebase của riêng bạn cho lớp học lập trình này.
Thiết lập ứng dụng Android
Ứng dụng Android mẫu được cung cấp trong lớp học lập trình này đã được tích hợp với FCM. Sau khi bắt đầu, tài khoản này sẽ đăng ký với máy chủ FCM và đăng ký theo dõi một chủ đề. Trong các bước sau của lớp học lập trình này, bạn sẽ gửi thông báo chủ đề đến chủ đề và ứng dụng của bạn sẽ nhận được thông báo đó.
- Tải mẫu bắt đầu nhanh cho Android của Firebase xuống.
- Nhập dự án trong https://github.com/firebase/quickstart-android/tree/master/messaging vào Android Studio.
- Đăng ký ứng dụng trong Bảng điều khiển của Firebase. Tên ứng dụng là
com.google.firebase.quickstart.fcm
. Đăng ký ứng dụng này trong dự án Firebase của bạn bằng cách làm theo các bước trong "Bước 2: Đăng ký ứng dụng của bạn với Firebase" . - Thực hiện theo phần 1 của "Bước 3: Thêm tệp cấu hình Firebase" để tải
google-services.json
xuống rồi thêm vào dự án của bạn. Tạo bản dựng và chạy dự án.
3. Thiết lập máy chủ ứng dụng
Hiện ứng dụng của bạn đã được thiết lập, bạn cần tải mã mẫu phía máy chủ xuống để gửi thông báo đến ứng dụng bằng API FCM v1. Mã này tải thông tin đăng nhập API (như mô tả trong phần tiếp theo) để tạo mã truy cập. Sau đó, ứng dụng này gửi tin nhắn đến ứng dụng của bạn bằng tính năng nhắn tin theo chủ đề FCM.
- Nhập mã máy chủ khởi đầu bằng cách tải dự án GitHub xuống. Tính năng "nhắn tin" dự án là một dự án Java dựa trên Gradle có phần phụ thuộc vào SDK firebase-admin, cung cấp chức năng để gửi thông báo.
Bạn có thể xem thêm chi tiết về cách máy chủ ứng dụng hoạt động với FCM trong tài liệu Môi trường máy chủ của bạn và FCM.
4. Nhận thông tin đăng nhập v1
FCM HTTP phiên bản 1 API sử dụng mã truy cập ngắn hạn theo mô hình bảo mật OAuth2. So với khoá API tĩnh dùng trong API FCM cũ, mã truy cập ngắn hạn ít có nguy cơ rò rỉ thông tin đăng nhập. Phần này trình bày chi tiết các bước tạo thông tin xác thực để tạo mã truy cập dùng khi gọi API.
- Thiết lập tài khoản dịch vụ Firebase để cho phép SDK quản trị của Firebase uỷ quyền các lệnh gọi đến API FCM. Mở phần Cài đặt dự án trong bảng điều khiển của Firebase và chọn thẻ Tài khoản dịch vụ. Nhấp vào Tạo khoá riêng tư mới để tải đoạn cấu hình xuống.
- Trong dự án GitHub đã tải xuống, hãy đổi tên tệp đã tải xuống thành
service-account.json
rồi sao chép tệp đó vào đường dẫnmessaging/
của dự án. - Phương thức
getAccessToken()
(hiển thị bên dưới) trong lớpMessaging.java
sẽ tạo mã thông báo OAuth2 có hiệu lực trong 1 giờ.
private static String getAccessToken() throws IOException { GoogleCredentials googleCredentials = GoogleCredentials.fromStream(new FileInputStream("service-account.json")).createScoped(Arrays.asList(SCOPES)); googleCredentials.refresh(); return googleCredentials.getAccessToken().getTokenValue(); }
- Thay đổi phương thức main (chính) để thêm dòng sau:
public static void main(String[] args) throws IOException { System.out.println(getAccessToken()); ... }
- Chuyển đến thư mục nhắn tin/ dự án trong cửa sổ dòng lệnh rồi nhập:
./gradlew run -Pmessage=common-message
để in mã thông báo OAuth2.
Bạn có thể xem thêm thông tin trong bài viết Cho phép gửi yêu cầu.
5. Gửi tin nhắn bằng API REST
Bây giờ, bạn đã sẵn sàng gửi thư thông qua API HTTP v1. Hãy làm theo các bước sau:
- Cách thêm mã truy cập vào tiêu đề của yêu cầu HTTP:
- Thêm mã thông báo dưới dạng giá trị trong tiêu đề Uỷ quyền ở định dạng
Authorization: Bearer <access_token>
- Gửi một yêu cầu HTTP đến API FCM v1 bằng curl:
curl -s -X POST -H "Content-Type: application/json" -H "Authorization: Bearer $OAuth2_token" -H "X-GFE-SSL: yes" -d "{\"message\": {\"topic\": \"$topic_name\", \"notification\": {\"title\": \"breaking news\", \"body\": \"This is breaking news\"}}}" https://fcm.googleapis.com/v1/projects/[PROJECT_NAME]/messages:send
Bạn có thể tìm thấy $topic_name
ở trên trong mã ứng dụng Android được đề cập trong dự án Firebase và quá trình thiết lập ứng dụng Android. Theo mặc định, giá trị này là "weather"
.
- Sau khi thư được gửi thành công, bạn sẽ thấy cửa sổ thông báo bật lên trên màn hình, tương tự như hình ảnh dưới đây:
6. Kết luận
Xin chúc mừng! Bạn đã hoàn tất thành công lớp học lập trình để:
- Thiết lập dự án Firebase
- Tích hợp Firebase với ứng dụng Android
- Tạo thông tin đăng nhập cho API HTTP v1 của FCM
- Gửi tin nhắn đến ứng dụng của bạn thông qua FCM HTTP v1 API
Để khám phá các tính năng nâng cao mà FCM cung cấp, hãy tham khảo các tài liệu tham khảo sau đây: