You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

能否在通知服务扩展等应用扩展中使用Crashlytics?

Crashlytics 通知服务扩展集成说明

可行性结论

可以在通知服务扩展中正常运行最新版Firebase Crashlytics,旧版独立Crashlytics SDK确实不支持扩展场景,但2021年之后的Firebase Crashlytics版本已经原生支持各类iOS应用扩展集成。

最新分步集成步骤

  • 确保项目集成的Firebase Crashlytics版本 >= 8.0.0,低于该版本的SDK需要先升级
  • 打开Xcode项目,选中通知服务扩展对应的Target,进入「General」面板,在「Frameworks and Libraries」列表中添加FirebaseCrashlytics依赖,配置为「Embed & Sign」
  • 在扩展的入口方法中添加SDK初始化代码,放在所有业务逻辑之前:
    Objective-C 代码示例
    #import <Firebase/Firebase.h>
    
    - (void)didReceiveNotificationRequest:(UNNotificationRequest *)request withContentHandler:(void (^)(UNNotificationContent * _Nonnull))contentHandler {
        if ([FIRApp defaultApp] == nil) {
            [FIRApp configure];
        }
        [FIRCrashlytics crashlytics].crashlyticsCollectionEnabled = YES;
        // 原有业务逻辑
    }
    
    Swift 代码示例
    import Firebase
    
    override func didReceive(_ request: UNNotificationRequest, withContentHandler contentHandler: @escaping (UNNotificationContent) -> Void) {
        if FirebaseApp.app() == nil {
            FirebaseApp.configure()
        }
        Crashlytics.crashlytics().setCrashlyticsCollectionEnabled(true)
        // 原有业务逻辑
    }
    
  • 给扩展Target配置编译上传脚本:进入扩展Target的「Build Phases」面板,新建「Run Script」阶段,填入脚本内容 "${PODS_ROOT}/FirebaseCrashlytics/run",并在输入文件栏添加以下两行配置:
    ${DWARF_DSYM_FOLDER_PATH}/${DWARF_DSYM_FILE_NAME}/Contents/Resources/DWARF/${TARGET_NAME}
    $(SRCROOT)/$(BUILT_PRODUCTS_DIR)/$(INFOPLIST_PATH)
    
  • 功能验证:在扩展的业务逻辑中主动加入测试崩溃代码,触发远程通知唤起扩展执行崩溃,随后打开主应用,崩溃日志会在数分钟内同步到Firebase控制台,可通过Bundle ID筛选区分主应用和扩展的崩溃记录

崩溃数据上报逻辑说明

不需要开发者手动配置App Group共享组来同步崩溃数据。Crashlytics SDK会自动将扩展产生的崩溃日志存储在系统级公共缓存目录,主应用启动后,内置的Crashlytics SDK会自动扫描所有关联扩展生成的未上报崩溃日志,统一上传到项目对应的后台控制台。

内容的提问来源于stack exchange,提问作者Piepants

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 07:15:04