ה-Firebase Admin SDK ו-FCM v1
HTTP API מאפשרים לבקשות ההודעות להגדיר את כל השדות שזמינים באובייקט message
. למשל:
- קבוצה משותפת של שדות שצריכים להתפרש על ידי כל המופעים של האפליקציה שמקבלים את ההודעה.
- קבוצות של שדות שספציפיות לפלטפורמה, כמו
AndroidConfig
ו-WebpushConfig
, שמפורשות רק על ידי מופעים של האפליקציה שפועלים בפלטפורמה שצוינה.
חסימות ספציפיות לפלטפורמה מאפשרות לכם להתאים אישית את ההודעות לפלטפורמות שונות, כדי לוודא שהן מטופלות בצורה נכונה כשהן מתקבלות. הקצה האחורי של FCM יביא בחשבון את כל הפרמטרים שצוינו ויבצע התאמה אישית של ההודעה לכל פלטפורמה.
מתי כדאי להשתמש בשדות נפוצים
כדאי להשתמש בשדות נפוצים כשמבצעים את הפעולות הבאות:
- שליחת שדות לכל פלטפורמה
- שליחת הודעות לנושאים
כל המופעים של האפליקציה, לא משנה באיזו פלטפורמה, יכולים לפרש את השדות הנפוצים הבאים:
מתי כדאי להשתמש בשדות שספציפיים לפלטפורמה
משתמשים בשדות ספציפיים לפלטפורמה כשרוצים:
- שליחת שדות רק לפלטפורמות מסוימות
- שליחת שדות ספציפיים לפלטפורמה בנוסף לשדות המשותפים
כדי לשלוח ערכים רק לפלטפורמות מסוימות, צריך להשתמש בשדות ספציפיים לפלטפורמה. לדוגמה, כדי לשלוח התראה רק לפלטפורמות של Apple ולאינטרנט, ולא ל-Android, צריך להשתמש בשתי קבוצות נפרדות של שדות, אחת ל-Apple ואחת לאינטרנט.
כששולחים הודעות עם אפשרויות מסירה ספציפיות, צריך להשתמש בשדות ספציפיים לפלטפורמה כדי להגדיר אותן. אם רוצים, אפשר לציין ערכים שונים לכל פלטפורמה. עם זאת, גם אם רוצים להגדיר ערך זהה בפלטפורמות שונות, צריך להשתמש בשדות ספציפיים לפלטפורמה. הסיבה לכך היא שכל פלטפורמה עשויה לפרש את הערך בצורה שונה מעט. לדוגמה, ב-Android, הזמן עד לתפוגה מוגדר כזמן תפוגה בשניות, ואילו ב-Apple הוא מוגדר כתאריך תפוגה.
הודעת התראה עם אפשרויות מסירה ספציפיות לפלטפורמה
בקשת השליחה הבאה של HTTP v1 API שולחת כותרת ותוכן משותפים של התראה לכל הפלטפורמות, אבל גם שולחת כמה שינויים שספציפיים לפלטפורמה. באופן ספציפי, הבקשה:
- מגדיר אורך חיים ארוך לפלטפורמות Android ואינטרנט, ומגדיר את עדיפות ההודעה ב-APNs (פלטפורמות של אפל) לעדיפות נמוכה
- מגדיר את המפתחות המתאימים כדי להגדיר את התוצאה של הקשה של משתמש על ההתראה ב-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"
}
}
}
}
מידע נוסף על המפתחות שזמינים בבלוקים ספציפיים לפלטפורמה בגוף ההודעה מופיע בדף הפניה ל-HTTP v1. מידע נוסף על יצירת בקשות שליחה שמכילות את גוף ההודעה זמין במאמר שליחת הודעה באמצעות FCM HTTP v1 API.
הודעת התראה עם אפשרויות לצבעים וסמלים
בדוגמה הבאה, הבקשה לשליחה שולחת כותרת ותוכן משותפים של התראה לכל הפלטפורמות, אבל היא גם שולחת כמה שינויים שספציפיים לפלטפורמה למכשירי 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")
.setBody("$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',
)
Go
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"
}
}
}
}
למידע נוסף, אפשר לעיין בדף הפניה ל-HTTP v1 כדי לקבל פרטים נוספים על המפתחות שזמינים בבלוקים ספציפיים לפלטפורמה בגוף ההודעה.
הודעת התראה עם תמונה מותאמת אישית
בקשת השליחה הבאה שולחת כותרת התראה משותפת לכל הפלטפורמות, אבל היא גם שולחת תמונה. דוגמה לאפקט הוויזואלי במכשיר של משתמש:
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"
}
}
}
}
למידע נוסף, אפשר לעיין בדף הפניה ל-HTTP 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