Firebase 会针对各种项目和应用管理事件提供提醒。下方列出了一些示例提醒事件:
- 对于 Crashlytics,我们可以在应用的崩溃次数剧增时向您发送提醒。
- 对于 Performance Monitoring,我们可以在应用的启动时间超过配置的阈值时向您发送提醒。
- 对于 App Distribution,我们可以在有测试人员注册了新的 iOS 设备时向您发送提醒。
根据项目成员设定的提醒和偏好设置,Firebase 可能会在 Firebase 控制台中显示此类提醒,也可能会通过电子邮件发送提醒。
本页介绍了如何编写用于处理提醒事件的函数。
工作原理
您可以触发函数来响应以下来源发出的提醒事件:
在典型生命周期中,提醒事件触发的函数会执行以下操作:
- 监听/等待从 Firebase 发出特定类型的提醒。
- 在有提醒发出时触发,并接收包含事件特定信息的事件载荷。
- 调用函数的代码来处理事件载荷。
在发生提醒事件时触发函数
使用 firebase-functions/v2/alerts
子软件包编写用于处理提醒事件的函数。以下产品专用示例演示了一个工作流,在 Firebase 发出有关该产品的提醒时,函数会使用网络钩子将消息发布到一个 Discord 频道。
处理 Crashlytics 提醒事件
在下面的 Crashlytics 示例中,您将使用 Cloud Functions for Firebase 来处理有关新发生的严重崩溃问题的提醒事件。该函数会将消息中的提醒信息发布到一个 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 提醒参考文档。
处理 Performance Monitoring 提醒事件
本部分中的示例展示了如何编写针对性能阈值提醒的函数。
在此示例中,onThresholdAlertPublished
函数会导出一个 Cloud Functions 函数,用于监听 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); }
如需了解您可以捕获的所有性能提醒事件,请参阅 Performance Monitoring 提醒参考文档。
处理 App Distribution 提醒事件
本部分中的示例展示了如何编写针对新注册的测试人员 iOS 设备提醒的函数。
在此示例中,onNewTesterIosDevicePublished
函数会导出一个 Cloud Functions 函数,用于监听 AppDistributionEvent<NewTesterDevicePayload>
类型的事件,每当有测试人员注册新的 iOS 设备时,系统都会发送该类型的事件。当有测试人员注册新的 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 提醒参考文档。
如需了解如何使用由 App Distribution 中的 Firebase 应用内反馈提醒触发的函数,请参阅向 Jira 发送应用内反馈。