منبع: پیام
پیام ارسال شده توسط Firebase Cloud Messaging Service.
نمایندگی JSON |
---|
{ "name": string, "data": { string: string, ... }, "notification": { object ( |
زمینه های | |
---|---|
name | فقط خروجی شناسه پیام ارسال شده، در قالب |
data | فقط ورودی محموله کلید/مقدار دلخواه، که باید با کد UTF-8 باشد. کلید نباید یک کلمه رزرو شده باشد ("from"، "message_type" یا هر کلمه ای که با "google" یا "gcm" شروع می شود). هنگام ارسال محمولههای حاوی فقط فیلدهای داده به دستگاههای iOS، فقط اولویت معمولی ( یک شی حاوی لیستی از |
notification | فقط ورودی الگوی اعلان عمومی برای استفاده در همه سیستم عامل ها. |
android | فقط ورودی گزینه های خاص Android برای پیام های ارسال شده از طریق سرور اتصال FCM . |
webpush | فقط ورودی گزینه های پروتکل Webpush |
apns | فقط ورودی گزینه های خاص Apple Push Notification Service . |
fcm_options | فقط ورودی الگوی گزینههای ویژگی FCM SDK برای استفاده در همه پلتفرمها. |
target میدانی اتحادیه ضروری. فقط ورودی هدف ارسال پیام به. target فقط می تواند یکی از موارد زیر باشد: | |
token | رمز ثبت نام برای ارسال پیام به. |
topic | نام موضوع برای ارسال پیام، به عنوان مثال "آب و هوا". توجه: پیشوند "/topics/" نباید ارائه شود. |
condition | شرط ارسال پیام، به عنوان مثال "فو" در موضوعات و & "نوار" در موضوعات". |
اطلاع
الگوی اعلان عمومی برای استفاده در همه سیستم عامل ها.
نمایندگی JSON |
---|
{ "title": string, "body": string, "image": string } |
زمینه های | |
---|---|
title | عنوان اطلاعیه |
body | متن متن اعلان. |
image | حاوی URL تصویری است که قرار است در دستگاه بارگیری شود و در یک اعلان نمایش داده شود. JPEG، PNG، BMP در تمامی پلتفرم ها پشتیبانی کامل دارند. GIF متحرک و ویدیو فقط در iOS کار می کنند. WebP و HEIF دارای سطوح مختلف پشتیبانی در پلتفرمها و نسخههای پلتفرم هستند. اندروید دارای محدودیت اندازه تصویر 1 مگابایت است. استفاده از سهمیه و پیامدها/هزینه ها برای میزبانی تصویر در Firebase Storage: https://firebase.google.com/pricing |
AndroidConfig
گزینه های خاص Android برای پیام های ارسال شده از طریق سرور اتصال FCM .
نمایندگی JSON |
---|
{ "collapse_key": string, "priority": enum ( |
زمینه های | |
---|---|
collapse_key | شناسه گروهی از پیامها که میتوان آنها را جمع کرد، به طوری که تنها آخرین پیام در هنگام ازسرگیری تحویل ارسال میشود. حداکثر 4 کلید کوچک کردن مختلف در هر زمان مجاز است. |
priority | اولویت پیام می تواند مقادیر "عادی" و "بالا" را بگیرد. برای اطلاعات بیشتر، به تنظیم اولویت پیام مراجعه کنید. |
ttl | اگر دستگاه آفلاین باشد، پیام چقدر (در ثانیه) باید در فضای ذخیره سازی FCM نگهداری شود. حداکثر زمان پشتیبانی زنده 4 هفته است و مقدار پیش فرض در صورت تنظیم نشدن 4 هفته است. اگر می خواهید پیام را فوراً ارسال کنید، آن را روی 0 تنظیم کنید. در قالب JSON، نوع Duration بهجای یک شی، بهعنوان رشته کدگذاری میشود، جایی که رشته به پسوند «s» ختم میشود (نشان دهنده ثانیهها) و قبل از آن تعداد ثانیهها، با نانوثانیهها به صورت ثانیه کسری بیان میشود. به عنوان مثال، 3 ثانیه با 0 نانوثانیه باید در قالب JSON به عنوان "3s" رمزگذاری شود، در حالی که 3 ثانیه و 1 نانوثانیه باید در قالب JSON به عنوان "3.000000001s" بیان شود. ttl به نزدیکترین ثانیه به پایین گرد می شود. مدت زمان در ثانیه با حداکثر نه رقم کسری که با ' |
restricted_package_name | نام بسته برنامه ای که برای دریافت پیام باید رمز ثبت نام مطابقت داشته باشد. |
data | بار کلیدی/مقدار دلخواه. در صورت وجود، یک شی حاوی لیستی از |
notification | اعلان برای ارسال به دستگاه های اندرویدی. |
fcm_options | گزینه هایی برای ویژگی های ارائه شده توسط FCM SDK برای Android. |
direct_boot_ok | اگر روی درست تنظیم شود، پیامها اجازه خواهند داشت تا زمانی که دستگاه در حالت بوت مستقیم است، به برنامه تحویل داده شود. به پشتیبانی از حالت بوت مستقیم مراجعه کنید. |
AndroidMessagePriority
اولویت پیام برای ارسال به دستگاه های Android. توجه داشته باشید که این اولویت یک مفهوم FCM است که زمان تحویل پیام را کنترل می کند. راهنمای FCM را ببینید. علاوه بر این، میتوانید با استفاده از AndroidNotification.NotificationPriority ، اولویت نمایش اعلان را در دستگاههای Android مورد نظر تعیین کنید.
Enums | |
---|---|
NORMAL | اولویت پیشفرض برای پیامهای داده پیامهای اولویتدار معمولی اتصالات شبکه را در یک دستگاه خواب باز نمیکنند و ممکن است تحویل آنها برای حفظ باتری به تأخیر بیفتد. برای پیامهایی که کمتر به زمان حساس هستند، مانند اعلانهای ایمیل جدید یا سایر دادهها برای همگامسازی، اولویت تحویل عادی را انتخاب کنید. |
HIGH | اولویت پیشفرض برای پیامهای اعلان. FCM سعی میکند پیامهای با اولویت بالا را فوراً ارسال کند، و به سرویس FCM اجازه میدهد تا در صورت امکان دستگاه خواب را بیدار کند و اتصال شبکه را به سرور برنامه شما باز کند. برای مثال، برنامههای دارای پیامرسانی فوری، چت یا هشدار تماس صوتی، معمولاً باید یک اتصال شبکه را باز کنند و مطمئن شوند که FCM پیام را بدون تأخیر به دستگاه تحویل میدهد. اگر پیام از نظر زمانی مهم است و نیاز به تعامل فوری کاربر دارد، اولویت بالا را تنظیم کنید، اما مراقب باشید که تنظیم پیامهایتان روی اولویت بالا در مقایسه با پیامهای اولویت معمولی بیشتر به تخلیه باتری کمک میکند. |
Android Notification
اعلان برای ارسال به دستگاه های اندرویدی.
نمایندگی JSON |
---|
{ "title": string, "body": string, "icon": string, "color": string, "sound": string, "tag": string, "click_action": string, "body_loc_key": string, "body_loc_args": [ string ], "title_loc_key": string, "title_loc_args": [ string ], "channel_id": string, "ticker": string, "sticky": boolean, "event_time": string, "local_only": boolean, "notification_priority": enum ( |
زمینه های | |
---|---|
title | عنوان اطلاعیه در صورت وجود، |
body | متن متن اعلان. در صورت وجود، |
icon | نماد اعلان نماد اعلان را برای myicon منبع قابل ترسیم روی myicon تنظیم می کند. اگر این کلید را در درخواست ارسال نکنید، FCM نماد راهانداز مشخصشده در مانیفست برنامه شما را نمایش میدهد. |
color | رنگ نماد اعلان، که در قالب #rrggbb بیان شده است. |
sound | زمانی که دستگاه اعلان را دریافت می کند، صدایی پخش می شود. از "پیش فرض" یا نام فایل یک منبع صوتی همراه در برنامه پشتیبانی می کند. فایل های صوتی باید در /res/raw/ قرار گیرند. |
tag | شناسه برای جایگزینی اعلانهای موجود در کشوی اعلان استفاده میشود. اگر مشخص نشده باشد، هر درخواست یک اعلان جدید ایجاد می کند. اگر مشخص شده باشد و اعلانی با همان برچسب قبلاً نشان داده شده باشد، اعلان جدید جایگزین اعلان موجود در کشوی اعلان می شود. |
click_action | اقدام مرتبط با کلیک کاربر بر روی اعلان. اگر مشخص شده باشد، زمانی که کاربر روی اعلان کلیک می کند، یک فعالیت با فیلتر هدف منطبق راه اندازی می شود. |
body_loc_key | کلید رشته بدنه در منابع رشته برنامه برای بومی سازی متن متن به محلی سازی فعلی کاربر. برای اطلاعات بیشتر به منابع رشته مراجعه کنید. |
body_loc_args[] | مقادیر رشته متغیری که به جای مشخص کننده های قالب در body_loc_key استفاده می شود تا متن اصلی را به محلی سازی فعلی کاربر بومی سازی کنید. برای اطلاعات بیشتر به قالببندی و استایلسازی مراجعه کنید. |
title_loc_key | کلید رشته عنوان در منابع رشته برنامه برای بومی سازی متن عنوان در محلی سازی فعلی کاربر. برای اطلاعات بیشتر به منابع رشته مراجعه کنید. |
title_loc_args[] | مقادیر رشته متغیری که به جای مشخص کننده های قالب در title_loc_key استفاده می شود تا متن عنوان را به محلی سازی فعلی کاربر بومی سازی کنید. برای اطلاعات بیشتر به قالببندی و استایلسازی مراجعه کنید. |
channel_id | شناسه کانال اعلان (جدید در Android O). قبل از دریافت هر گونه اعلان با این شناسه کانال، برنامه باید کانالی با این شناسه کانال ایجاد کند. اگر این شناسه کانال را در درخواست ارسال نکنید، یا اگر شناسه کانال ارائهشده هنوز توسط برنامه ایجاد نشده باشد، FCM از شناسه کانال مشخصشده در مانیفست برنامه استفاده میکند. |
ticker | متن "ticker" را تنظیم می کند که به سرویس های دسترسی ارسال می شود. قبل از سطح API 21 ( |
sticky | وقتی روی نادرست یا تنظیم نشده تنظیم شود، وقتی کاربر روی آن در پانل کلیک می کند، اعلان به طور خودکار حذف می شود. وقتی روی درست تنظیم شود، اعلان حتی زمانی که کاربر روی آن کلیک میکند، باقی میماند. |
event_time | زمان وقوع رویداد را در اعلان تنظیم کنید. اعلان ها در پانل بر اساس این زمان مرتب می شوند. یک نقطه در زمان با استفاده از protobuf.Timestamp نشان داده می شود. مهر زمانی در قالب RFC3339 UTC "Zulu"، با وضوح نانوثانیه و حداکثر نه رقم کسری. مثالها: |
local_only | تنظیم کنید که آیا این اعلان فقط مربوط به دستگاه فعلی باشد یا خیر. برخی از اعلان ها را می توان برای نمایش از راه دور به دستگاه های دیگر مانند ساعت Wear OS پل زد. این راهنمایی را می توان به گونه ای تنظیم کرد که توصیه کند این اعلان پل زده نشود. به راهنمای Wear OS مراجعه کنید |
notification_priority | اولویت نسبی را برای این اعلان تنظیم کنید. اولویت نشاندهنده این است که چقدر از توجه کاربر باید توسط این اعلان صرف شود. اعلانهای با اولویت پایین ممکن است در شرایط خاصی از کاربر پنهان شوند، در حالی که ممکن است کاربر برای یک اعلان با اولویت بالاتر قطع شود. تأثیر تعیین اولویتهای یکسان ممکن است در پلتفرمهای مختلف کمی متفاوت باشد. توجه داشته باشید که این اولویت با |
default_sound | اگر روی درست تنظیم شود، از صدای پیشفرض چارچوب Android برای اعلان استفاده کنید. مقادیر پیش فرض در config.xml مشخص شده است. |
default_vibrate_timings | اگر روی درست تنظیم شود، از الگوی لرزش پیشفرض چارچوب Android برای اعلان استفاده کنید. مقادیر پیش فرض در config.xml مشخص شده است. اگر |
default_light_settings | اگر روی درست تنظیم شود، از تنظیمات نور LED پیشفرض چارچوب Android برای اعلان استفاده کنید. مقادیر پیش فرض در config.xml مشخص شده است. اگر |
vibrate_timings[] | الگوی ارتعاش را برای استفاده تنظیم کنید. در یک آرایه از protobuf.Duration برای روشن یا خاموش کردن ویبراتور عبور کنید. مقدار اول مدت زمان در ثانیه با حداکثر نه رقم کسری که با ' |
visibility | Notification.visibility اعلان را تنظیم کنید. |
notification_count | تعداد مواردی که این اعلان نشان می دهد را تنظیم می کند. ممکن است به عنوان تعداد نشان برای راهاندازهایی که از نشان پشتیبانی میکنند نمایش داده شود. به نشان اعلان مراجعه کنید. به عنوان مثال، اگر فقط از یک اعلان برای نمایش چندین پیام جدید استفاده میکنید، این ممکن است مفید باشد، اما میخواهید تعداد کل پیامهای جدید را نشان دهد. اگر صفر یا نامشخص باشد، سیستمهایی که از نشان پشتیبانی میکنند از پیشفرض استفاده میکنند، که عبارت است از افزایش عددی که در منوی فشار طولانی هر بار که اعلان جدیدی میرسد، نمایش داده میشود. |
light_settings | تنظیمات برای کنترل میزان چشمک زدن و رنگ LED اعلان در صورت موجود بودن LED در دستگاه. کل زمان چشمک زدن توسط سیستم عامل کنترل می شود. |
image | حاوی URL تصویری است که قرار است در یک اعلان نمایش داده شود. در صورت وجود، |
اولویت اطلاع رسانی
سطوح اولویت یک اعلان
Enums | |
---|---|
PRIORITY_UNSPECIFIED | اگر اولویت مشخص نشده باشد، اولویت اعلان روی PRIORITY_DEFAULT تنظیم می شود. |
PRIORITY_MIN | کمترین اولویت اعلان اعلانهای این PRIORITY_MIN ممکن است به کاربر نشان داده نشود مگر در شرایط خاص، مانند گزارشهای اعلانهای دقیق. |
PRIORITY_LOW | اولویت اعلان کمتر رابط کاربری ممکن است انتخاب کند که اعلانها را در مقایسه با اعلانهای PRIORITY_DEFAULT کوچکتر یا در موقعیت دیگری در فهرست نشان دهد. |
PRIORITY_DEFAULT | اولویت پیشفرض اعلان. اگر برنامه اعلان های خود را اولویت بندی نمی کند، از این مقدار برای همه اعلان ها استفاده کنید. |
PRIORITY_HIGH | اولویت اطلاع رسانی بالاتر از این برای اعلانها یا هشدارهای مهمتر استفاده کنید. در مقایسه با اعلانهای PRIORITY_DEFAULT ، رابط کاربری ممکن است انتخاب کند که این اعلانها را بزرگتر یا در موقعیت متفاوتی در فهرستهای اعلان نشان دهد. |
PRIORITY_MAX | بالاترین اولویت اطلاع رسانی از این برای مهمترین موارد برنامه که نیاز به توجه یا ورودی سریع کاربر دارند استفاده کنید. |
دید
سطوح مختلف دید یک اعلان.
Enums | |
---|---|
VISIBILITY_UNSPECIFIED | اگر مشخص نشده است، به طور پیشفرض روی Visibility.PRIVATE قرار دهید. |
PRIVATE | این اعلان را در همه صفحههای قفل نشان دهید، اما اطلاعات حساس یا خصوصی را در صفحههای قفل ایمن پنهان کنید. |
PUBLIC | این اعلان را به طور کامل در همه صفحههای قفل نمایش دهید. |
SECRET | هیچ بخشی از این اعلان را در صفحه قفل ایمن نشان ندهید. |
تنظیمات نور
تنظیمات کنترل LED اعلان.
نمایندگی JSON |
---|
{
"color": {
object ( |
زمینه های | |
---|---|
color | ضروری. |
light_on_duration | ضروری. همراه با مدت زمان در ثانیه با حداکثر نه رقم کسری که با ' |
light_off_duration | ضروری. همراه با مدت زمان در ثانیه با حداکثر نه رقم کسری که با ' |
رنگ
یک رنگ را در فضای رنگی RGBA نشان می دهد. این نمایش برای سادگی تبدیل به / از نمایش رنگ در زبان های مختلف بیش از فشرده سازی طراحی شده است. به عنوان مثال، فیلدهای این نمایش را می توان به صورت بی اهمیت در اختیار سازنده java.awt.Color
در جاوا قرار داد. همچنین میتوان آن را به روش UIColor +colorWithRed:green:blue:alpha
در iOS ارائه کرد. و فقط با کمی کار می توان آن را به راحتی در یک رشته CSS rgba()
در جاوا اسکریپت قالب بندی کرد.
این صفحه مرجع حاوی اطلاعاتی در مورد فضای رنگ مطلقی نیست که باید برای تفسیر مقدار RGB استفاده شود (مانند sRGB، Adobe RGB، DCI-P3، BT.2020، و غیره). به طور پیش فرض، برنامه ها باید فضای رنگی sRGB را در نظر بگیرند.
هنگامی که نیاز به تصمیم گیری در مورد برابری رنگ است، پیاده سازی ها، مگر اینکه به گونه ای دیگر مستند شده باشد، اگر تمام مقادیر قرمز، سبز، آبی و آلفا هر کدام حداکثر 1e-5 متفاوت باشد، با دو رنگ برابر رفتار می کنند.
مثال (جاوا):
import com.google.type.Color;
// ...
public static java.awt.Color fromProto(Color protocolor) {
float alpha = protocolor.hasAlpha()
? protocolor.getAlpha().getValue()
: 1.0;
return new java.awt.Color(
protocolor.getRed(),
protocolor.getGreen(),
protocolor.getBlue(),
alpha);
}
public static Color toProto(java.awt.Color color) {
float red = (float) color.getRed();
float green = (float) color.getGreen();
float blue = (float) color.getBlue();
float denominator = 255.0;
Color.Builder resultBuilder =
Color
.newBuilder()
.setRed(red / denominator)
.setGreen(green / denominator)
.setBlue(blue / denominator);
int alpha = color.getAlpha();
if (alpha != 255) {
result.setAlpha(
FloatValue
.newBuilder()
.setValue(((float) alpha) / denominator)
.build());
}
return resultBuilder.build();
}
// ...
مثال (iOS / Obj-C):
// ...
static UIColor* fromProto(Color* protocolor) {
float red = [protocolor red];
float green = [protocolor green];
float blue = [protocolor blue];
FloatValue* alpha_wrapper = [protocolor alpha];
float alpha = 1.0;
if (alpha_wrapper != nil) {
alpha = [alpha_wrapper value];
}
return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
}
static Color* toProto(UIColor* color) {
CGFloat red, green, blue, alpha;
if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
return nil;
}
Color* result = [[Color alloc] init];
[result setRed:red];
[result setGreen:green];
[result setBlue:blue];
if (alpha <= 0.9999) {
[result setAlpha:floatWrapperWithValue(alpha)];
}
[result autorelease];
return result;
}
// ...
مثال (جاوا اسکریپت):
// ...
var protoToCssColor = function(rgb_color) {
var redFrac = rgb_color.red || 0.0;
var greenFrac = rgb_color.green || 0.0;
var blueFrac = rgb_color.blue || 0.0;
var red = Math.floor(redFrac * 255);
var green = Math.floor(greenFrac * 255);
var blue = Math.floor(blueFrac * 255);
if (!('alpha' in rgb_color)) {
return rgbToCssColor(red, green, blue);
}
var alphaFrac = rgb_color.alpha.value || 0.0;
var rgbParams = [red, green, blue].join(',');
return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
};
var rgbToCssColor = function(red, green, blue) {
var rgbNumber = new Number((red << 16) | (green << 8) | blue);
var hexString = rgbNumber.toString(16);
var missingZeros = 6 - hexString.length;
var resultBuilder = ['#'];
for (var i = 0; i < missingZeros; i++) {
resultBuilder.push('0');
}
resultBuilder.push(hexString);
return resultBuilder.join('');
};
// ...
نمایندگی JSON |
---|
{ "red": number, "green": number, "blue": number, "alpha": number } |
زمینه های | |
---|---|
red | مقدار قرمز در رنگ به عنوان مقدار در بازه [0، 1]. |
green | مقدار سبز در رنگ به عنوان مقدار در بازه [0، 1]. |
blue | مقدار آبی در رنگ به عنوان مقدار در بازه [0، 1]. |
alpha | کسری از این رنگ که باید روی پیکسل اعمال شود. یعنی رنگ پیکسل نهایی با معادله تعریف می شود: این بدان معنی است که مقدار 1.0 مربوط به یک رنگ ثابت است، در حالی که مقدار 0.0 مربوط به یک رنگ کاملا شفاف است. این به جای یک اسکالر شناور ساده از یک پیام پوششی استفاده می کند تا بتوان بین یک مقدار پیش فرض و مقدار تنظیم نشده تمایز قائل شد. اگر حذف شود، این شیء رنگی به صورت یک رنگ ثابت نمایش داده می شود (مثل اینکه مقدار آلفا به صراحت مقدار 1.0 داده شده است). |
AndroidFcmOptions
گزینه هایی برای ویژگی های ارائه شده توسط FCM SDK برای Android.
نمایندگی JSON |
---|
{ "analytics_label": string } |
زمینه های | |
---|---|
analytics_label | برچسب مرتبط با داده های تحلیلی پیام. |
WebpushConfig
گزینه های پروتکل Webpush
نمایندگی JSON |
---|
{
"headers": {
string: string,
...
},
"data": {
string: string,
...
},
"notification": {
object
},
"fcm_options": {
object ( |
زمینه های | |
---|---|
headers | هدرهای HTTP تعریف شده در پروتکل webpush. برای هدرهای پشتیبانی شده به پروتکل Webpush مراجعه کنید، به عنوان مثال "TTL": "15". یک شی حاوی لیستی از |
data | بار کلیدی/مقدار دلخواه. در صورت وجود، یک شی حاوی لیستی از |
notification | گزینه های Web Notification به عنوان یک شی JSON. از ویژگی های نمونه Notification همانطور که در Web Notification API تعریف شده است پشتیبانی می کند. در صورت وجود، فیلدهای "title" و "body" |
fcm_options | گزینه هایی برای ویژگی های ارائه شده توسط FCM SDK برای وب. |
WebpushFcmOptions
گزینه هایی برای ویژگی های ارائه شده توسط FCM SDK برای وب.
نمایندگی JSON |
---|
{ "link": string, "analytics_label": string } |
زمینه های | |
---|---|
link | پیوندی که وقتی کاربر روی اعلان کلیک می کند باز می شود. برای همه مقادیر URL، HTTPS مورد نیاز است. |
analytics_label | برچسب مرتبط با داده های تحلیلی پیام. |
ApnsConfig
گزینه های خاص Apple Push Notification Service .
نمایندگی JSON |
---|
{
"headers": {
string: string,
...
},
"payload": {
object
},
"fcm_options": {
object ( |
زمینه های | |
---|---|
headers | هدرهای درخواست HTTP در سرویس اعلان فشار اپل تعریف شده است. برای سرصفحه های پشتیبانی شده مانند باطن یک مقدار پیشفرض را برای یک شی حاوی لیستی از |
payload | بارگذاری APN به عنوان یک شی JSON، شامل دیکشنری |
fcm_options | گزینه هایی برای ویژگی های ارائه شده توسط FCM SDK برای iOS. |
ApnsFcmOptions
گزینه هایی برای ویژگی های ارائه شده توسط FCM SDK برای iOS.
نمایندگی JSON |
---|
{ "analytics_label": string, "image": string } |
زمینه های | |
---|---|
analytics_label | برچسب مرتبط با داده های تحلیلی پیام. |
image | حاوی URL تصویری است که قرار است در یک اعلان نمایش داده شود. در صورت وجود، |
FcmOptions
گزینه های مستقل از پلتفرم برای ویژگی های ارائه شده توسط FCM SDK.
نمایندگی JSON |
---|
{ "analytics_label": string } |
زمینه های | |
---|---|
analytics_label | برچسب مرتبط با داده های تحلیلی پیام. |
مواد و روش ها | |
---|---|
| ارسال پیام به هدف مشخص شده (یک نشانه ثبت نام، موضوع یا شرایط). |