Firebase برای طیف گسترده ای از رویدادهای مدیریت پروژه و برنامه هشدار می دهد. در اینجا چند نمونه از رویدادها برای زمانی که Firebase می تواند این نوع هشدار را برای شما ارسال کند آورده شده است:
- برای Crashlytics ، اگر برنامه شما افزایش چشمگیری در خرابیها داشته باشد، میتوانیم به شما هشدار دهیم.
- برای Performance Monitoring ، اگر زمان راهاندازی برنامهتان از آستانه پیکربندیشده شما عبور کرد، میتوانیم به شما هشدار دهیم.
- برای App Distribution ، اگر یکی از آزمایشکنندگان دستگاه iOS جدیدی را ثبت کرد، میتوانیم به شما هشدار دهیم.
بسته به هشدار و تنظیمات برگزیده تعیین شده توسط عضو پروژه ، Firebase این نوع هشدارها را در کنسول Firebase نشان می دهد یا آنها را از طریق ایمیل ارسال می کند.
این صفحه نحوه نوشتن توابع در Cloud Functions for Firebase (نسل دوم) را شرح می دهد که رویدادهای هشدار را مدیریت می کند.
چگونه کار می کند؟
میتوانید عملکردها را در پاسخ به رویدادهای هشدار منتشر شده توسط این منابع فعال کنید:
- یک رویداد هشدار App Distribution را مدیریت کنید
- یک رویداد هشدار Crashlytics را مدیریت کنید
- یک رویداد هشدار Performance Monitoring مدیریت کنید
در یک چرخه عمر معمولی، یک تابع فعال شده توسط یک رویداد هشدار، موارد زیر را انجام می دهد:
- گوش می دهد/منتظر می شود تا یک نوع هشدار خاص از Firebase منتشر شود.
- هنگامی که هشدار ارسال می شود، فعال می شود و بار رویداد را دریافت می کند که حاوی اطلاعات خاصی در مورد رویداد است.
- کد تابع شما را برای مدیریت بار رویداد فراخوانی می کند.
فعال کردن یک تابع در رویدادهای هشدار
از بسته فرعی firebase-functions/v2/alerts
برای نوشتن تابعی استفاده کنید که رویدادهای هشدار را مدیریت می کند. مثالهای ویژه محصول زیر یک گردش کار را نشان میدهند که در آن یک تابع از یک هوک برای ارسال پیام به کانال Discord استفاده میکند، زمانی که یک هشدار برای آن محصول از Firebase منتشر میشود.
یک رویداد هشدار Crashlytics را مدیریت کنید
برای مثال Crashlytics زیر، از Cloud Functions for Firebase برای رسیدگی به یک رویداد هشدار درباره یک مشکل تصادف مرگبار جدید استفاده میکنید. این تابع اطلاعات هشدار را در یک پیام به کانال Discord ارسال می کند.
این تابع به رویداد مربوط به انتشار یک مشکل کشنده جدید توسط Firebase گوش می دهد:
Node.js
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."""
سپس تابع، شی رویداد برگشتی را تجزیه می کند، اطلاعات مفید را از بارگذاری رویداد تجزیه می کند و پیامی برای ارسال به کانال Discord می سازد:
Node.js
// 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 می فرستد:
Node.js
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(response.error);
}
پایتون
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 مدیریت کنید
این مثال تابعی را صادر می کند که به رویدادهای هشدار آستانه عملکرد گوش می دهد:
Node.js
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."""
سپس تابع، شی رویداد برگشتی را تجزیه می کند، اطلاعات مفید را از بارگذاری رویداد تجزیه می کند و پیامی برای ارسال به کانال Discord می سازد:
Node.js
// 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 می فرستد:
Node.js
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(response.error);
}
پایتون
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 آن دستگاه به روز کنید و سپس برنامه را دوباره توزیع کنید.
Node.js
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."""
سپس تابع، شیء برگشتی را تجزیه میکند، اطلاعات مفید را از بار رویداد تجزیه میکند و پیامی برای ارسال به کانال Discord میسازد:
Node.js
// 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 می فرستد:
Node.js
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(response.error);
}
پایتون
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 مراجعه کنید.