Firebase Summit で発表されたすべての情報をご覧ください。Firebase を使用してアプリ開発を加速し、自信を持ってアプリを実行する方法を紹介しています。詳細

FirebaseAlertsトリガー

コレクションでコンテンツを整理 必要に応じて、コンテンツの保存と分類を行います。

Firebase は、さまざまなプロジェクトおよびアプリ管理イベントのアラートを提供します。 Firebase がこのタイプのアラートを送信できる場合のイベントの例を次に示します。

  • Crashlytics については、アプリのクラッシュが大幅に増加した場合にアラートを出すことができます。
  • パフォーマンス モニタリングでは、アプリの起動時間が設定されたしきい値を超えた場合にアラートを送信できます。
  • App Distribution については、テスターの 1 人が新しい iOS デバイスを登録した場合にアラートを送信できます。

アラートとプロジェクト メンバーが設定した設定に応じて、Firebase はこれらの種類のアラートを Firebase コンソールに表示するか、メールで送信します。

このページでは、アラート イベントを処理する関数の作成方法について説明します。

それはどのように機能しますか?

これらのソースによって発行されたアラート イベントに応答して関数をトリガーできます。

一般的なライフサイクルでは、アラート イベントによってトリガーされる関数は次のことを行います。

  1. Firebase から発行される特定のアラート タイプをリッスン/待機します。
  2. アラートが発行されたときにトリガーされ、イベントに関する特定の情報を含むイベント ペイロードを受け取ります。
  3. 関数のコードを呼び出して、イベント ペイロードを処理します。

アラート イベントで関数をトリガーする

firebase-functions/v2/alertsサブパッケージを使用して、アラート イベントを処理する関数を記述します。次の製品固有の例は、その製品のアラートが Firebase から送信されたときに関数が Webhook を使用して Discord チャネルにメッセージを投稿するワークフローを示しています。

Crashlytics アラート イベントを処理する

次の Crashlytics の例では、Cloud Functions for Firebase を使用して、新しい致命的なクラッシュの問題のアラート イベントを処理します。この関数は、メッセージ内のアラート情報を Discord チャネルに投稿します。

Discord でのクラッシュ通知の例

新しい致命的なクラッシュの問題に関する通知の例

関数はonNewFatalIssuePublishedイベントをリッスンします。

exports.postfatalissuetodiscord = onNewFatalIssuePublished(async (event) => {

次に、関数は返されたイベント オブジェクトを解析し、メッセージを作成して 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}\`
`;

最後に、関数は構築されたメッセージを 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(response.error);
    }

キャプチャできるすべての Crashlytics アラート イベントについては、Crashlyticsアラートのリファレンス ドキュメントを参照してください。

パフォーマンス監視アラート イベントを処理する

このセクションの例は、パフォーマンスしきい値アラートの関数を作成する方法を示しています。

この例では、 onThresholdAlertPublished関数で、パフォーマンスしきい値アラートが発生するたびに送信されるタイプPerformanceEvent<ThresholdAlertPayload>のイベントをリッスンするクラウド関数をエクスポートします。

exports.postperformancealerttodiscord = onThresholdAlertPublished(
    async (event) => {

次に、関数は返されたイベント オブジェクトを解析し、イベント ペイロードから有用な情報を解析して、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}
    `;

最後に、この関数は、構築されたメッセージを 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(response.error);
        }

キャプチャできるすべてのパフォーマンス アラート イベントについては、パフォーマンス モニタリング アラートのリファレンス ドキュメントを参照してください。

App Distribution アラート イベントを処理する

このセクションの例では、新しいテスター iOS デバイス アラートの関数を作成する方法を示します。

この例では、 onNewTesterIosDevicePublished関数は、テスターが新しい iOS デバイスを登録するたびに送信されるタイプAppDistributionEvent<NewTesterDevicePayload>のイベントをリッスンするクラウド関数をエクスポートします。新しい iOS デバイスが登録されたら、プロビジョニング プロファイルをそのデバイスの UDID で更新してから、アプリを再配布する必要があります。

exports.postnewduuidtodiscord = onNewTesterIosDevicePublished(async (event) => {

次に、関数は返されたものを解析し、イベント ペイロードから有用な情報を解析し、メッセージを作成して 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}
`;

最後に、この関数は、構築されたメッセージを 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(response.error);
    }

キャプチャできるすべての App Distribution アラート イベントについては、App Distributionアラートのリファレンス ドキュメントを参照してください。