اگر قبلاً Firebase Admin SDK تنظیم نکردهاید، برای تنظیم Firebase Admin SDK روی سرور خود، این راهنما را دنبال کنید.
فعال کردن FCM HTTP v1 API
در کنسول Firebase ، به مسیر زیر بروید:
> عمومی . سپس ، روی برگه پیامرسانی ابری کلیک کنید. فعال کردن API پیامرسانی ابری
تأیید اعتبار یک حساب سرویس از یک پروژه دیگر
شما میتوانید برای یک پروژه، «پروژه هدف»، پیام ارسال کنید، در حالی که از یک حساب سرویس در پروژه دیگری، «پروژه فرستنده»، استفاده میکنید. این به شما امکان میدهد مدیریت حساب سرویس را در یک پروژه متمرکز کنید و در عین حال از طرف دیگران پیام ارسال کنید. برای یادگیری نحوه انجام این کار، از مراحل زیر استفاده کنید:
در پروژه فرستنده، مطمئن شوید که API پیامرسانی ابری Firebase فعال است. با مراجعه به کنسول Firebase فعال بودن آن را بررسی کنید.
> عمومی . سپس ، روی برگه پیامرسانی ابری کلیک کنید. در پروژه فرستنده، یک حساب کاربری سرویس ایجاد کنید.
در پروژه هدف، نقش مدیر API پیامرسان ابری فایربیس (Firebase Cloud Messaging API Admin) را به آدرس ایمیل حساب سرویس اختصاص دهید. این کار را میتوانید در صفحه IAM & Admin > IAM در کنسول Google Cloud انجام دهید. این نقش به حساب سرویس از پروژه فرستنده اجازه میدهد تا پیامها را به پروژه هدف ارسال کند.
SDK خود را با فایل کلید حساب سرویس پروژه فرستنده و شناسه پروژه پروژه هدف، مقداردهی اولیه کنید.
نود جی اس
import { initializeApp, applicationDefault } from 'firebase-admin/app'; initializeApp({ // The credential is configured to be the sender project's service // account key via the environment variable GOOGLE_APPLICATION_CREDENTIALS credential: applicationDefault(), projectId: '<TARGET_PROJECT_ID>', });جاوا
FirebaseOptions options = FirebaseOptions.builder() // The credential is configured to be the sender project's service // account key via the environment variable GOOGLE_APPLICATION_CREDENTIALS .setCredentials(GoogleCredentials.getApplicationDefault()) .setProjectId("<TARGET_PROJECT_ID>") .build(); FirebaseApp.initializeApp(options);پایتون
import firebase_admin app_options = {'projectId': '<TARGET_PROJECT_ID>'} # Initialize with the default credential, i.e. the sender project's service # account key, stored in GOOGLE_APPLICATION_CREDENTIALS default_app = firebase_admin.initialize_app(options=app_options)برو
config := &firebase.Config{ProjectID: "<TARGET_PROJECT_ID>"} // Initialize with the default credential, i.e. the sender project's service // account key, stored in GOOGLE_APPLICATION_CREDENTIALS app, err := firebase.NewApp(context.Background(), config) if err != nil { log.Fatalf("error initializing app: %v\n", err) }سی شارپ
FirebaseApp.Create(new AppOptions() { // The credential is configured to be the sender project's service // account key via the environment variable GOOGLE_APPLICATION_CREDENTIALS Credential = GoogleCredential.GetApplicationDefault(), ProjectId = "<TARGET_PROJECT_ID>", });
ارسال پیام به دستگاههای خاص
برای ارسال به یک دستگاه خاص، میتوانید شناسه نصب Firebase (FID) یا توکن ثبت آن را هدف قرار دهید.
نود جی اس
استفاده از FID (توصیه شده) :
// This installation ID comes from the client FCM SDKs.
const fid = 'YOUR_REGISTERED_FID';
const message = {
data: {
score: '850',
time: '2:45'
},
fid: fid
};
// Send a message to the device corresponding to the provided FID.
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);
});
استفاده از توکن ثبت نام (منسوخ شده) :
// This registration token comes from the client FCM SDKs.
const registrationToken = 'YOUR_REGISTRATION_TOKEN';
const message = {
data: {
score: '850',
time: '2:45'
},
token: registrationToken
};
// Send a message to the device corresponding to the provided
// registration token.
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);
});
جاوا
استفاده از FID (توصیه شده) :
// This installation ID comes from the client FCM SDKs.
String fid = "YOUR_REGISTERED_FID";
// See documentation on defining a message payload.
Message message = Message.builder()
.putData("score", "850")
.putData("time", "2:45")
.setFid(fid)
.build();
// Send a message to the device corresponding to the provided FID.
String response = FirebaseMessaging.getInstance().send(message);
// Response is a message ID string.
System.out.println("Successfully sent message: " + response);
استفاده از توکن ثبت نام (منسوخ شده) :
// This registration token comes from the client FCM SDKs.
String registrationToken = "YOUR_REGISTRATION_TOKEN";
// See documentation on defining a message payload.
Message message = Message.builder()
.putData("score", "850")
.putData("time", "2:45")
.setToken(registrationToken)
.build();
// Send a message to the device corresponding to the provided
// registration token.
String response = FirebaseMessaging.getInstance().send(message);
// Response is a message ID string.
System.out.println("Successfully sent message: " + response);
پایتون
استفاده از FID (توصیه شده) :
# This installation ID comes from the client FCM SDKs.
fid = 'YOUR_REGISTERED_FID'
# See documentation on defining a message payload.
message = messaging.Message(
data={
'score': '850',
'time': '2:45',
},
fid=fid,
)
# Send a message to the device corresponding to the provided FID.
response = messaging.send(message)
# Response is a message ID string.
print('Successfully sent message:', response)
استفاده از توکن ثبت نام (منسوخ شده) :
# This registration token comes from the client FCM SDKs.
registration_token = 'YOUR_REGISTRATION_TOKEN'
# See documentation on defining a message payload.
message = messaging.Message(
data={
'score': '850',
'time': '2:45',
},
token=registration_token,
)
# Send a message to the device corresponding to the provided
# registration token.
response = messaging.send(message)
# Response is a message ID string.
print('Successfully sent message:', response)
برو
استفاده از FID (توصیه شده) :
// Obtain a messaging.Client from the App.
ctx := context.Background()
client, err := app.Messaging(ctx)
if err != nil {
log.Fatalf("error getting Messaging client: %v\n", err)
}
// This installation ID comes from the client FCM SDKs.
fid := "YOUR_REGISTERED_FID"
// See documentation on defining a message payload.
message := &messaging.Message{
Data: map[string]string{
"score": "850",
"time": "2:45",
},
Fid: fid,
}
// Send a message to the device corresponding to the provided FID.
response, err := client.Send(ctx, message)
if err != nil {
log.Fatalln(err)
}
// Response is a message ID string.
fmt.Println("Successfully sent message:", response)
استفاده از توکن ثبت نام (منسوخ شده) :
// Obtain a messaging.Client from the App.
ctx := context.Background()
client, err := app.Messaging(ctx)
if err != nil {
log.Fatalf("error getting Messaging client: %v\n", err)
}
// This registration token comes from the client FCM SDKs.
registrationToken := "YOUR_REGISTRATION_TOKEN"
// See documentation on defining a message payload.
message := &messaging.Message{
Data: map[string]string{
"score": "850",
"time": "2:45",
},
Token: registrationToken,
}
// Send a message to the device corresponding to the provided
// registration token.
response, err := client.Send(ctx, message)
if err != nil {
log.Fatalln(err)
}
// Response is a message ID string.
fmt.Println("Successfully sent message:", response)
سی شارپ
استفاده از FID (توصیه شده) :
// This installation ID comes from the client FCM SDKs.
var fid = "YOUR_REGISTERED_FID";
var message = new Message()
{
Data = new Dictionary<string, string>()
{
{ "score", "850" },
{ "time", "2:45" },
},
Fid = fid,
};
// Send a message to the device corresponding to the provided FID.
string response = await FirebaseMessaging.DefaultInstance.SendAsync(message);
// Response is a message ID string.
Console.WriteLine("Successfully sent message: " + response);
استفاده از توکن ثبت نام (منسوخ شده) :
// This registration token comes from the client FCM SDKs.
var registrationToken = "YOUR_REGISTRATION_TOKEN";
// See documentation on defining a message payload.
var message = new Message()
{
Data = new Dictionary<string, string>()
{
{ "score", "850" },
{ "time", "2:45" },
},
#pragma warning disable CS0618
Token = registrationToken,
#pragma warning restore CS0618
};
// Send a message to the device corresponding to the provided
// registration token.
string response = await FirebaseMessaging.DefaultInstance.SendAsync(message);
// Response is a message ID string.
Console.WriteLine("Successfully sent message: " + response);
در صورت موفقیت، هر متد ارسال، یک شناسه پیام را برمیگرداند. Firebase Admin SDK رشته شناسه را با فرمت projects/{project_id}/messages/{message_id} برمیگرداند.
ارسال یک پیام به چندین دستگاه
SDK های Admin FCM به شما امکان میدهند یک پیام را به لیستی از شناسههای نصب Firebase (FID) یا توکنهای ثبت دستگاه، چندپخشی (multicast) کنید. میتوانید از این ویژگی زمانی استفاده کنید که نیاز به ارسال یک پیام مشابه به تعداد زیادی دستگاه دارید. میتوانید تا 500 FID و/یا توکن را در هر فراخوانی مشخص کنید.
مقدار بازگشتی شامل فهرستی از پاسخها است که با ترتیب اهداف ورودی، FIDها و/یا توکنها مطابقت دارد. این زمانی مفید است که میخواهید بررسی کنید کدام اهداف منجر به خطا شدهاند. اگر هم توکنها و هم FIDها ارائه شوند، ابتدا توکنها پردازش میشوند و پس از آن FIDها.
نود جی اس
استفاده از FID ها (توصیه شده) :
// These Firebase Installation IDs (FIDs) come from the client FCM SDKs.
const fids = [
'YOUR_REGISTERED_FID_1',
// ...
'YOUR_REGISTERED_FID_N'
];
const message = {
data: {score: '850', time: '2:45'},
fids: fids,
};
getMessaging().sendEachForMulticast(message)
.then((response) => {
console.log(response.successCount + ' messages were sent successfully');
if (response.failureCount > 0) {
const failedFids = [];
response.responses.forEach((resp, idx) => {
if (!resp.success) {
failedFids.push(fids[idx]);
}
});
console.log('List of FIDs that caused failures: ' + failedFids);
}
});
استفاده از توکنهای ثبتنام (منسوخ شده) :
// These registration tokens come from the client FCM SDKs.
const registrationTokens = [
'YOUR_REGISTRATION_TOKEN_1',
// …
'YOUR_REGISTRATION_TOKEN_N',
];
const message = {
data: {score: '850', time: '2:45'},
tokens: registrationTokens,
};
getMessaging().sendEachForMulticast(message)
.then((response) => {
if (response.failureCount > 0) {
const failedTokens = [];
response.responses.forEach((resp, idx) => {
if (!resp.success) {
failedTokens.push(registrationTokens[idx]);
}
});
console.log('List of tokens that caused failures: ' + failedTokens);
}
});
جاوا
استفاده از FID ها (توصیه شده) :
// These Firebase Installation IDs (FIDs) come from the client FCM SDKs.
List<String> fids = Arrays.asList(
"YOUR_REGISTERED_FID_1",
// ...
"YOUR_REGISTERED_FID_N"
);
MulticastMessage message = MulticastMessage.builder()
.putData("score", "850")
.putData("time", "2:45")
.addAllFids(fids)
.build();
BatchResponse response = FirebaseMessaging.getInstance().sendEachForMulticast(message);
if (response.getFailureCount() > 0) {
List<SendResponse> responses = response.getResponses();
List<String> failedFids = new ArrayList<>();
for (int i = 0; i < responses.size(); i++) {
if (!responses.get(i).isSuccessful()) {
// The order of responses corresponds to the order of the destination FIDs.
failedFids.add(fids.get(i));
}
}
System.out.println("List of FIDs that caused failures: " + failedFids);
}
استفاده از توکنهای ثبتنام (منسوخ شده) :
// These registration tokens come from the client FCM SDKs.
List<String> registrationTokens = Arrays.asList(
"YOUR_REGISTRATION_TOKEN_1",
// ...
"YOUR_REGISTRATION_TOKEN_n"
);
MulticastMessage message = MulticastMessage.builder()
.putData("score", "850")
.putData("time", "2:45")
.addAllTokens(registrationTokens)
.build();
BatchResponse response = FirebaseMessaging.getInstance().sendEachForMulticast(message);
if (response.getFailureCount() > 0) {
List<SendResponse> responses = response.getResponses();
List<String> failedTokens = new ArrayList<>();
for (int i = 0; i < responses.size(); i++) {
if (!responses.get(i).isSuccessful()) {
// The order of responses corresponds to the order of the registration tokens.
failedTokens.add(registrationTokens.get(i));
}
}
System.out.println("List of tokens that caused failures: " + failedTokens);
}
پایتون
استفاده از FID ها (توصیه شده) :
# These Firebase Installation IDs (FIDs) come from the client FCM SDKs.
fids = [
'YOUR_REGISTERED_FID_1',
# ...
'YOUR_REGISTERED_FID_N',
]
message = messaging.MulticastMessage(
data={'score': '850', 'time': '2:45'},
fids=fids,
)
response = messaging.send_each_for_multicast(message)
if response.failure_count > 0:
responses = response.responses
failed_fids = []
for idx, resp in enumerate(responses):
if not resp.success:
# The order of responses corresponds to the order of the destination FIDs.
failed_fids.append(fids[idx])
print('List of FIDs that caused failures: {0}'.format(failed_fids))
استفاده از توکنهای ثبتنام (منسوخ شده) :
# These registration tokens come from the client FCM SDKs.
registration_tokens = [
'YOUR_REGISTRATION_TOKEN_1',
# ...
'YOUR_REGISTRATION_TOKEN_N',
]
message = messaging.MulticastMessage(
data={'score': '850', 'time': '2:45'},
tokens=registration_tokens,
)
response = messaging.send_each_for_multicast(message)
if response.failure_count > 0:
responses = response.responses
failed_tokens = []
for idx, resp in enumerate(responses):
if not resp.success:
# The order of responses corresponds to the order of the registration tokens.
failed_tokens.append(registration_tokens[idx])
print(f'List of tokens that caused failures: {failed_tokens}')
برو
استفاده از FID ها (توصیه شده) :
// Create a list containing up to 500 Firebase Installation IDs (FIDs).
// These Firebase Installation IDs (FIDs) come from the client FCM SDKs.
fids := []string{
"YOUR_REGISTERED_FID_1",
// ...
"YOUR_REGISTERED_FID_N",
}
message := &messaging.MulticastMessage{
Data: map[string]string{
"score": "850",
"time": "2:45",
},
Fids: fids,
}
br, err := client.SendEachForMulticast(ctx, message)
if err != nil {
log.Fatalln(err)
}
if br.FailureCount > 0 {
var failedFids []string
for idx, resp := range br.Responses {
if !resp.Success {
// The order of responses corresponds to the order of the destination FIDs.
failedFids = append(failedFids, fids[idx])
}
}
fmt.Printf("List of FIDs that caused failures: %v\n", failedFids)
}
استفاده از توکنهای ثبتنام (منسوخ شده) :
// Create a list containing up to 500 registration tokens.
// This registration tokens come from the client FCM SDKs.
registrationTokens := []string{
"YOUR_REGISTRATION_TOKEN_1",
// ...
"YOUR_REGISTRATION_TOKEN_n",
}
message := &messaging.MulticastMessage{
Data: map[string]string{
"score": "850",
"time": "2:45",
},
Tokens: registrationTokens,
}
br, err := client.SendEachForMulticast(context.Background(), message)
if err != nil {
log.Fatalln(err)
}
if br.FailureCount > 0 {
var failedTokens []string
for idx, resp := range br.Responses {
if !resp.Success {
// The order of responses corresponds to the order of the registration tokens.
failedTokens = append(failedTokens, registrationTokens[idx])
}
}
fmt.Printf("List of tokens that caused failures: %v\n", failedTokens)
}
سی شارپ
استفاده از FID ها (توصیه شده) :
// These Firebase Installation IDs (FIDs) come from the client FCM SDKs.
var fids = new List<string>()
{
"YOUR_REGISTERED_FID_1",
// ...
"YOUR_REGISTERED_FID_N",
};
var message = new MulticastMessage()
{
Data = new Dictionary<string, string>()
{
{ "score", "850" },
{ "time", "2:45" },
},
Fids = fids,
};
var response = await FirebaseMessaging.DefaultInstance.SendEachForMulticastAsync(message);
if (response.FailureCount > 0)
{
var failedFids = new List<string>();
for (var i = 0; i < response.Responses.Count; i++)
{
if (!response.Responses[i].IsSuccess)
{
// The order of responses corresponds to the order of the destination FIDs.
failedFids.add(fids[i]);
}
}
Console.WriteLine($"List of FIDs that caused failures: {string.Join(", ", failedFids)}");
}
استفاده از توکنهای ثبتنام (منسوخ شده) :
// These registration tokens come from the client FCM SDKs.
var registrationTokens = new List<string>()
{
"YOUR_REGISTRATION_TOKEN_1",
// ...
"YOUR_REGISTRATION_TOKEN_n",
};
var message = new MulticastMessage()
{
#pragma warning disable CS0618
Tokens = registrationTokens,
#pragma warning restore CS0618
Data = new Dictionary<string, string>()
{
{ "score", "850" },
{ "time", "2:45" },
},
};
var response = await FirebaseMessaging.DefaultInstance.SendEachForMulticastAsync(message);
if (response.FailureCount > 0)
{
var failedTokens = new List<string>();
for (var i = 0; i < response.Responses.Count; i++)
{
if (!response.Responses[i].IsSuccess)
{
// The order of responses corresponds to the order of the registration tokens.
failedTokens.Add(registrationTokens[i]);
}
}
Console.WriteLine($"List of tokens that caused failures: {failedTokens}");
}
ارسال لیست پیامها
کیتهای توسعه نرمافزار ادمین از ارسال فهرستی تا سقف ۵۰۰ پیام پشتیبانی میکنند. از این ویژگی میتوان برای ساخت مجموعهای سفارشی از پیامها و ارسال آنها به گیرندگان مختلف، از جمله موضوعات، شناسههای نصب فایربیس (FID) یا توکنهای ثبت دستگاه، استفاده کرد. به عنوان مثال، میتوانید از این ویژگی زمانی استفاده کنید که نیاز به ارسال پیامهای متنوع به مخاطبان مختلف دارید.
نود جی اس
استفاده از اهداف ترکیبی (توصیه شده) :
// Create a list containing up to 500 messages.
const messages = [
{
notification: { title: 'Price drop', body: '5% off all electronics' },
fid: 'YOUR_REGISTERED_FID', // Using FID (Recommended)
},
{
notification: { title: 'Price drop', body: '2% off all books' },
token: 'YOUR_REGISTRATION_TOKEN', // Using token (Deprecated)
},
{
notification: { title: 'Price drop', body: '10% off all shoes' },
topic: 'readers-club',
}
];
getMessaging().sendEach(messages)
.then((response) => {
console.log(response.successCount + ' messages were sent successfully');
});
استفاده از توکنهای ثبتنام (منسوخ شده) :
// Create a list containing up to 500 messages.
const messages = [];
messages.push({
notification: { title: 'Price drop', body: '5% off all electronics' },
token: registrationToken,
});
messages.push({
notification: { title: 'Price drop', body: '2% off all books' },
topic: 'readers-club',
});
getMessaging().sendEach(messages)
.then((response) => {
console.log(response.successCount + ' messages were sent successfully');
});
جاوا
استفاده از اهداف ترکیبی (توصیه شده) :
// Create a list containing up to 500 messages.
List<Message> messages = new ArrayList<>();
messages.add(Message.builder()
.setNotification(Notification.builder()
.setTitle("Price drop")
.setBody("5% off all electronics")
.build())
.setFid("YOUR_REGISTERED_FID") // Using FID (Recommended)
.build());
messages.add(Message.builder()
.setNotification(Notification.builder()
.setTitle("Price drop")
.setBody("2% off all books")
.build())
.setToken("YOUR_REGISTRATION_TOKEN") // Using token (Deprecated)
.build());
messages.add(Message.builder()
.setNotification(Notification.builder()
.setTitle("Price drop")
.setBody("10% off all shoes")
.build())
.setTopic("readers-club")
.build());
BatchResponse response = FirebaseMessaging.getInstance().sendEach(messages);
// See the BatchResponse reference documentation
// for the contents of response.
System.out.println(response.getSuccessCount() + " messages were sent successfully");
استفاده از توکنهای ثبتنام (منسوخ شده) :
// Create a list containing up to 500 messages.
List<Message> messages = Arrays.asList(
Message.builder()
.setNotification(Notification.builder()
.setTitle("Price drop")
.setBody("5% off all electronics")
.build())
.setToken(registrationToken)
.build(),
// ...
Message.builder()
.setNotification(Notification.builder()
.setTitle("Price drop")
.setBody("2% off all books")
.build())
.setTopic("readers-club")
.build()
);
BatchResponse response = FirebaseMessaging.getInstance().sendEach(messages);
// See the BatchResponse reference documentation
// for the contents of response.
System.out.println(response.getSuccessCount() + " messages were sent successfully");
پایتون
استفاده از اهداف ترکیبی (توصیه شده) :
# Create a list containing up to 500 messages.
messages = [
messaging.Message(
notification=messaging.Notification('Price drop', '5% off all electronics'),
fid='YOUR_REGISTERED_FID', # Using FID (Recommended)
),
messaging.Message(
notification=messaging.Notification('Price drop', '2% off all books'),
token='YOUR_REGISTRATION_TOKEN', # Using token (Deprecated)
),
messaging.Message(
notification=messaging.Notification('Price drop', '10% off all shoes'),
topic='readers-club',
),
]
response = messaging.send_each(messages)
# See the BatchResponse reference documentation
# for the contents of response.
print('{0} messages were sent successfully'.format(response.success_count))
استفاده از توکنهای ثبتنام (منسوخ شده) :
# Create a list containing up to 500 messages.
messages = [
messaging.Message(
notification=messaging.Notification('Price drop', '5% off all electronics'),
token=registration_token,
),
# ...
messaging.Message(
notification=messaging.Notification('Price drop', '2% off all books'),
topic='readers-club',
),
]
response = messaging.send_each(messages)
# See the BatchResponse reference documentation
# for the contents of response.
print(f'{response.success_count} messages were sent successfully')
برو
استفاده از اهداف ترکیبی (توصیه شده) :
// Create a list containing up to 500 messages.
messages := []*messaging.Message{
{
Notification: &messaging.Notification{
Title: "Price drop",
Body: "5% off all electronics",
},
Fid: "YOUR_REGISTERED_FID", // Using FID (Recommended)
},
{
Notification: &messaging.Notification{
Title: "Price drop",
Body: "2% off all books",
},
Token: "YOUR_REGISTRATION_TOKEN", // Using token (Deprecated)
},
{
Notification: &messaging.Notification{
Title: "Price drop",
Body: "10% off all shoes",
},
Topic: "readers-club",
},
}
br, err := client.SendEach(ctx, messages)
if err != nil {
log.Fatalln(err)
}
// See the BatchResponse reference documentation
// for the contents of response.
fmt.Printf("%d messages were sent successfully\n", br.SuccessCount)
استفاده از توکنهای ثبتنام (منسوخ شده) :
// Create a list containing up to 500 messages.
messages := []*messaging.Message{
{
Notification: &messaging.Notification{
Title: "Price drop",
Body: "5% off all electronics",
},
Token: registrationToken,
},
{
Notification: &messaging.Notification{
Title: "Price drop",
Body: "2% off all books",
},
Topic: "readers-club",
},
}
br, err := client.SendEach(context.Background(), messages)
if err != nil {
log.Fatalln(err)
}
// See the BatchResponse reference documentation
// for the contents of response.
fmt.Printf("%d messages were sent successfully\n", br.SuccessCount)
سی شارپ
استفاده از اهداف ترکیبی (توصیه شده) :
// Create a list containing up to 500 messages.
var messages = new List<Message>()
{
new Message()
{
Notification = new Notification()
{
Title = "Price drop",
Body = "5% off all electronics",
},
Fid = "YOUR_REGISTERED_FID", // Using FID (Recommended)
},
new Message()
{
Notification = new Notification()
{
Title = "Price drop",
Body = "2% off all books",
},
Token = "YOUR_REGISTRATION_TOKEN", // Using token (Deprecated)
},
new Message()
{
Notification = new Notification()
{
Title = "Price drop",
Body = "10% off all shoes",
},
Topic = "readers-club",
},
};
var response = await FirebaseMessaging.DefaultInstance.SendEachAsync(messages);
// See the BatchResponse reference documentation
// for the contents of response.
Console.WriteLine($"{response.SuccessCount} messages were sent successfully");
استفاده از توکنهای ثبتنام (منسوخ شده) :
// Create a list containing up to 500 messages.
var messages = new List<Message>()
{
new Message()
{
Notification = new Notification()
{
Title = "Price drop",
Body = "5% off all electronics",
},
#pragma warning disable CS0618
Token = registrationToken,
#pragma warning restore CS0618
},
new Message()
{
Notification = new Notification()
{
Title = "Price drop",
Body = "2% off all books",
},
Topic = "readers-club",
},
};
var response = await FirebaseMessaging.DefaultInstance.SendEachAsync(messages);
// See the BatchResponse reference documentation
// for the contents of response.
Console.WriteLine($"{response.SuccessCount} messages were sent successfully");