ارسال پیام بااستفاده از Firebase Admin SDK

اگر قبلاً Firebase Admin SDK را راه‌اندازی نکرده‌اید، برای راه‌اندازی Firebase Admin SDK در سرورتان، راهنما را دنبال کنید.

فعال کردن FCM HTTP v1 API

  1. در کنسول Firebase، به تنظیمات > کلی بروید. سپس، روی زبانه پیام‌رسانی ابری کلیک کنید.

  2. ‫Cloud Messaging API را فعال کنید.

مجوز دادن به حساب سرویس از پروژه‌ای دیگر

می‌توانید برای یک پروژه، «پروژه هدف»، پیام ارسال کنید، درحالی‌که از حساب خدماتی در پروژه دیگری، «پروژه فرستنده»، استفاده می‌کنید. این کار به شما امکان می‌دهد مدیریت حساب سرویس را در یک پروژه متمرکز کنید و درعین‌حال ازطرف دیگران پیام ارسال کنید. برای آشنایی با نحوه انجام این کار، از مراحل زیر استفاده کنید:

  1. در پروژه فرستنده، مطمئن شوید که Firebase Cloud Messaging API فعال باشد. با رفتن به تنظیمات > کلی، فعال بودن آن را در کنسول Firebase بررسی کنید. سپس، روی زبانه پیام‌رسانی ابری کلیک کنید.

  2. در پروژه فرستنده، حساب خدمات ایجاد کنید.

  3. در پروژه مقصد، نقش سرپرست API پیام‌رسانی ابریِ Firebase را به نشانی ایمیل حساب سرویس اختصاص دهید. این کار را در صفحه IAM و سرپرست > IAM کنسول Google Cloud انجام می‌دهید. این نقش به حساب سرویس از پروژه فرستنده اجازه می‌دهد به پروژه مقصد پیام ارسال کند.

  4. «کیت توسعه نرم‌افزار» خود را با فایل کلید حساب سرویس پروژه فرستنده و شناسه پروژه هدف مقداردهی اولیه کنید.

    Node.js

    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) یا رمز ثبت آن را هدف‌یابی کنید.

Node.js

استفاده از 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().sendAsync(message).get();
// 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} برمی‌گرداند.

ارسال یک پیام به چند دستگاه

«کیت‌های توسعه نرم‌افزار» FCM سرپرست به شما امکان می‌دهد پیامی را به فهرست شناسه‌های نصب Firebase (FID) یا نشان‌های ثبت دستگاه چندپخشی کنید. وقتی نیاز دارید پیام یکسانی را به تعداد زیادی دستگاه ارسال کنید می‌توانید از این ویژگی استفاده کنید. می‌توانید حداکثر ۵۰۰ شناسه فایل و/یا کد در هر فراخوانی مشخص کنید.

مقدار برگشتی شامل فهرستی از پاسخ‌هایی است که با ترتیب هدف‌های ورودی، FIDs، و/یا نشان‌ها مطابقت دارد. این کار زمانی مفید است که می‌خواهید بررسی کنید کدام هدف‌ها منجر به خطاها شده است. اگر هم کدها و هم FIDs ارائه شود، ابتدا کدها و سپس FIDs پردازش می‌شوند.

Node.js

استفاده از FIDs (توصیه‌شده):

// 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);
    }
  });

جاوا

استفاده از FIDs (توصیه‌شده):

// 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);
}

پایتون

استفاده از FIDs (توصیه‌شده):

# 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}')

رفتن

استفاده از FIDs (توصیه‌شده):

// 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)
}

سی شارپ

استفاده از FIDs (توصیه‌شده):

// 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}");
            }

ارسال فهرست پیام‌ها

«کیت‌های توسعه نرم‌افزار سرپرست» از ارسال فهرست حداکثر ۵۰۰ پیام پشتیبانی می‌کنند. از این ویژگی می‌توان برای ساختن مجموعه سفارشی از پیام‌ها و ارسال آن‌ها به گیرندگان مختلف، ازجمله موضوعات، شناسه‌های نصب Firebase (FIDs)، یا رمزهای ثبت دستگاه استفاده کرد. برای مثال، می‌توانید از این ویژگی زمانی که نیاز به ارسال پیام‌های متفاوت به مخاطبان مختلف دارید، استفاده کنید.

Node.js

استفاده از هدف‌های ترکیبی (توصیه‌شده):

// 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");