Firebase cung cấp cảnh báo cho một loạt các sự kiện quản lý ứng dụng và dự án. Dưới đây là một số sự kiện ví dụ về thời điểm Firebase có thể gửi cho bạn loại cảnh báo này:
- Đối với Crashlytics, chúng tôi có thể thông báo cho bạn nếu ứng dụng của bạn có số lượng sự cố gia tăng đáng kể.
- Đối với Giám sát hiệu suất, chúng tôi có thể thông báo cho bạn nếu thời gian khởi động ứng dụng của bạn vượt quá ngưỡng đã định cấu hình.
- Đối với Phân phối ứng dụng, chúng tôi có thể thông báo cho bạn nếu một trong những người thử nghiệm của bạn đăng ký một thiết bị iOS mới.
Tùy thuộc vào cảnh báo và tùy chọn do thành viên dự án đặt , Firebase hiển thị các loại cảnh báo này trong bảng điều khiển Firebase hoặc gửi chúng qua email.
Trang này mô tả cách viết các hàm trong Hàm đám mây cho Firebase (thế hệ thứ 2) để xử lý các sự kiện cảnh báo.
Làm thế nào nó hoạt động?
Bạn có thể kích hoạt các chức năng để phản hồi các sự kiện cảnh báo do các nguồn này phát ra:
- Xử lý sự kiện cảnh báo Phân phối ứng dụng
- Xử lý sự kiện cảnh báo Crashlytics
- Xử lý sự kiện cảnh báo Giám sát hiệu suất
Trong một vòng đời điển hình, một chức năng được kích hoạt bởi một sự kiện cảnh báo sẽ thực hiện như sau:
- Lắng nghe/chờ một loại cảnh báo cụ thể được phát ra từ Firebase.
- Kích hoạt khi cảnh báo được phát ra và nhận tải trọng sự kiện chứa thông tin cụ thể về sự kiện.
- Gọi mã chức năng của bạn để xử lý tải trọng sự kiện.
Kích hoạt một chức năng trên các sự kiện cảnh báo
Sử dụng gói con firebase-functions/v2/alerts
để viết hàm xử lý các sự kiện cảnh báo. Các ví dụ cụ thể về sản phẩm sau đây minh họa quy trình làm việc trong đó một chức năng sử dụng webhook để đăng thông báo lên kênh Discord khi có cảnh báo cho sản phẩm đó được phát ra từ Firebase.
Xử lý sự kiện cảnh báo Crashlytics
Đối với ví dụ về Crashlytics sau đây, bạn sử dụng Chức năng đám mây cho Firebase để xử lý sự kiện cảnh báo về sự cố sự cố nghiêm trọng mới. Chức năng này đăng thông tin cảnh báo trong tin nhắn lên kênh Discord.
Hàm lắng nghe sự kiện tương ứng với việc Firebase xuất bản một vấn đề nghiêm trọng mới:
Node.js
exports.postfatalissuetodiscord = onNewFatalIssuePublished(async (event) => {
Python (xem trước)
@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."""
Sau đó, hàm này sẽ phân tích cú pháp đối tượng sự kiện được trả về, phân tích cú pháp thông tin hữu ích từ tải trọng sự kiện và tạo một thông báo để đăng lên kênh Discord:
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 (xem trước)
# 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()
Cuối cùng, hàm gửi thông báo đã tạo tới Discord thông qua yêu cầu HTTP:
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 (xem trước)
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()
Để tìm hiểu về tất cả các sự kiện cảnh báo Crashlytics mà bạn có thể ghi lại, hãy truy cập tài liệu tham khảo về cảnh báo Crashlytics .
Xử lý sự kiện cảnh báo Giám sát hiệu suất
Ví dụ này xuất một hàm lắng nghe các sự kiện cảnh báo ngưỡng hiệu suất:
Node.js
exports.postperformancealerttodiscord = onThresholdAlertPublished(
async (event) => {
Python (xem trước)
@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."""
Sau đó, hàm này sẽ phân tích cú pháp đối tượng sự kiện được trả về, phân tích cú pháp thông tin hữu ích từ tải trọng sự kiện và tạo một thông báo để đăng lên kênh Discord:
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 (xem trước)
# 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()
Cuối cùng, hàm gửi thông báo đã tạo tới Discord thông qua yêu cầu HTTP:
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 (xem trước)
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()
Để tìm hiểu về tất cả các sự kiện cảnh báo hiệu suất mà bạn có thể nắm bắt, hãy chuyển đến tài liệu tham khảo về cảnh báo Giám sát hiệu suất .
Xử lý sự kiện cảnh báo Phân phối ứng dụng
Ví dụ trong phần này chỉ cho bạn cách viết hàm cho cảnh báo thiết bị iOS mới của người thử nghiệm.
Trong ví dụ này, hàm lắng nghe các sự kiện được gửi mỗi khi người thử nghiệm đăng ký một thiết bị iOS mới. Khi một thiết bị iOS mới được đăng ký, bạn cần cập nhật hồ sơ cung cấp của mình với UDID của thiết bị đó rồi phân phối lại ứng dụng.
Node.js
exports.postnewduuidtodiscord = onNewTesterIosDevicePublished(async (event) => {
Python (xem trước)
@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."""
Sau đó, hàm sẽ phân tích đối tượng được trả về, phân tích thông tin hữu ích từ tải trọng sự kiện và tạo một thông báo để đăng lên kênh Discord:
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 (xem trước)
# 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()
Cuối cùng, hàm gửi thông báo đã tạo tới Discord thông qua yêu cầu HTTP:
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 (xem trước)
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()
Để tìm hiểu về tất cả các sự kiện cảnh báo Phân phối ứng dụng mà bạn có thể nắm bắt, hãy chuyển đến tài liệu tham khảo về cảnh báo Phân phối ứng dụng .
Để tìm hiểu cách sử dụng chức năng được kích hoạt bởi cảnh báo Firebase phản hồi trong ứng dụng từ Phân phối ứng dụng , hãy xem Gửi phản hồi trong ứng dụng tới Jira .