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 .