Để bắt đầu với FCM, hãy xây dựng trường hợp sử dụng đơn giản nhất: gửi tin nhắn thông báo thử nghiệm từ trình tổng hợp Thông báo đến thiết bị phát triển khi ứng dụng ở chế độ nền trên thiết bị. Trang này liệt kê tất cả các bước để đạt được điều này, từ thiết lập đến xác minh — trang này có thể bao gồm các bước bạn đã hoàn thành nếu bạn đã thiết lập ứng dụng khách Android cho FCM.
Thiết lập SDK
Phần này bao gồm các tác vụ bạn có thể đã hoàn thành nếu bạn đã bật các tính năng khác của Firebase cho ứng dụng của mình.
Trước khi bắt đầu
Cài đặt hoặc cập nhật Android Studio lên phiên bản mới nhất.
Đảm bảo rằng dự án của bạn đáp ứng các yêu cầu sau:
- Nhắm mục tiêu API cấp 19 (KitKat) trở lên
- Sử dụng Android 4.4 trở lên
- Sử dụng Jetpack (AndroidX) , bao gồm việc đáp ứng các yêu cầu phiên bản sau:
-
com.android.tools.build:gradle
v3.2.1 trở lên -
compileSdkVersion
28 trở lên
-
Thiết lập thiết bị thực hoặc sử dụng trình mô phỏng để chạy ứng dụng của bạn.
Lưu ý rằng SDK Firebase phụ thuộc vào các dịch vụ của Google Play yêu cầu thiết bị hoặc trình giả lập phải cài đặt các dịch vụ của Google Play.Đăng nhập vào Firebase bằng tài khoản Google của bạn.
Nếu chưa có dự án Android và chỉ muốn dùng thử sản phẩm Firebase, bạn có thể tải xuống một trong các mẫu bắt đầu nhanh của chúng tôi .
Tạo dự án Firebase
Trước khi có thể thêm Firebase vào ứng dụng Android của mình, bạn cần tạo dự án Firebase để kết nối với ứng dụng Android của mình. Truy cập Tìm hiểu các dự án Firebase để tìm hiểu thêm về các dự án Firebase.
Đăng ký ứng dụng của bạn với Firebase
Để sử dụng Firebase trong ứng dụng Android, bạn cần đăng ký ứng dụng với dự án Firebase. Đăng ký ứng dụng của bạn thường được gọi là "thêm" ứng dụng vào dự án của bạn.
Chuyển đến bảng điều khiển Firebase .
Ở giữa trang tổng quan về dự án, nhấp vào biểu tượng Android (
) hoặc Thêm ứng dụng để khởi chạy quy trình thiết lập.Nhập tên gói ứng dụng của bạn vào trường tên gói Android .
Tên gói nhận dạng duy nhất ứng dụng của bạn trên thiết bị và trong Cửa hàng Google Play.
Tên gói thường được gọi là ID ứng dụng .
Tìm tên gói ứng dụng của bạn trong tệp Gradle mô-đun (cấp ứng dụng), thường là
app/build.gradle
(tên gói ví dụ:com.yourcompany.yourproject
).Xin lưu ý rằng giá trị tên gói phân biệt chữ hoa chữ thường và không thể thay đổi giá trị này đối với ứng dụng Firebase Android này sau khi đã đăng ký với dự án Firebase của bạn.
(Tùy chọn) Nhập thông tin ứng dụng khác: Biệt hiệu ứng dụng và Chứng chỉ ký gỡ lỗi SHA-1 .
Biệt hiệu của ứng dụng : Mã định danh nội bộ, tiện lợi chỉ hiển thị với bạn trong bảng điều khiển Firebase
Chứng chỉ ký gỡ lỗi SHA-1 : Hàm băm SHA-1 được yêu cầu bởi Xác thực Firebase (khi sử dụng Đăng nhập bằng Google hoặc đăng nhập bằng số điện thoại ) và Liên kết động Firebase .
Nhấp vào Đăng ký ứng dụng .
Thêm tệp cấu hình Firebase
Tải xuống rồi thêm tệp cấu hình Firebase Android (
) vào ứng dụng của bạn:google-services.json Nhấp vào Tải xuống google-services.json để lấy tệp cấu hình Firebase Android của bạn.
Di chuyển tệp cấu hình của bạn vào thư mục gốc mô-đun (cấp ứng dụng) của ứng dụng của bạn.
Tệp cấu hình Firebase chứa các mã định danh duy nhất nhưng không bí mật cho dự án của bạn. Để tìm hiểu thêm về tệp cấu hình này, hãy truy cập Tìm hiểu các dự án Firebase .
Bạn có thể tải xuống lại tệp cấu hình Firebase của mình bất kỳ lúc nào.
Đảm bảo tên tệp cấu hình không được thêm các ký tự bổ sung, như
(2)
.
Để làm cho các giá trị trong tệp cấu hình
của bạn có thể truy cập được vào SDK Firebase, bạn cần có plugin Gradle dịch vụ của Google (google-services.json google-services
).Trong tệp Gradle cấp gốc (cấp dự án) (
<project>/build.gradle
), hãy thêm plugin dịch vụ của Google dưới dạng phụ thuộc bản dựng:buildscript { repositories { // Make sure that you have the following two repositories google() // Google's Maven repository mavenCentral() // Maven Central repository } dependencies { ... // Add the dependency for the Google services Gradle plugin classpath 'com.google.gms:google-services:4.3.15' } } allprojects { ... repositories { // Make sure that you have the following two repositories google() // Google's Maven repository mavenCentral() // Maven Central repository } }
Trong tệp Gradle mô -đun (cấp ứng dụng) của bạn (thường là
<project>/<app-module>/build.gradle
), hãy thêm plugin dịch vụ của Google:plugins { id 'com.android.application' // Add the Google services Gradle plugin id 'com.google.gms.google-services' ... }
Thêm SDK Firebase vào ứng dụng của bạn
Trong tệp Gradle mô-đun (cấp ứng dụng) của bạn (thường là
<project>/<app-module>/build.gradle
), hãy thêm phần phụ thuộc cho thư viện Android Nhắn tin qua đám mây Firebase. Chúng tôi khuyên bạn nên sử dụng Firebase Android BoM để kiểm soát việc lập phiên bản thư viện.Để có trải nghiệm tối ưu với Nhắn tin qua đám mây của Firebase, chúng tôi khuyên bạn nên bật Google Analytics trong dự án Firebase của mình và thêm SDK Firebase dành cho Google Analytics vào ứng dụng của bạn.
Java
dependencies { // Import the BoM for the Firebase platform implementation platform('com.google.firebase:firebase-bom:32.1.0') // Add the dependencies for the Firebase Cloud Messaging and Analytics libraries // When using the BoM, you don't specify versions in Firebase library dependencies implementation 'com.google.firebase:firebase-messaging' implementation 'com.google.firebase:firebase-analytics' }
Bằng cách sử dụng Firebase Android BoM , ứng dụng của bạn sẽ luôn sử dụng các phiên bản tương thích của thư viện Android Firebase.
(Thay thế) Thêm phụ thuộc thư viện Firebase mà không cần sử dụng BoM
Nếu chọn không sử dụng Firebase BoM, bạn phải chỉ định từng phiên bản thư viện Firebase trong dòng phụ thuộc của nó.
Lưu ý rằng nếu bạn sử dụng nhiều thư viện Firebase trong ứng dụng của mình, chúng tôi thực sự khuyên bạn nên sử dụng BoM để quản lý các phiên bản thư viện, điều này đảm bảo rằng tất cả các phiên bản đều tương thích.
dependencies { // Add the dependencies for the Firebase Cloud Messaging and Analytics libraries // When NOT using the BoM, you must specify versions in Firebase library dependencies implementation 'com.google.firebase:firebase-messaging:23.1.2' implementation 'com.google.firebase:firebase-analytics:21.3.0' }
Kotlin+KTX
dependencies { // Import the BoM for the Firebase platform implementation platform('com.google.firebase:firebase-bom:32.1.0') // Add the dependencies for the Firebase Cloud Messaging and Analytics libraries // When using the BoM, you don't specify versions in Firebase library dependencies implementation 'com.google.firebase:firebase-messaging-ktx' implementation 'com.google.firebase:firebase-analytics-ktx' }
Bằng cách sử dụng Firebase Android BoM , ứng dụng của bạn sẽ luôn sử dụng các phiên bản tương thích của thư viện Android Firebase.
(Thay thế) Thêm phụ thuộc thư viện Firebase mà không cần sử dụng BoM
Nếu chọn không sử dụng Firebase BoM, bạn phải chỉ định từng phiên bản thư viện Firebase trong dòng phụ thuộc của nó.
Lưu ý rằng nếu bạn sử dụng nhiều thư viện Firebase trong ứng dụng của mình, chúng tôi thực sự khuyên bạn nên sử dụng BoM để quản lý các phiên bản thư viện, điều này đảm bảo rằng tất cả các phiên bản đều tương thích.
dependencies { // Add the dependencies for the Firebase Cloud Messaging and Analytics libraries // When NOT using the BoM, you must specify versions in Firebase library dependencies implementation 'com.google.firebase:firebase-messaging-ktx:23.1.2' implementation 'com.google.firebase:firebase-analytics-ktx:21.3.0' }
Đồng bộ hóa dự án Android của bạn với các tệp Gradle.
Các bản dựng Gradle sử dụng plugin Android Gradle (AGP) v4.2 trở về trước cần bật hỗ trợ Java 8. Mặt khác, các dự án Android này gặp lỗi xây dựng khi thêm SDK Firebase.
Để khắc phục lỗi xây dựng này, bạn có thể thực hiện theo một trong hai tùy chọn:
- Thêm
compileOptions
được liệt kê từ thông báo lỗi vào tệpbuild.gradle
cấp ứng dụng của bạn. - Tăng
minSdkVersion
cho dự án Android của bạn lên 26 trở lên.
Tìm hiểu thêm về lỗi xây dựng này trong Câu hỏi thường gặp này .
- Thêm
Truy cập mã thông báo đăng ký
Để gửi tin nhắn đến một thiết bị cụ thể, bạn cần biết mã thông báo đăng ký của thiết bị đó. Vì bạn sẽ cần nhập mã thông báo vào một trường trong bảng điều khiển Thông báo để hoàn thành hướng dẫn này, hãy đảm bảo sao chép hoặc lưu trữ mã thông báo một cách an toàn sau khi bạn truy xuất.
Khi ứng dụng của bạn khởi động lần đầu, FCM SDK tạo mã thông báo đăng ký cho phiên bản ứng dụng khách. Nếu bạn muốn nhắm mục tiêu các thiết bị đơn lẻ hoặc tạo các nhóm thiết bị, bạn sẽ cần truy cập mã thông báo này bằng cách mở rộng FirebaseMessagingService
và ghi đè onNewToken
.
Phần này mô tả cách truy xuất mã thông báo và cách theo dõi các thay đổi đối với mã thông báo. Vì mã thông báo có thể được luân chuyển sau lần khởi động đầu tiên, bạn nên truy xuất mã thông báo đăng ký được cập nhật mới nhất.
Mã thông báo đăng ký có thể thay đổi khi:
- Ứng dụng được khôi phục trên một thiết bị mới
- Người dùng gỡ cài đặt/cài đặt lại ứng dụng
- Người dùng xóa dữ liệu ứng dụng.
Truy xuất mã thông báo đăng ký hiện tại
Khi bạn cần truy xuất mã thông báo hiện tại, hãy gọi FirebaseMessaging.getInstance().getToken()
:
Kotlin+KTX
FirebaseMessaging.getInstance().token.addOnCompleteListener(OnCompleteListener { task -> if (!task.isSuccessful) { Log.w(TAG, "Fetching FCM registration token failed", task.exception) return@OnCompleteListener } // Get new FCM registration token val token = task.result // Log and toast val msg = getString(R.string.msg_token_fmt, token) Log.d(TAG, msg) Toast.makeText(baseContext, msg, Toast.LENGTH_SHORT).show() })
Java
FirebaseMessaging.getInstance().getToken() .addOnCompleteListener(new OnCompleteListener<String>() { @Override public void onComplete(@NonNull Task<String> task) { if (!task.isSuccessful()) { Log.w(TAG, "Fetching FCM registration token failed", task.getException()); return; } // Get new FCM registration token String token = task.getResult(); // Log and toast String msg = getString(R.string.msg_token_fmt, token); Log.d(TAG, msg); Toast.makeText(MainActivity.this, msg, Toast.LENGTH_SHORT).show(); } });
Giám sát việc tạo mã thông báo
Cuộc gọi lại onNewToken
kích hoạt bất cứ khi nào mã thông báo mới được tạo.
Kotlin+KTX
/** * Called if the FCM registration token is updated. This may occur if the security of * the previous token had been compromised. Note that this is called when the * FCM registration token is initially generated so this is where you would retrieve the token. */ override fun onNewToken(token: String) { Log.d(TAG, "Refreshed token: $token") // If you want to send messages to this application instance or // manage this apps subscriptions on the server side, send the // FCM registration token to your app server. sendRegistrationToServer(token) }
Java
/** * There are two scenarios when onNewToken is called: * 1) When a new token is generated on initial app startup * 2) Whenever an existing token is changed * Under #2, there are three scenarios when the existing token is changed: * A) App is restored to a new device * B) User uninstalls/reinstalls the app * C) User clears app data */ @Override public void onNewToken(@NonNull String token) { Log.d(TAG, "Refreshed token: " + token); // If you want to send messages to this application instance or // manage this apps subscriptions on the server side, send the // FCM registration token to your app server. sendRegistrationToServer(token); }
Sau khi nhận được mã thông báo, bạn có thể gửi mã thông báo đó tới máy chủ ứng dụng của mình và lưu trữ mã thông báo đó bằng phương pháp ưa thích của bạn.
Gửi tin nhắn thông báo kiểm tra
Cài đặt và chạy ứng dụng trên thiết bị đích. Trên các thiết bị của Apple, bạn cần chấp nhận yêu cầu cấp quyền nhận thông báo từ xa.
Đảm bảo ứng dụng ở chế độ nền trên thiết bị.
Trong bảng điều khiển Firebase, hãy mở trang Nhắn tin .
Nếu đây là tin nhắn đầu tiên của bạn, hãy chọn Tạo chiến dịch đầu tiên của bạn .
- Chọn Tin nhắn thông báo Firebase và chọn Tạo .
Nếu không, trên tab Chiến dịch , hãy chọn Chiến dịch mới rồi chọn Thông báo .
Nhập nội dung tin nhắn. Tất cả các lĩnh vực khác là tùy chọn.
Chọn Gửi tin nhắn kiểm tra từ ngăn bên phải.
Trong trường có nhãn Thêm mã thông báo đăng ký FCM , hãy nhập mã thông báo đăng ký mà bạn đã nhận được trong phần trước của hướng dẫn này.
Chọn Kiểm tra .
Sau khi bạn chọn Kiểm tra , thiết bị khách được nhắm mục tiêu (có ứng dụng ở chế độ nền) sẽ nhận được thông báo.
Để biết thông tin chi tiết về việc gửi tin nhắn đến ứng dụng của bạn, hãy xem bảng điều khiển báo cáo FCM , ghi lại số lượng tin nhắn được gửi và mở trên thiết bị Apple và Android, cùng với dữ liệu về "số lần hiển thị" (thông báo mà người dùng nhìn thấy) cho ứng dụng Android.
Bước tiếp theo
Gửi tin nhắn đến các ứng dụng nền trước
Khi bạn đã gửi thành công tin nhắn thông báo trong khi ứng dụng của bạn ở chế độ nền, hãy xem Nhận tin nhắn trong ứng dụng Android để bắt đầu gửi đến các ứng dụng chạy nền trước.
Đi xa hơn tin nhắn thông báo
Để vượt ra ngoài các tin nhắn thông báo và thêm hành vi khác, nâng cao hơn vào ứng dụng của bạn, hãy xem: