فایربیس برای طیف گستردهای از رویدادهای مدیریت پروژه و برنامه، هشدار ارائه میدهد. در اینجا چند نمونه از رویدادهایی که فایربیس میتواند این نوع هشدار را برای شما ارسال کند، آورده شده است:
- برای Crashlytics ، اگر برنامه شما افزایش چشمگیری در خرابیها داشته باشد، میتوانیم به شما هشدار دهیم.
- برای Performance Monitoring ، میتوانیم در صورت عبور زمان شروع به کار برنامه از آستانه تنظیمشده، به شما هشدار دهیم.
- برای App Distribution ، اگر یکی از آزمایشکنندگان شما دستگاه iOS جدیدی را ثبت کند، میتوانیم به شما هشدار دهیم.
بسته به هشدار و تنظیمات برگزیده تعیین شده توسط عضو پروژه ، Firebase این نوع هشدارها را در کنسول Firebase نشان میدهد یا آنها را از طریق ایمیل ارسال میکند.
این صفحه نحوه نوشتن توابع در Cloud Functions for Firebase (نسل دوم) که رویدادهای هشدار را مدیریت میکنند، شرح میدهد.
چگونه کار میکند؟
شما میتوانید توابع را در پاسخ به رویدادهای هشدار منتشر شده توسط این منابع فعال کنید:
- مدیریت رویداد هشدار App Distribution
- مدیریت رویداد هشدار Crashlytics
- مدیریت یک رویداد هشدار Performance Monitoring
در یک چرخه حیات معمولی، تابعی که توسط یک رویداد هشدار (alert event) فعال میشود، کارهای زیر را انجام میدهد:
- منتظر میماند تا نوع خاصی از هشدار از Firebase منتشر شود.
- هنگام انتشار هشدار، فعال میشود و payload رویداد را که حاوی اطلاعات خاصی در مورد رویداد است، دریافت میکند.
- کد تابع شما را برای مدیریت بار رویداد فراخوانی میکند.
فعال کردن یک تابع در رویدادهای هشدار
از زیربسته firebase-functions/v2/alerts برای نوشتن تابعی که رویدادهای هشدار را مدیریت میکند، استفاده کنید. مثالهای خاص محصول زیر، گردش کاری را نشان میدهند که در آن یک تابع از یک وبهوک برای ارسال پیام به کانال Discord هنگام انتشار هشدار برای آن محصول از Firebase استفاده میکند.
مدیریت رویداد هشدار Crashlytics
برای مثال Crashlytics زیر، شما Cloud Functions for Firebase برای مدیریت رویداد هشدار یک مشکل خرابی مهلک جدید استفاده میکنید. این تابع اطلاعات هشدار را در یک پیام به یک کانال Discord ارسال میکند.

این تابع منتظر رویدادی است که مربوط به انتشار یک مشکل جدی در فایربیس باشد:
نود جی اس
exports.postfatalissuetodiscord = onNewFatalIssuePublished(async (event) => {
پایتون
@crashlytics_fn.on_new_fatal_issue_published(secrets=["DISCORD_WEBHOOK_URL"])
def post_fatal_issue_to_discord(event: crashlytics_fn.CrashlyticsNewFatalIssueEvent) -> None:
"""Publishes a message to Discord whenever a new Crashlytics fatal issue occurs."""
سپس این تابع شیء رویداد برگشتی را تجزیه میکند، اطلاعات مفید را از payload رویداد تجزیه میکند و پیامی را برای ارسال به کانال Discord میسازد:
نود جی اس
// construct a helpful message to send to Discord
const appId = event.appId;
const {id, title, subtitle, appVersion} = event.data.payload.issue;
const message = `
🚨 New fatal issue for ${appId} in version ${appVersion} 🚨
**${title}**
${subtitle}
id: \`${id}\`
`;
پایتون
# Construct a helpful message to send to Discord.
app_id = event.app_id
issue = event.data.payload.issue
message = f"""
🚨 New fatal issue for {app_id} in version {issue.app_version} 🚨
# {issue.title}
{issue.subtitle}
ID: `{issue.id}`
""".strip()
در نهایت، تابع، پیام ساخته شده را از طریق یک درخواست HTTP به Discord ارسال میکند:
نود جی اس
const response = await postMessageToDiscord("Crashlytics Bot", message);
if (response.ok) {
logger.info(
`Posted fatal Crashlytics alert ${id} for ${appId} to Discord`,
event.data.payload,
);
} else {
throw new Error(`Discord returned status code ${response.status}`);
}
پایتون
response = post_message_to_discord("Crashlytics Bot", message, DISCORD_WEBHOOK_URL.value)
if response.ok:
print(f"Posted fatal Crashlytics alert {issue.id} for {app_id} to Discord.")
pprint.pp(event.data.payload)
else:
response.raise_for_status()
برای کسب اطلاعات در مورد تمام رویدادهای هشدار Crashlytics که میتوانید ضبط کنید، به مستندات مرجع مربوط به هشدارهای Crashlytics مراجعه کنید.
مدیریت یک رویداد هشدار Performance Monitoring
این مثال تابعی را صادر میکند که رویدادهای هشدار آستانه عملکرد را بررسی میکند:
نود جی اس
exports.postperformancealerttodiscord = onThresholdAlertPublished(
async (event) => {
پایتون
@performance_fn.on_threshold_alert_published(secrets=["DISCORD_WEBHOOK_URL"])
def post_performance_alert_to_discord(event: performance_fn.PerformanceThresholdAlertEvent) -> None:
"""Publishes a message to Discord whenever a performance threshold alert is fired."""
سپس این تابع شیء رویداد برگشتی را تجزیه میکند، اطلاعات مفید را از payload رویداد تجزیه میکند و پیامی را برای ارسال به کانال Discord میسازد:
نود جی اس
// construct a helpful message to send to Discord
const appId = event.appId;
const {
eventName,
metricType,
eventType,
numSamples,
thresholdValue,
thresholdUnit,
conditionPercentile,
appVersion,
violationValue,
violationUnit,
investigateUri,
} = event.data.payload;
const message = `
⚠️ Performance Alert for ${metricType} of ${eventType}: **${eventName}** ⚠️
App id: ${appId}
Alert condition: ${thresholdValue} ${thresholdUnit}
Percentile (if applicable): ${conditionPercentile}
App version (if applicable): ${appVersion}
Violation: ${violationValue} ${violationUnit}
Number of samples checked: ${numSamples}
**Investigate more:** ${investigateUri}
`;
پایتون
# Construct a helpful message to send to Discord.
app_id = event.app_id
perf = event.data.payload
message = f"""
⚠️ Performance Alert for {perf.metric_type} of {perf.event_type}: **{perf.event_name}** ⚠️
App ID: {app_id}
Alert condition: {perf.threshold_value} {perf.threshold_unit}
Percentile (if applicable): {perf.condition_percentile}
App version (if applicable): {perf.app_version}
Violation: {perf.violation_value} {perf.violation_unit}
Number of samples checked: {perf.num_samples}
**Investigate more:** {perf.investigate_uri}
""".strip()
در نهایت، تابع، پیام ساخته شده را از طریق یک درخواست HTTP به Discord ارسال میکند:
نود جی اس
const response = await postMessageToDiscord(
"Firebase Performance Bot", message);
if (response.ok) {
logger.info(
`Posted Firebase Performance alert ${eventName} to Discord`,
event.data.payload,
);
} else {
throw new Error(`Discord returned status code ${response.status}`);
}
پایتون
response = post_message_to_discord("App Performance Bot", message,
DISCORD_WEBHOOK_URL.value)
if response.ok:
print(f"Posted Firebase Performance alert {perf.event_name} to Discord.")
pprint.pp(event.data.payload)
else:
response.raise_for_status()
برای کسب اطلاعات در مورد تمام رویدادهای هشدار عملکردی که میتوانید ثبت کنید، به مستندات مرجع برای هشدارهای Performance Monitoring مراجعه کنید.
مدیریت رویداد هشدار App Distribution
مثال این بخش به شما نشان میدهد که چگونه یک تابع برای هشدارهای دستگاه iOS جدید برای آزمایشکنندگان بنویسید.
در این مثال، تابع به رویدادهایی گوش میدهد که هر بار که یک تستر یک دستگاه iOS جدید را ثبت میکند، ارسال میشوند. وقتی یک دستگاه iOS جدید ثبت میشود، باید نمایه تأمین خود را با UDID آن دستگاه بهروزرسانی کنید و سپس برنامه را دوباره توزیع کنید.
نود جی اس
exports.postnewduuidtodiscord = onNewTesterIosDevicePublished(async (event) => {
پایتون
@app_distribution_fn.on_new_tester_ios_device_published(secrets=["DISCORD_WEBHOOK_URL"])
def post_new_udid_to_discord(event: app_distribution_fn.NewTesterDeviceEvent) -> None:
"""Publishes a message to Discord whenever someone registers a new iOS test device."""
سپس تابع، شیء برگشتی را تجزیه میکند، اطلاعات مفید را از payload رویداد تجزیه میکند و پیامی را برای ارسال به کانال Discord میسازد:
نود جی اس
// construct a helpful message to send to Discord
const appId = event.appId;
const {
testerDeviceIdentifier,
testerDeviceModelName,
testerEmail,
testerName,
} = event.data.payload;
const message = `
📱 New iOS device registered by ${testerName} <${testerEmail}> for ${appId}
UDID **${testerDeviceIdentifier}** for ${testerDeviceModelName}
`;
پایتون
# Construct a helpful message to send to Discord.
app_id = event.app_id
app_dist = event.data.payload
message = f"""
📱 New iOS device registered by {app_dist.tester_name} <{app_dist.tester_email}> for {app_id}
UDID **{app_dist.tester_device_identifier}** for {app_dist.tester_device_model_name}
""".strip()
در نهایت، تابع، پیام ساخته شده را از طریق یک درخواست HTTP به Discord ارسال میکند:
نود جی اس
const response = await postMessageToDiscord("AppDistribution Bot", message);
if (response.ok) {
logger.info(
`Posted iOS device registration alert for ${testerEmail} to Discord`,
);
} else {
throw new Error(`Discord returned status code ${response.status}`);
}
پایتون
response = post_message_to_discord("App Distro Bot", message, DISCORD_WEBHOOK_URL.value)
if response.ok:
print(f"Posted iOS device registration alert for {app_dist.tester_email} to Discord.")
pprint.pp(event.data.payload)
else:
response.raise_for_status()
برای کسب اطلاعات در مورد تمام رویدادهای هشدار App Distribution که میتوانید ضبط کنید، به مستندات مرجع برای هشدارهای App Distribution مراجعه کنید.
برای یادگیری نحوه استفاده از تابعی که توسط یک بازخورد درون برنامهای فعال میشود، هشدار Firebase از App Distribution ، به ارسال بازخورد درون برنامهای به Jira مراجعه کنید.