Firebase Admin SDK और FCM v1
एचटीटीपी एपीआई की मदद से, मैसेज के अनुरोधों में message ऑब्जेक्ट में उपलब्ध सभी फ़ील्ड सेट किए जा सकते हैं. इसमें ये शामिल हैं:
- मैसेज पाने वाले सभी ऐप्लिकेशन इंस्टेंस के लिए, फ़ील्ड का एक सामान्य सेट.
- प्लैटफ़ॉर्म के हिसाब से फ़ील्ड के सेट, जैसे कि
AndroidConfigऔरWebpushConfig. इन्हें सिर्फ़ तय किए गए प्लैटफ़ॉर्म पर चल रहे ऐप्लिकेशन इंस्टेंस ही समझ सकते हैं.
प्लैटफ़ॉर्म के हिसाब से ब्लॉक करने की सुविधा से, आपको अलग-अलग प्लैटफ़ॉर्म के लिए मैसेज को पसंद के मुताबिक बनाने की सुविधा मिलती है. इससे यह पक्का किया जा सकता है कि मैसेज मिलने पर उन्हें सही तरीके से मैनेज किया जाए. FCM बैकएंड, सभी पैरामीटर को ध्यान में रखेगा और हर प्लैटफ़ॉर्म के लिए मैसेज को कस्टमाइज़ करेगा.
सामान्य फ़ील्ड का इस्तेमाल कब करना चाहिए
सामान्य फ़ील्ड का इस्तेमाल तब करें, जब:
- किसी भी प्लैटफ़ॉर्म पर फ़ील्ड भेजना
- विषयों के हिसाब से मैसेज भेजना
ऐप्लिकेशन के सभी इंस्टेंस, इन सामान्य फ़ील्ड को समझ सकते हैं. भले ही, वे किसी भी प्लैटफ़ॉर्म पर हों:
प्लैटफ़ॉर्म के हिसाब से फ़ील्ड का इस्तेमाल कब करना चाहिए
प्लैटफ़ॉर्म के हिसाब से फ़ील्ड का इस्तेमाल तब करें, जब आपको:
- सिर्फ़ चुनिंदा प्लैटफ़ॉर्म पर फ़ील्ड भेजना
- सामान्य फ़ील्ड के अलावा, प्लैटफ़ॉर्म के हिसाब से फ़ील्ड भेजें
जब भी आपको सिर्फ़ चुनिंदा प्लैटफ़ॉर्म पर वैल्यू भेजनी हों, तो प्लैटफ़ॉर्म के हिसाब से फ़ील्ड का इस्तेमाल करें. उदाहरण के लिए, सिर्फ़ Apple और वेब प्लैटफ़ॉर्म पर सूचना भेजने के लिए, आपको फ़ील्ड के दो अलग-अलग सेट इस्तेमाल करने होंगे. एक Apple के लिए और दूसरा वेब के लिए.
डिलीवरी के खास विकल्पों के साथ मैसेज भेजते समय, उन्हें सेट करने के लिए प्लैटफ़ॉर्म के हिसाब से फ़ील्ड का इस्तेमाल करें. अगर आप चाहें, तो हर प्लैटफ़ॉर्म के लिए अलग-अलग वैल्यू तय की जा सकती हैं. हालांकि, अगर आपको सभी प्लैटफ़ॉर्म पर एक ही वैल्यू सेट करनी है, तो भी आपको प्लैटफ़ॉर्म के हिसाब से फ़ील्ड का इस्तेमाल करना होगा. ऐसा इसलिए होता है, क्योंकि हर प्लैटफ़ॉर्म, वैल्यू को अलग-अलग तरीके से समझ सकता है. उदाहरण के लिए, Android पर टाइम टू लिव को सेकंड में खत्म होने के समय के तौर पर सेट किया जाता है. वहीं, Apple पर इसे खत्म होने की तारीख के तौर पर सेट किया जाता है.
प्लैटफ़ॉर्म के हिसाब से डिलीवरी के विकल्पों के साथ सूचना मैसेज
यहां दिए गए HTTP v1 API के अनुरोध से, सभी प्लैटफ़ॉर्म पर एक ही सूचना का टाइटल और कॉन्टेंट भेजा जाता है. हालांकि, इससे कुछ प्लैटफ़ॉर्म के हिसाब से बदलाव भी भेजे जाते हैं. खास तौर पर, अनुरोध:
- Android और वेब प्लैटफ़ॉर्म के लिए, मैसेज को लंबे समय तक सेव रखने की सुविधा सेट करता है. साथ ही, APNs (Apple प्लैटफ़ॉर्म) के लिए, मैसेज की प्राथमिकता को कम पर सेट करता है
- यह Android और Apple पर सूचना पर उपयोगकर्ता के टैप के नतीजे को तय करने के लिए सही कुंजियां सेट करता है —
click_action, औरcategory, क्रमशः.
{
"message":{
"token":"bk3RNwTe3H0:CI2k_HHwgIpoDKCIZvvDMExUdFQ3P1...",
"notification":{
"title":"Match update",
"body":"Arsenal goal in added time, score is now 3-0"
},
"android":{
"ttl":"86400s",
"notification"{
"click_action":"OPEN_ACTIVITY_1"
}
},
"apns": {
"headers": {
"apns-priority": "5",
},
"payload": {
"aps": {
"category": "NEW_MESSAGE_CATEGORY"
}
}
},
"webpush":{
"headers":{
"TTL":"86400"
}
}
}
}
मैसेज के मुख्य हिस्से में, प्लैटफ़ॉर्म के हिसाब से उपलब्ध ब्लॉक में मौजूद कुंजियों के बारे में ज़्यादा जानने के लिए, एचटीटीपी v1 रेफ़रंस पेज पर जाएं. मैसेज के मुख्य हिस्से वाले अनुरोध बनाने के बारे में ज़्यादा जानने के लिए, FCM एचटीटीपी v1 एपीआई का इस्तेमाल करके मैसेज भेजना लेख पढ़ें.
रंग और आइकॉन के विकल्पों के साथ सूचना मैसेज
यहां दिए गए उदाहरण में, अनुरोध भेजने पर सभी प्लैटफ़ॉर्म पर सूचना का एक ही टाइटल और कॉन्टेंट भेजा जाता है. हालांकि, Android डिवाइसों पर कुछ प्लैटफ़ॉर्म के हिसाब से बदलाव भी भेजे जाते हैं.
Android के लिए, अनुरोध में एक खास आइकॉन और रंग सेट किया जाता है, ताकि उसे Android डिवाइसों पर दिखाया जा सके. AndroidNotification के रेफ़रंस में बताया गया है कि रंग को #rrggbb फ़ॉर्मैट में तय किया जाता है. साथ ही, इमेज, Android ऐप्लिकेशन के लिए ड्रॉएबल आइकॉन रिसॉर्स होनी चाहिए.
यहां उपयोगकर्ता के डिवाइस पर विज़ुअल इफ़ेक्ट का एक उदाहरण दिया गया है:
![]()
Node.js
const topicName = 'industry-tech';
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.'
},
android: {
notification: {
icon: 'stock_ticker_update',
color: '#7e55c3'
}
},
topic: topicName,
};
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
Message message = Message.builder()
.setNotification(Notification.builder()
.setTitle("$GOOG up 1.43% on the day")
.setTitle("$GOOG gained 11.80 points to close at 835.67, up 1.43% on the day.")
.build())
.setAndroidConfig(AndroidConfig.builder()
.setTtl(3600 * 1000)
.setNotification(AndroidNotification.builder()
.setIcon("stock_ticker_update")
.setColor("#f45342")
.build())
.build())
.setApnsConfig(ApnsConfig.builder()
.setAps(Aps.builder()
.setBadge(42)
.build())
.build())
.setTopic("industry-tech")
.build();
Python
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.',
),
android=messaging.AndroidConfig(
ttl=datetime.timedelta(seconds=3600),
priority='normal',
notification=messaging.AndroidNotification(
icon='stock_ticker_update',
color='#f45342'
),
),
apns=messaging.APNSConfig(
payload=messaging.APNSPayload(
aps=messaging.Aps(badge=42),
),
),
topic='industry-tech',
)
जाएं
oneHour := time.Duration(1) * time.Hour
badge := 42
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.",
},
Android: &messaging.AndroidConfig{
TTL: &oneHour,
Notification: &messaging.AndroidNotification{
Icon: "stock_ticker_update",
Color: "#f45342",
},
},
APNS: &messaging.APNSConfig{
Payload: &messaging.APNSPayload{
Aps: &messaging.Aps{
Badge: &badge,
},
},
},
Topic: "industry-tech",
}
C#
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.",
},
Android = new AndroidConfig()
{
TimeToLive = TimeSpan.FromHours(1),
Notification = new AndroidNotification()
{
Icon = "stock_ticker_update",
Color = "#f45342",
},
},
Apns = new ApnsConfig()
{
Aps = new Aps()
{
Badge = 42,
},
},
Topic = "industry-tech",
};
REST
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":"industry-tech",
"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."
},
"android":{
"notification":{
"icon":"stock_ticker_update",
"color":"#7e55c3"
}
}
}
}
ज़्यादा जानने के लिए, एचटीटीपी v1 रेफ़रंस पेज पर जाएं. यहां आपको मैसेज के मुख्य हिस्से में, प्लैटफ़ॉर्म के हिसाब से उपलब्ध ब्लॉक में मौजूद कुंजियों के बारे में ज़्यादा जानकारी मिलेगी.
कस्टम इमेज के साथ सूचना वाला मैसेज
ध्यान रखें:
- सूचनाओं के लिए इमेज का साइज़ 1 एमबी तक सीमित है. इसके अलावा, Android में पहले से मौजूद इमेज सपोर्ट के हिसाब से इमेज का साइज़ तय होता है.
- Apple ऐप्लिकेशन में सूचना की इमेज पाने और उन्हें मैनेज करने के लिए, आपको सूचना सेवा एक्सटेंशन जोड़ना होगा. नोटिफ़िकेशन सर्विस एक्सटेंशन की मदद से, आपका ऐप्लिकेशन असली उपयोगकर्ता को सूचना दिखाने से पहले, FCM पेलोड में डिलीवर की गई इमेज को मैनेज कर सकता है. कोड सैंपल के लिए, नोटिफ़िकेशन सर्विस एक्सटेंशन सेट अप करना लेख पढ़ें.
- सूचना बनाने की सुविधा का इस्तेमाल करके अपलोड की गई इमेज का साइज़, 300 केबी से ज़्यादा नहीं होना चाहिए.
- Cloud Storage से सेव की गई या दिखाई जाने वाली इमेज पर, स्टैंडर्ड कोटा की सीमाएं लागू होती हैं.
सूचना भेजने के अनुरोध में, ये विकल्प सेट करें. इससे, सूचना पाने वाला क्लाइंट, पेलोड में डिलीवर की गई इमेज को हैंडल कर पाएगा:
- Android के लिए, यह AndroidConfig विकल्प सेट करें:
notification.image, जिसमें इमेज का यूआरएल शामिल हो
- iOS के लिए, ये ApnsConfig विकल्प सेट करें:
fcm_options.image, जिसमें इमेज का यूआरएल शामिल हो. Apple के मुताबिक, इमेज के यूआरएल में मान्य फ़ाइल एक्सटेंशन होना चाहिए, ताकि संसाधन के टाइप की सही पहचान की जा सके.headers({ "mutable-content": 1})
नीचे दिए गए अनुरोध से, सभी प्लैटफ़ॉर्म पर सूचना का एक ही टाइटल भेजा जाता है. हालांकि, इससे एक इमेज भी भेजी जाती है. यहां उपयोगकर्ता के डिवाइस पर विज़ुअल इफ़ेक्ट का एक उदाहरण दिया गया है:

Node.js
const topicName = 'industry-tech';
const message = {
notification: {
title: 'Sparky says hello!'
},
android: {
notification: {
imageUrl: 'https://foo.bar.pizza-monster.png'
}
},
apns: {
payload: {
aps: {
'mutable-content': 1
}
},
fcm_options: {
image: 'https://foo.bar.pizza-monster.png'
}
},
webpush: {
headers: {
image: 'https://foo.bar.pizza-monster.png'
}
},
topic: topicName,
};
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);
});
REST
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":"industry-tech",
"notification":{
"title":"Sparky says hello!",
},
"android":{
"notification":{
"image":"https://foo.bar/pizza-monster.png"
}
},
"apns":{
"payload":{
"aps":{
"mutable-content":1
}
},
"fcm_options": {
"image":"https://foo.bar/pizza-monster.png"
}
},
"webpush":{
"headers":{
"image":"https://foo.bar/pizza-monster.png"
}
}
}
}
ज़्यादा जानने के लिए, एचटीटीपी v1 रेफ़रंस पेज पर जाएं. यहां आपको मैसेज के मुख्य हिस्से में, प्लैटफ़ॉर्म के हिसाब से उपलब्ध ब्लॉक में मौजूद कुंजियों के बारे में ज़्यादा जानकारी मिलेगी.
क्लिक ऐक्शन के साथ सूचना वाला मैसेज
नीचे दिए गए अनुरोध से, सभी प्लैटफ़ॉर्म पर सूचना का एक ही टाइटल भेजा जाता है. हालांकि, इससे ऐप्लिकेशन को एक कार्रवाई भी भेजी जाती है, ताकि वह उपयोगकर्ता के सूचना के साथ इंटरैक्ट करने पर जवाब दे सके. यहां उपयोगकर्ता के डिवाइस पर विज़ुअल इफ़ेक्ट का एक उदाहरण दिया गया है:

Node.js
const topicName = 'industry-tech';
const message = {
notification: {
title: 'Breaking News....'
},
android: {
notification: {
clickAction: 'news_intent'
}
},
apns: {
payload: {
aps: {
'category': 'INVITE_CATEGORY'
}
}
},
webpush: {
fcmOptions: {
link: 'breakingnews.html'
}
},
topic: topicName,
};
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);
});
REST
POST https://fcm.googleapis.com/v1/projects/myproject-b5ae1/messages:send HTTP/1.1