Firebase, birçok farklı proje ve uygulama yönetimi için uyarılar sağlar etkinlikler. Aşağıda, Firebase'in size bu özelliği gönderebileceği durumlara ilişkin birkaç örnek etkinlik verilmiştir: Uyarı türü:
- Crashlytics için, uygulamanızın kilitlenmelerine neden olabilir.
- Performance Monitoring için, uygulamanızın başlatma süresi eşik değerini belirleyin.
- App Distribution için, test kullanıcılarınızdan biri yeni bir iOS kaydederse sizi uyarabiliriz olanak tanır.
Uyarıya ve proje tarafından ayarlanan tercihlere bağlı olarak üye, Firebase, bu tür uyarıları Firebase konsolunda gösterir veya bu uyarıları gönderir alır.
Bu sayfada Cloud Functions for Firebase (2. nesil) sisteminde işlevlerin nasıl yazılacağı açıklanmaktadır uyarı etkinliklerini ele alan.
Nasıl çalışır?
Şu kaynaklar tarafından yayınlanan uyarı etkinliklerine yanıt olarak işlevleri tetikleyebilirsiniz:
- App Distribution uyarı etkinliğini işleme
- Crashlytics uyarı etkinliğini işleme
- Performance Monitoring uyarı etkinliğini işleme
Tipik bir yaşam döngüsünde, bir uyarı etkinliği tarafından tetiklenen bir işlev takip etmek için:
- Firebase'den belirli bir uyarı türünün yayınlanmasını dinler/bekler.
- Uyarı yayınlandığında tetiklenir ve etkinlik yükünü aldığında etkinlikle ilgili belirli bilgileri içerir.
- Etkinlik yükünü işlemek için işlevinizin kodunu çağırır.
Uyarı etkinliklerinde bir işlevi tetikleme
Aşağıdaki özelliklere sahip bir işlev yazmak için firebase-functions/v2/alerts
alt paketini kullanın:
uyarı etkinliklerini ele alır. Aşağıdaki ürüne özgü örneklerde
bir işlevin Discord kanalına mesaj yayınlamak için webhook kullandığı iş akışı
söz konusu ürünle ilgili Firebase'den bir uyarı yayınlandığında.
Crashlytics uyarı etkinliğini işleme
Aşağıdaki Crashlytics örneğinde Cloud Functions for Firebase ürününü şu amaçlarla kullanabilirsiniz: yeni bir önemli kilitlenme sorunuyla ilgili uyarı etkinliğini ele alma. Bu işlev, uyarıları bilgileri içeren bir e-posta alırsınız.
İşlev, Firebase'e karşılık gelen etkinliği işler önemli yeni bir sorun yayınlanıyor:
Node.js
exports.postfatalissuetodiscord = onNewFatalIssuePublished(async (event) => {
Python
@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."""
Ardından, fonksiyon döndürülen etkinlik nesnesini ayrıştırır. etkinlik yükünden yararlı bilgileri ayrıştırmak ve Discord kanalında paylaşın:
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}\`
`;
Python
# 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()
Son olarak işlev, oluşturulan mesajı HTTP isteğidir:
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);
}
Python
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()
Yakalayabileceğiniz tüm Crashlytics uyarı etkinlikleri hakkında bilgi edinmek için şu sayfaya gidin: referans belgeleri, Crashlytics uyarı.
Performance Monitoring uyarı etkinliğini işleme
Bu örnekte, performans eşiği uyarı etkinliklerini işleyen bir işlev dışa aktarılır:
Node.js
exports.postperformancealerttodiscord = onThresholdAlertPublished(
async (event) => {
Python
@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."""
İşlev, döndürülen etkinlik nesnesini ayrıştırarak yararlı bilgileri ayrıştırır. ve Discord'da yayınlamak üzere bir mesaj oluşturmak, kanal:
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}
`;
Python
# 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()
Son olarak, işlev oluşturulan mesajı bir HTTP üzerinden Discord'a gönderir istek:
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);
}
Python
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()
Yakalayabileceğiniz tüm performans uyarısı etkinlikleri hakkında bilgi edinmek için referans belgeleme Performance Monitoring uyarı.
App Distribution uyarı etkinliğini işleme
Bu bölümdeki örnekte, yeni test kullanıcısı iOS için nasıl işlev yazılacağı gösterilmektedir cihaz uyarıları.
Bu örnekte, işlev her bir çalıştırıldığında gönderilen test kullanıcısı yeni bir iOS cihazı kaydeder. Yeni bir iOS cihazı kaydedildiğinde: temel hazırlık profilinizi söz konusu cihazın UDID'si ile güncelleyin ve ardından yeniden dağıtmasını sağlar.
Node.js
exports.postnewduuidtodiscord = onNewTesterIosDevicePublished(async (event) => {
Python
@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."""
Daha sonra, fonksiyon döndürülen nesneyi ayrıştırarak etkinlikteki faydalı bilgileri ayrıştırır. ve Discord kanalına gönderilecek bir mesaj oluşturma:
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}
`;
Python
# 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()
Son olarak, işlev oluşturulan mesajı bir HTTP üzerinden Discord'a gönderir istek:
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);
}
Python
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()
Yakalayabileceğiniz tüm App Distribution uyarı etkinlikleri hakkında bilgi edinmek için şu sayfaya gidin: referans belgeleri, App Distribution uyarı.
tarafından tetiklenen bir işlevin nasıl kullanılacağını App Distribution tarafından gönderilen uygulama içi geri bildirim Firebase uyarısı, Jira'ya uygulama içi geri bildirim gönderme konusunu inceleyin.