Để nhắm mục tiêu một tin nhắn đến nhiều thiết bị, hãy sử dụng Nhắn tin theo chủ đề . Tính năng này cho phép bạn gửi tin nhắn đến nhiều thiết bị đã chọn tham gia vào một chủ đề cụ thể.
Hướng dẫn này tập trung vào việc gửi thông báo chủ đề từ máy chủ ứng dụng của bạn bằng cách sử dụng SDK quản trị hoặc API REST cho FCM, đồng thời nhận và xử lý chúng trong ứng dụng Android. Chúng tôi sẽ đề cập đến việc xử lý thông báo cho cả ứng dụng nền và nền trước. Tất cả các bước để đạt được điều này đều được đề cập, từ thiết lập đến xác minh.
Thiết lập SDK
Phần 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 hoặc đã thực hiện các bước để Gửi tin nhắn đầu tiên của bạn .
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.kts
hoặc<project>/build.gradle
), hãy thêm plugin dịch vụ của Google làm phần phụ thuộc:Kotlin
plugins { id("com.android.application") version "7.2.0" apply false // ... // Add the dependency for the Google services Gradle plugin id("com.google.gms.google-services") version "4.3.15" apply false }
Groovy
plugins { id 'com.android.application' version '7.2.0' apply false // ... // Add the dependency for the Google services Gradle plugin id 'com.google.gms.google-services' version '4.3.15' apply false }
Trong tệp Gradle mô -đun (cấp ứng dụng) của bạn (thường là
<project>/<app-module>/build.gradle.kts
hoặc<project>/<app-module>/build.gradle
), hãy thêm plugin dịch vụ của Google:Kotlin
plugins { id("com.android.application") // Add the Google services Gradle plugin id("com.google.gms.google-services") // ... }
Groovy
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.kts
hoặc<project>/<app-module>/build.gradle
), hãy thêm phần phụ thuộc cho Firebase Cloud Thư viện Android nhắn tin. 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.
Kotlin+KTX
dependencies { // Import the BoM for the Firebase platform implementation(platform("com.google.firebase:firebase-bom:32.3.1")) // 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.2.1") implementation("com.google.firebase:firebase-analytics-ktx:21.3.0") }
Java
dependencies { // Import the BoM for the Firebase platform implementation(platform("com.google.firebase:firebase-bom:32.3.1")) // 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.2.1") implementation("com.google.firebase:firebase-analytics: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.kts
hoặcbuild.gradle
cấp ứng dụng của bạn. - Tăng
minSdk
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
Đăng ký ứng dụng khách cho một chủ đề
Các ứng dụng khách có thể đăng ký bất kỳ chủ đề hiện có nào hoặc chúng có thể tạo một chủ đề mới. Khi ứng dụng khách đăng ký một tên chủ đề mới (tên chưa tồn tại cho dự án Firebase của bạn), một chủ đề mới có tên đó sẽ được tạo trong FCM và bất kỳ ứng dụng khách nào sau đó đều có thể đăng ký chủ đề đó.
Để đăng ký một chủ đề, ứng dụng khách gọi Firebase Cloud Messaging subscribeToTopic()
với tên chủ đề FCM. Phương thức này trả về một Task
, có thể được sử dụng bởi trình nghe hoàn thành để xác định xem đăng ký có thành công hay không:
Kotlin+KTX
Firebase.messaging.subscribeToTopic("weather") .addOnCompleteListener { task -> var msg = "Subscribed" if (!task.isSuccessful) { msg = "Subscribe failed" } Log.d(TAG, msg) Toast.makeText(baseContext, msg, Toast.LENGTH_SHORT).show() }
Java
FirebaseMessaging.getInstance().subscribeToTopic("weather") .addOnCompleteListener(new OnCompleteListener<Void>() { @Override public void onComplete(@NonNull Task<Void> task) { String msg = "Subscribed"; if (!task.isSuccessful()) { msg = "Subscribe failed"; } Log.d(TAG, msg); Toast.makeText(MainActivity.this, msg, Toast.LENGTH_SHORT).show(); } });
Để hủy đăng ký, ứng dụng khách gọi Firebase Cloud Messaging unsubscribeFromTopic()
với tên chủ đề.
Nhận và xử lý tin nhắn chủ đề
FCM cung cấp các thông báo chủ đề giống như các thông báo xuôi dòng khác.
Để nhận tin nhắn, hãy sử dụng dịch vụ mở rộng FirebaseMessagingService
. Dịch vụ của bạn nên ghi đè các lệnh gọi lại onMessageReceived
và onDeletedMessages
.
Khoảng thời gian để xử lý một tin nhắn có thể ngắn hơn 20 giây tùy thuộc vào độ trễ phát sinh trước khi gọi onMessageReceived
, bao gồm độ trễ của hệ điều hành, thời gian khởi động ứng dụng, chuỗi chính bị chặn bởi các hoạt động khác hoặc các cuộc gọi onMessageReceived
trước đó mất quá nhiều thời gian. Sau thời gian đó, các hành vi khác nhau của HĐH chẳng hạn như quá trình tắt của Android hoặc giới hạn thực thi nền của Android O có thể ảnh hưởng đến khả năng hoàn thành công việc của bạn.
onMessageReceived
được cung cấp cho hầu hết các loại tin nhắn, với các ngoại lệ sau:
Tin nhắn thông báo được gửi khi ứng dụng của bạn ở chế độ nền . Trong trường hợp này, thông báo được gửi đến khay hệ thống của thiết bị. Theo mặc định, người dùng nhấn vào thông báo sẽ mở trình khởi chạy ứng dụng.
Tin nhắn có cả tải trọng thông báo và dữ liệu, khi nhận được ở chế độ nền . Trong trường hợp này, thông báo được gửi tới khay hệ thống của thiết bị và tải trọng dữ liệu được gửi trong phần bổ sung của mục đích Hoạt động trình khởi chạy của bạn.
Tóm tắt:
trạng thái ứng dụng | Thông báo | Dữ liệu | Cả hai |
---|---|---|---|
Vấn đề xung quanh | onMessageReceived | onMessageReceived | onMessageReceived |
Lý lịch | Khay hệ thống | onMessageReceived | Thông báo: khay hệ thống Dữ liệu: trong phần bổ sung của mục đích. |
Chỉnh sửa bảng kê khai ứng dụng
Để sử dụng FirebaseMessagingService
, bạn cần thêm phần sau vào bảng kê khai ứng dụng của mình:
<service android:name=".java.MyFirebaseMessagingService" android:exported="false"> <intent-filter> <action android:name="com.google.firebase.MESSAGING_EVENT" /> </intent-filter> </service>
Ngoài ra, bạn nên đặt các giá trị mặc định để tùy chỉnh giao diện của thông báo. Bạn có thể chỉ định biểu tượng mặc định tùy chỉnh và màu mặc định tùy chỉnh được áp dụng bất cứ khi nào các giá trị tương đương không được đặt trong tải trọng thông báo.
Thêm những dòng này bên trong thẻ application
để đặt biểu tượng mặc định tùy chỉnh và màu tùy chỉnh:
<!-- Set custom default icon. This is used when no icon is set for incoming notification messages. See README(https://goo.gl/l4GJaQ) for more. --> <meta-data android:name="com.google.firebase.messaging.default_notification_icon" android:resource="@drawable/ic_stat_ic_notification" /> <!-- Set color used with incoming notification messages. This is used when no color is set for the incoming notification message. See README(https://goo.gl/6BKBk7) for more. --> <meta-data android:name="com.google.firebase.messaging.default_notification_color" android:resource="@color/colorAccent" />
Android hiển thị biểu tượng mặc định tùy chỉnh cho
- Tất cả các tin nhắn thông báo được gửi từ trình tổng hợp Thông báo .
- Bất kỳ tin nhắn thông báo nào không đặt biểu tượng một cách rõ ràng trong tải trọng thông báo.
Android sử dụng màu mặc định tùy chỉnh cho
- Tất cả các tin nhắn thông báo được gửi từ trình tổng hợp Thông báo .
- Bất kỳ tin nhắn thông báo nào không đặt màu rõ ràng trong tải trọng thông báo.
Nếu không có biểu tượng mặc định tùy chỉnh nào được đặt và không có biểu tượng nào được đặt trong tải trọng thông báo, Android sẽ hiển thị biểu tượng ứng dụng được hiển thị bằng màu trắng.
Ghi đè onMessageReceived
Bằng cách ghi đè phương thức FirebaseMessagingService.onMessageReceived
, bạn có thể thực hiện các hành động dựa trên đối tượng RemoteMessage đã nhận và nhận dữ liệu tin nhắn:
Kotlin+KTX
override fun onMessageReceived(remoteMessage: RemoteMessage) { // TODO(developer): Handle FCM messages here. // Not getting messages here? See why this may be: https://goo.gl/39bRNJ Log.d(TAG, "From: ${remoteMessage.from}") // Check if message contains a data payload. if (remoteMessage.data.isNotEmpty()) { Log.d(TAG, "Message data payload: ${remoteMessage.data}") // Check if data needs to be processed by long running job if (needsToBeScheduled()) { // For long-running tasks (10 seconds or more) use WorkManager. scheduleJob() } else { // Handle message within 10 seconds handleNow() } } // Check if message contains a notification payload. remoteMessage.notification?.let { Log.d(TAG, "Message Notification Body: ${it.body}") } // Also if you intend on generating your own notifications as a result of a received FCM // message, here is where that should be initiated. See sendNotification method below. }
Java
@Override public void onMessageReceived(RemoteMessage remoteMessage) { // TODO(developer): Handle FCM messages here. // Not getting messages here? See why this may be: https://goo.gl/39bRNJ Log.d(TAG, "From: " + remoteMessage.getFrom()); // Check if message contains a data payload. if (remoteMessage.getData().size() > 0) { Log.d(TAG, "Message data payload: " + remoteMessage.getData()); if (/* Check if data needs to be processed by long running job */ true) { // For long-running tasks (10 seconds or more) use WorkManager. scheduleJob(); } else { // Handle message within 10 seconds handleNow(); } } // Check if message contains a notification payload. if (remoteMessage.getNotification() != null) { Log.d(TAG, "Message Notification Body: " + remoteMessage.getNotification().getBody()); } // Also if you intend on generating your own notifications as a result of a received FCM // message, here is where that should be initiated. See sendNotification method below. }
Ghi đè onDeletedMessages
Trong một số trường hợp, FCM có thể không gửi tin nhắn. Điều này xảy ra khi có quá nhiều thư (>100) đang chờ xử lý cho ứng dụng của bạn trên một thiết bị cụ thể tại thời điểm ứng dụng kết nối hoặc nếu thiết bị không kết nối với FCM trong hơn một tháng. Trong những trường hợp này, bạn có thể nhận được lệnh gọi lại tới FirebaseMessagingService.onDeletedMessages()
Khi phiên bản ứng dụng nhận được lệnh gọi lại này, phiên bản ứng dụng sẽ thực hiện đồng bộ hóa hoàn toàn với máy chủ ứng dụng của bạn. Nếu bạn chưa gửi tin nhắn đến ứng dụng trên thiết bị đó trong vòng 4 tuần qua, FCM sẽ không gọi onDeletedMessages()
.Xử lý tin nhắn thông báo trong ứng dụng nền
Khi ứng dụng của bạn ở chế độ nền, Android sẽ chuyển các tin nhắn thông báo đến khay hệ thống. Người dùng nhấn vào thông báo sẽ mở trình khởi chạy ứng dụng theo mặc định.
Điều này bao gồm các tin nhắn chứa cả tải trọng thông báo và dữ liệu (và tất cả các tin nhắn được gửi từ bảng điều khiển Thông báo). Trong những trường hợp này, thông báo sẽ được gửi tới khay hệ thống của thiết bị và tải trọng dữ liệu được gửi trong mục đích bổ sung của Hoạt động trình khởi chạy của bạn.
Để 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.
Xây dựng yêu cầu gửi
Sau khi bạn đã tạo một chủ đề, bằng cách đăng ký các phiên bản ứng dụng khách cho chủ đề ở phía máy khách hoặc thông qua API máy chủ , bạn có thể gửi tin nhắn đến chủ đề. Nếu đây là lần đầu tiên bạn xây dựng gửi yêu cầu cho FCM, hãy xem hướng dẫn về môi trường máy chủ và FCM của bạn để biết thông tin cơ bản và thiết lập quan trọng.
Trong logic gửi của bạn trên phần phụ trợ, hãy chỉ định tên chủ đề mong muốn như được hiển thị:
Node.js
// The topic name can be optionally prefixed with "/topics/".
const topic = 'highScores';
const message = {
data: {
score: '850',
time: '2:45'
},
topic: topic
};
// Send a message to devices subscribed to the provided topic.
getMessaging().send(message)
.then((response) => {
// Response is a message ID string.
console.log('Successfully sent message:', response);
})
.catch((error) => {
console.log('Error sending message:', error);
});
Java
// The topic name can be optionally prefixed with "/topics/".
String topic = "highScores";
// See documentation on defining a message payload.
Message message = Message.builder()
.putData("score", "850")
.putData("time", "2:45")
.setTopic(topic)
.build();
// Send a message to the devices subscribed to the provided topic.
String response = FirebaseMessaging.getInstance().send(message);
// Response is a message ID string.
System.out.println("Successfully sent message: " + response);
con trăn
# The topic name can be optionally prefixed with "/topics/".
topic = 'highScores'
# See documentation on defining a message payload.
message = messaging.Message(
data={
'score': '850',
'time': '2:45',
},
topic=topic,
)
# Send a message to the devices subscribed to the provided topic.
response = messaging.send(message)
# Response is a message ID string.
print('Successfully sent message:', response)
Đi
// The topic name can be optionally prefixed with "/topics/".
topic := "highScores"
// See documentation on defining a message payload.
message := &messaging.Message{
Data: map[string]string{
"score": "850",
"time": "2:45",
},
Topic: topic,
}
// Send a message to the devices subscribed to the provided topic.
response, err := client.Send(ctx, message)
if err != nil {
log.Fatalln(err)
}
// Response is a message ID string.
fmt.Println("Successfully sent message:", response)
C#
// The topic name can be optionally prefixed with "/topics/".
var topic = "highScores";
// See documentation on defining a message payload.
var message = new Message()
{
Data = new Dictionary<string, string>()
{
{ "score", "850" },
{ "time", "2:45" },
},
Topic = topic,
};
// Send a message to the devices subscribed to the provided topic.
string response = await FirebaseMessaging.DefaultInstance.SendAsync(message);
// Response is a message ID string.
Console.WriteLine("Successfully sent message: " + response);
NGHỈ NGƠI
POST https://fcm.googleapis.com/v1/projects/myproject-b5ae1/messages:send HTTP/1.1
Content-Type: application/json
Authorization: Bearer ya29.ElqKBGN2Ri_Uz...HnS_uNreA
{
"message":{
"topic" : "foo-bar",
"notification" : {
"body" : "This is a Firebase Cloud Messaging Topic Message!",
"title" : "FCM Message"
}
}
}
lệnh cURL:
curl -X POST -H "Authorization: Bearer ya29.ElqKBGN2Ri_Uz...HnS_uNreA" -H "Content-Type: application/json" -d '{
"message": {
"topic" : "foo-bar",
"notification": {
"body": "This is a Firebase Cloud Messaging Topic Message!",
"title": "FCM Message"
}
}
}' https://fcm.googleapis.com/v1/projects/myproject-b5ae1/messages:send HTTP/1.1
Để gửi thư đến tổ hợp các chủ đề, hãy chỉ định một điều kiện , là một biểu thức boolean chỉ định các chủ đề đích. Ví dụ: điều kiện sau sẽ gửi tin nhắn đến các thiết bị đã đăng ký TopicA
và TopicB
hoặc TopicC
:
"'TopicA' in topics && ('TopicB' in topics || 'TopicC' in topics)"
FCM trước tiên đánh giá bất kỳ điều kiện nào trong ngoặc đơn, sau đó đánh giá biểu thức từ trái sang phải. Trong biểu thức trên, người dùng đã đăng ký bất kỳ chủ đề nào không nhận được tin nhắn. Tương tự như vậy, người dùng không đăng ký TopicA
sẽ không nhận được tin nhắn. Những kết hợp này nhận được nó:
-
TopicA
vàTopicB
-
TopicA
vàTopicC
Bạn có thể bao gồm tối đa năm chủ đề trong biểu thức điều kiện của mình.
Để gửi đến một điều kiện:
Node.js
// Define a condition which will send to devices which are subscribed
// to either the Google stock or the tech industry topics.
const condition = '\'stock-GOOG\' in topics || \'industry-tech\' in topics';
// See documentation on defining a message payload.
const message = {
notification: {
title: '$FooCorp up 1.43% on the day',
body: '$FooCorp gained 11.80 points to close at 835.67, up 1.43% on the day.'
},
condition: condition
};
// Send a message to devices subscribed to the combination of topics
// specified by the provided condition.
getMessaging().send(message)
.then((response) => {
// Response is a message ID string.
console.log('Successfully sent message:', response);
})
.catch((error) => {
console.log('Error sending message:', error);
});
Java
// Define a condition which will send to devices which are subscribed
// to either the Google stock or the tech industry topics.
String condition = "'stock-GOOG' in topics || 'industry-tech' in topics";
// See documentation on defining a message payload.
Message message = Message.builder()
.setNotification(Notification.builder()
.setTitle("$GOOG up 1.43% on the day")
.setBody("$GOOG gained 11.80 points to close at 835.67, up 1.43% on the day.")
.build())
.setCondition(condition)
.build();
// Send a message to devices subscribed to the combination of topics
// specified by the provided condition.
String response = FirebaseMessaging.getInstance().send(message);
// Response is a message ID string.
System.out.println("Successfully sent message: " + response);
con trăn
# Define a condition which will send to devices which are subscribed
# to either the Google stock or the tech industry topics.
condition = "'stock-GOOG' in topics || 'industry-tech' in topics"
# See documentation on defining a message payload.
message = messaging.Message(
notification=messaging.Notification(
title='$GOOG up 1.43% on the day',
body='$GOOG gained 11.80 points to close at 835.67, up 1.43% on the day.',
),
condition=condition,
)
# Send a message to devices subscribed to the combination of topics
# specified by the provided condition.
response = messaging.send(message)
# Response is a message ID string.
print('Successfully sent message:', response)
Đi
// Define a condition which will send to devices which are subscribed
// to either the Google stock or the tech industry topics.
condition := "'stock-GOOG' in topics || 'industry-tech' in topics"
// See documentation on defining a message payload.
message := &messaging.Message{
Data: map[string]string{
"score": "850",
"time": "2:45",
},
Condition: condition,
}
// Send a message to devices subscribed to the combination of topics
// specified by the provided condition.
response, err := client.Send(ctx, message)
if err != nil {
log.Fatalln(err)
}
// Response is a message ID string.
fmt.Println("Successfully sent message:", response)
C#
// Define a condition which will send to devices which are subscribed
// to either the Google stock or the tech industry topics.
var condition = "'stock-GOOG' in topics || 'industry-tech' in topics";
// See documentation on defining a message payload.
var message = new Message()
{
Notification = new Notification()
{
Title = "$GOOG up 1.43% on the day",
Body = "$GOOG gained 11.80 points to close at 835.67, up 1.43% on the day.",
},
Condition = condition,
};
// Send a message to devices subscribed to the combination of topics
// specified by the provided condition.
string response = await FirebaseMessaging.DefaultInstance.SendAsync(message);
// Response is a message ID string.
Console.WriteLine("Successfully sent message: " + response);
NGHỈ NGƠI
POST https://fcm.googleapis.com/v1/projects/myproject-b5ae1/messages:send HTTP/1.1
Content-Type: application/json
Authorization: Bearer ya29.ElqKBGN2Ri_Uz...HnS_uNreA
{
"message":{
"condition": "'dogs' in topics || 'cats' in topics",
"notification" : {
"body" : "This is a Firebase Cloud Messaging Topic Message!",
"title" : "FCM Message",
}
}
}
lệnh cURL:
curl -X POST -H "Authorization: Bearer ya29.ElqKBGN2Ri_Uz...HnS_uNreA" -H "Content-Type: application/json" -d '{
"notification": {
"title": "FCM Message",
"body": "This is a Firebase Cloud Messaging Topic Message!",
},
"condition": "'dogs' in topics || 'cats' in topics"
}' https://fcm.googleapis.com/v1/projects/myproject-b5ae1/messages:send HTTP/1.1
Bước tiếp theo
- Bạn có thể sử dụng máy chủ của mình để đăng ký các phiên bản ứng dụng khách cho các chủ đề và thực hiện các tác vụ quản lý khác. Xem Quản lý đăng ký chủ đề trên máy chủ .