Firebase bietet Warnungen für eine Vielzahl von Projekt- und App-Verwaltungsereignissen. Hier sind einige Beispielereignisse, wenn Firebase Ihnen diese Art von Benachrichtigung senden kann:
- Für Crashlytics können wir Sie benachrichtigen, wenn Ihre App einen dramatischen Anstieg der Abstürze aufweist.
- Zur Leistungsüberwachung können wir Sie benachrichtigen, wenn die Startzeit Ihrer App Ihren konfigurierten Schwellenwert überschreitet.
- Für die App-Verteilung können wir Sie benachrichtigen, wenn einer Ihrer Tester ein neues iOS-Gerät registriert.
Abhängig von der Warnung und den vom Projektmitglied festgelegten Einstellungen zeigt Firebase diese Arten von Warnungen in der Firebase-Konsole an oder sendet sie per E-Mail.
Auf dieser Seite wird beschrieben, wie Sie Funktionen schreiben, die Alarmereignisse verarbeiten.
Wie funktioniert es?
Sie können Funktionen als Reaktion auf Alarmereignisse auslösen, die von diesen Quellen ausgegeben werden:
- Behandeln Sie ein App Distribution-Warnereignis
- Behandeln Sie ein Crashlytics-Warnungsereignis
- Behandeln Sie ein Warnungsereignis der Leistungsüberwachung
In einem typischen Lebenszyklus führt eine durch ein Warnereignis ausgelöste Funktion Folgendes aus:
- Lauscht/wartet darauf, dass ein bestimmter Warnungstyp von Firebase ausgegeben wird.
- Wird ausgelöst, wenn die Warnung ausgegeben wird, und empfängt die Ereignisnutzlast, die spezifische Informationen über das Ereignis enthält.
- Ruft den Code Ihrer Funktion auf, um die Ereignisnutzlast zu verarbeiten.
Lösen Sie eine Funktion bei Alarmereignissen aus
Verwenden Sie das Unterpaket firebase-functions/v2/alerts
um eine Funktion zu schreiben, die Warnungsereignisse verarbeitet. Die folgenden produktspezifischen Beispiele veranschaulichen einen Workflow, bei dem eine Funktion einen Webhook verwendet, um eine Nachricht an einen Discord-Kanal zu senden, wenn eine Warnung für dieses Produkt von Firebase ausgegeben wird.
Behandeln Sie ein Crashlytics-Warnungsereignis
Für das folgende Crashlytics-Beispiel verwenden Sie Cloud Functions for Firebase, um ein Warnereignis eines neuen schwerwiegenden Absturzproblems zu verarbeiten. Diese Funktion sendet die Alarminformationen in einer Nachricht an einen Discord-Kanal.
Die Funktion lauscht auf das Ereignis onNewFatalIssuePublished
:
exports.postfatalissuetodiscord = onNewFatalIssuePublished(async (event) => {
Die Funktion analysiert dann das zurückgegebene Ereignisobjekt und erstellt eine Nachricht, die an den Discord-Kanal gesendet wird:
// 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}\` `;
Schließlich sendet die Funktion die konstruierte Nachricht an 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); }
Informationen zu allen Crashlytics-Warnungsereignissen, die Sie erfassen können, finden Sie in der Referenzdokumentation für Crashlytics-Warnungen .
Behandeln Sie ein Warnungsereignis der Leistungsüberwachung
Das Beispiel in diesem Abschnitt zeigt Ihnen, wie Sie eine Funktion für Leistungsschwellenwertwarnungen schreiben.
In diesem Beispiel exportiert die Funktion onThresholdAlertPublished
eine Cloud-Funktion, die auf Ereignisse des Typs PerformanceEvent<ThresholdAlertPayload>
lauscht, die jedes Mal gesendet werden, wenn eine Leistungsschwellenwertwarnung ausgelöst wird:
exports.postperformancealerttodiscord = onThresholdAlertPublished( async (event) => {
Die Funktion analysiert dann das zurückgegebene Ereignisobjekt, analysiert nützliche Informationen aus der Ereignisnutzlast und erstellt eine Nachricht, die an den Discord-Kanal gesendet wird:
// 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} `;
Schließlich sendet die Funktion die konstruierte Nachricht über eine HTTP-Anforderung an 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); }
Informationen zu allen Leistungswarnungsereignissen, die Sie erfassen können, finden Sie in der Referenzdokumentation für Leistungsüberwachungswarnungen .
Behandeln Sie ein App Distribution-Warnereignis
Das Beispiel in diesem Abschnitt zeigt Ihnen, wie Sie eine Funktion für neue Tester-iOS-Gerätewarnungen schreiben.
In diesem Beispiel exportiert die Funktion onNewTesterIosDevicePublished
eine Cloud-Funktion, die auf Ereignisse des Typs AppDistributionEvent<NewTesterDevicePayload>
lauscht, die jedes Mal gesendet werden, wenn ein Tester ein neues iOS-Gerät registriert. Wenn ein neues iOS-Gerät registriert wird, müssen Sie Ihr Bereitstellungsprofil mit der UDID dieses Geräts aktualisieren und die App dann neu verteilen.
exports.postnewduuidtodiscord = onNewTesterIosDevicePublished(async (event) => {
Die Funktion analysiert dann die zurückgegebenen, nützlichen Informationen aus der Ereignisnutzlast und erstellt eine Nachricht, die an den Discord-Kanal gesendet wird:
// 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} `;
Schließlich sendet die Funktion die konstruierte Nachricht über eine HTTP-Anforderung an 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); }
Um mehr über alle App-Verteilungswarnungsereignisse zu erfahren, die Sie erfassen können, gehen Sie zur Referenzdokumentation für App-Verteilungswarnungen .
Informationen zur Verwendung einer Funktion, die durch eine In-App-Feedback-Firebase-Warnung von App Distribution ausgelöst wird, finden Sie unter In-App-Feedback an Jira senden .