Để bắt đầu sử dụng FCM, hãy xây dựng trường hợp sử dụng đơn giản nhất: gửi thông báo kiểm thử từ Trình soạn thông báo đến một thiết bị phát triển khi ứng dụng đang chạy ở 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 tất 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 trình bày các nhiệm vụ mà bạn có thể đã hoàn thành nếu đã bật các tính năng Firebase khác 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 (lưu ý rằng một số sản phẩm có thể có các yêu cầu nghiêm ngặt hơn):
- Nhắm đến API cấp 21 (Lollipop) trở lên
- Sử dụng Android 5.0 trở lên
- Sử dụng Jetpack (AndroidX), bao gồm cả việc đáp ứng các yêu cầu về phiên bản sau:
com.android.tools.build:gradle
phiên bản 7.3.0 trở lêncompileSdkVersion
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.
Lưu ý rằng các SDK Firebase có phần phụ thuộc trên Dịch vụ Google Play yêu cầu thiết bị hoặc trình mô phỏng phải cài đặt Dịch vụ 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ử một sản phẩm Firebase, bạn có thể tải một trong các mẫu làm quen nhanh của chúng tôi xuống.
Tạo dự án Firebase
Trước khi có thể thêm Firebase vào ứng dụng Android, bạn cần tạo một dự án Firebase để kết nối với ứng dụng Android. Hãy truy cập vào bài viết Tìm hiểu về dự án Firebase để tìm hiểu thêm về dự án Firebase.
Tạo dự án Firebase
-
Trong bảng điều khiển Firebase, hãy nhấp vào Thêm dự án.
-
Để thêm tài nguyên Firebase vào dự án Google Cloud hiện có, hãy nhập tên dự án hoặc chọn dự án đó trong trình đơn thả xuống.
-
Để tạo dự án mới, hãy nhập tên dự án mong muốn. Bạn cũng có thể tuỳ ý chỉnh sửa mã dự án hiển thị bên dưới tên dự án.
-
-
Nếu bạn thấy thông báo nhắc, hãy xem xét và chấp nhận các điều khoản của Firebase.
-
Nhấp vào Tiếp tục.
-
(Không bắt buộc) Thiết lập Google Analytics cho dự án của bạn để có trải nghiệm tối ưu khi sử dụng bất kỳ sản phẩm Firebase nào sau đây:
Chọn một tài khoản Google Analytics hiện có hoặc tạo một tài khoản mới.
Nếu bạn tạo tài khoản mới, hãy chọn vị trí báo cáo Analytics, sau đó chấp nhận chế độ cài đặt chia sẻ dữ liệu và điều khoản Google Analytics cho dự án của bạn.
-
Nhấp vào Tạo dự án (hoặc Thêm Firebase nếu bạn đang sử dụng dự án Google Cloud hiện có).
Firebase sẽ tự động phân bổ tài nguyên cho dự án Firebase của bạn. Khi quá trình này hoàn tất, bạn sẽ được chuyển đến trang tổng quan về dự án Firebase trong bảng điều khiể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 của mình với dự án Firebase. Việc đăng ký ứng dụng thường được gọi là "thêm" ứng dụng vào dự án.
Chuyển đến bảng điều khiển Firebase.
Ở giữa trang tổng quan về dự án, hãy nhấp vào biểu tượng Android (
) hoặc Thêm ứng dụng để chạy quy trình thiết lập.Nhập tên gói của ứng dụng vào trường Tên gói Android.
Tên gói là gì và bạn tìm thấy tên gói ở đâu?
Tên gói giúp 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à mã nhận dạng ứng dụng.
Tìm tên gói của ứng dụng trong tệp Gradle mô-đun (cấp ứng dụng), thường là
app/build.gradle
(ví dụ: tên gói:com.yourcompany.yourproject
).Xin lưu ý rằng giá trị tên gói có phân biệt chữ hoa chữ thường và bạn không thể thay đổi giá trị này cho ứng dụng Android trên Firebase này sau khi ứng dụng được đăng ký với dự án Firebase.
(Không bắt buộc) Nhập thông tin khác về ứng dụng: Biệt hiệu ứng dụng và Chứng chỉ ký gỡ lỗi SHA-1.
Biệt hiệu ứng dụng và Chứng chỉ chữ ký gỡ lỗi SHA-1 được sử dụng như thế nào trong Firebase?
Biệt hiệu ứng dụng: Giá trị nhận dạng nội bộ, thuận tiện mà chỉ bạn mới thấy được trong bảng điều khiển Firebase
Chứng chỉ ký gỡ lỗi SHA-1: Firebase Authentication (khi sử dụng tính năng Đăng nhập bằng Google hoặc đăng nhập bằng số điện thoại) và Firebase Dynamic Links yêu cầu hàm băm SHA-1.
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:google-services.json Nhấp vào Download google-services.json (Tải google-services.json xuống) để lấy tệp cấu hình Firebase Android.
Di chuyển tệp cấu hình vào thư mục gốc của mô-đun (ở cấp ứng dụng) trong ứng dụng.
Bạn cần biết điều gì về tệp cấu hình này?
Tệp cấu hình Firebase chứa các giá trị nhận dạng duy nhất nhưng không bí mật của dự án. Để tìm hiểu thêm về tệp cấu hình này, hãy truy cập vào bài viết Tìm hiểu về dự án Firebase.
Bạn có thể tải lại tệp cấu hình Firebase bất cứ lúc nào.
Đảm bảo tên tệp cấu hình không có ký tự bổ sung, chẳng hạn như
(2)
.
Để cho phép SDK Firebase truy cập vào các giá trị trong tệp cấu hình
, bạn cần có trình bổ trợ Gradle cho 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.kts
hoặc<project>/build.gradle
), hãy thêm trình bổ trợ Dịch vụ Google làm phần phụ thuộc:plugins { id("com.android.application") version "7.3.0" apply false // ... // Add the dependency for the Google services Gradle plugin id("com.google.gms.google-services") version "4.4.2" apply false }
plugins { id 'com.android.application' version '7.3.0' apply false // ... // Add the dependency for the Google services Gradle plugin id 'com.google.gms.google-services' version '4.4.2' apply false }
Trong tệp Gradle của mô-đun (cấp ứng dụng) (thường là
<project>/<app-module>/build.gradle.kts
hoặc<project>/<app-module>/build.gradle
), hãy thêm trình bổ trợ Dịch vụ của Google:plugins { id("com.android.application") // Add the Google services Gradle plugin id("com.google.gms.google-services") // ... }
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
Trong tệp Gradle (ở cấp ứng dụng) của mô-đun (thường là
<project>/<app-module>/build.gradle.kts
hoặc<project>/<app-module>/build.gradle
), hãy thêm phần phụ thuộc cho thư viện Firebase Cloud Messaging dành cho Android. Bạn nên sử dụng Firebase Android BoM để kiểm soát việc tạo phiên bản thư viện.Để có trải nghiệm tối ưu với Firebase Cloud Messaging, bạn nên bật Google Analytics trong dự án Firebase và thêm SDK Firebase cho Google Analytics vào ứng dụng.
dependencies { // Import the BoM for the Firebase platform implementation(platform("com.google.firebase:firebase-bom:33.9.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 những phiên bản tương thích của thư viện Android trên Firebase.
Bạn đang tìm một mô-đun thư viện dành riêng cho Kotlin? Kể từ tháng 10 năm 2023 (Firebase BoM 32.5.0), cả nhà phát triển Kotlin và Java đều có thể phụ thuộc vào mô-đun thư viện chính (để biết thông tin chi tiết, hãy xem Câu hỏi thường gặp về sáng kiến này).(Phương án thay thế) Thêm phần phụ thuộc thư viện Firebase mà không 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ần phụ thuộc của thư viện đó.
Xin lưu ý rằng nếu bạn sử dụng nhiều thư viện Firebase trong ứng dụng, bạn nên sử dụng BoM để quản lý các phiên bản thư viện, nhằm đả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:24.1.0") implementation("com.google.firebase:firebase-analytics:22.2.0") }
Đồng bộ hoá dự án Android với các tệp Gradle.
Bạn có gặp lỗi bản dựng về tính năng hỗ trợ lệnh gọi tuỳ chỉnh và bật tính năng đơn giản hoá không? Sau đây là cách khắc phục.
Các bản dựng Gradle sử dụng trình bổ trợ Android cho Gradle (AGP) phiên bản 4.2 trở về trước cần bật tính năng hỗ trợ Java 8. Nếu không, các dự án Android này sẽ gặp lỗi bản dựng khi thêm SDK Firebase.
Để khắc phục lỗi bản dựng này, bạn có thể làm theo một trong hai cách sau:
- Thêm
compileOptions
được liệt kê trong thông báo lỗi vào tệpbuild.gradle.kts
hoặcbuild.gradle
cấp ứng dụng. - Tăng
minSdk
cho dự án Android lên 26 trở lên.
Tìm hiểu thêm về lỗi bản dựng này trong câu hỏi thường gặp này.
- Thêm
Truy cập vào mã thông báo đăng ký
Để gửi thông báo đế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 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 tất hướng dẫn này, hãy nhớ sao chép mã thông báo hoặc lưu trữ mã thông báo một cách an toàn sau khi truy xuất.
Khi khởi động ứng dụng lần đầu, SDK FCM sẽ tạo một mã thông báo đăng ký cho thực thể ứng dụng khách. Nếu muốn nhắm đến một thiết bị hoặc tạo nhóm thiết bị, bạn cần truy cập vào 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 xoay vòng sau khi khởi động ban đầu, nên bạn nên truy xuất mã thông báo đăng ký mới cập nhật nhất.
Mã thông báo đăng ký có thể thay đổi khi:
- Ứng dụng được khôi phục trên 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 xoá 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()
:
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() })
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(); } });
Theo dõi quá trình tạo mã thông báo
Lệnh gọi lại onNewToken
sẽ kích hoạt bất cứ khi nào mã thông báo mới được tạo.
/** * 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) }
/** * 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 đó đến máy chủ ứng dụng và lưu trữ bằng phương thức bạn muốn.
Gửi thông báo thử nghiệm
Cài đặt và chạy ứng dụng trên thiết bị mục tiêu. Trên thiết bị 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 đang chạy ở chế độ nền trên thiết bị.
Trong bảng điều khiển Firebase, hãy mở trang Messaging (Nhắn tin).
Nếu đây là thông báo đầu tiên của bạn, hãy chọn Tạo chiến dịch đầu tiên.
- Chọn Thông báo Firebase rồi chọn Tạo.
Nếu không, trên thẻ 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 trường khác là không bắt buộc.
Chọn Gửi tin nhắn thử nghiệm trong 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 thử.
Sau khi bạn chọn Kiểm thử, thiết bị khách mục tiêu (có ứng dụng chạy ở chế độ nền) sẽ nhận được thông báo.
Để biết thông tin chi tiết về việc phân phối thông báo đến ứng dụng của bạn, hãy xem trang tổng quan báo cáo FCM. Trang tổng quan này ghi lại số lượng thông báo đã gửi và mở trên thiết bị Apple và Android, cùng với dữ liệu về "lượt hiển thị" (số thông báo mà người dùng đã xem) cho ứng dụng Android.
Các bước tiếp theo
Gửi thông báo đến các ứng dụng trên nền trước
Sau khi bạn gửi thành công thông báo trong khi ứng dụng đang chạy ở chế độ nền, hãy xem phần Nhận thông báo trong ứng dụng Android để bắt đầu gửi thông báo đến các ứng dụng chạy ở chế độ nền trước.
Không chỉ thông báo tin nhắn
Để không chỉ gửi thông báo mà còn thêm các hành vi nâng cao khác vào ứng dụng, hãy xem: