Firebase Alerts فعال می شود

فایربیس برای طیف گسترده‌ای از رویدادهای مدیریت پروژه و برنامه، هشدار ارائه می‌دهد. در اینجا چند نمونه از رویدادهایی که فایربیس می‌تواند این نوع هشدار را برای شما ارسال کند، آورده شده است:

  • برای Crashlytics ، اگر برنامه شما افزایش چشمگیری در خرابی‌ها داشته باشد، می‌توانیم به شما هشدار دهیم.
  • برای Performance Monitoring ، می‌توانیم در صورت عبور زمان شروع به کار برنامه از آستانه تنظیم‌شده، به شما هشدار دهیم.
  • برای App Distribution ، اگر یکی از آزمایش‌کنندگان شما دستگاه iOS جدیدی را ثبت کند، می‌توانیم به شما هشدار دهیم.

بسته به هشدار و تنظیمات برگزیده تعیین شده توسط عضو پروژه ، Firebase این نوع هشدارها را در کنسول Firebase نشان می‌دهد یا آنها را از طریق ایمیل ارسال می‌کند.

این صفحه نحوه نوشتن توابع در Cloud Functions for Firebase (نسل دوم) که رویدادهای هشدار را مدیریت می‌کنند، شرح می‌دهد.

چگونه کار می‌کند؟

شما می‌توانید توابع را در پاسخ به رویدادهای هشدار منتشر شده توسط این منابع فعال کنید:

در یک چرخه حیات معمولی، تابعی که توسط یک رویداد هشدار (alert event) فعال می‌شود، کارهای زیر را انجام می‌دهد:

  1. منتظر می‌ماند تا نوع خاصی از هشدار از Firebase منتشر شود.
  2. هنگام انتشار هشدار، فعال می‌شود و payload رویداد را که حاوی اطلاعات خاصی در مورد رویداد است، دریافت می‌کند.
  3. کد تابع شما را برای مدیریت بار رویداد فراخوانی می‌کند.

فعال کردن یک تابع در رویدادهای هشدار

از زیربسته firebase-functions/v2/alerts برای نوشتن تابعی که رویدادهای هشدار را مدیریت می‌کند، استفاده کنید. مثال‌های خاص محصول زیر، گردش کاری را نشان می‌دهند که در آن یک تابع از یک وب‌هوک برای ارسال پیام به کانال Discord هنگام انتشار هشدار برای آن محصول از Firebase استفاده می‌کند.

مدیریت رویداد هشدار Crashlytics

برای مثال Crashlytics زیر، شما Cloud Functions for Firebase برای مدیریت رویداد هشدار یک مشکل خرابی مهلک جدید استفاده می‌کنید. این تابع اطلاعات هشدار را در یک پیام به یک کانال Discord ارسال می‌کند.

نمونه اعلان خرابی در 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 مراجعه کنید.