Crashlytics日志是否包含应用后台执行自动重启后的新增日志?
关于Fabric崩溃日志后台追加记录的问题解答
嘿,这个情况确实是属实的,我来给你拆解下背后的逻辑:
常规日志上传逻辑:正如Fabric文档所说,默认情况下崩溃日志会先存在设备本地,只有当用户手动重启App时,Crashlytics才会触发日志上传流程,这是最常见的场景。
后台重启的特殊情况:当App因为后台任务(比如你提到的这两个系统回调:
- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo fetchCompletionHandler:(void (^)(UIBackgroundFetchResult))completionHandler - (void)application:(UIApplication *)application performFetchWithCompletionHandler:(void (^)(UIBackgroundFetchResult))completionHandler)被系统唤醒重启时,App的初始化流程依然会被触发——Crashlytics在这个时候会检查本地是否有未上传的崩溃日志,同时后台任务执行过程中产生的所有新日志(包括这两个回调里的操作日志),都会被追加到之前的崩溃记录中。如果此时设备网络状态允许,甚至会直接在后台完成日志上传,不需要等用户手动打开App。
为什么会出现这种情况:系统触发的后台重启本质上也是App的一次启动(只是处于后台状态),Crashlytics的初始化代码会照常运行,它会自动关联遗留的崩溃上下文,把后续后台任务的日志也整合进去,这就导致你在崩溃日志里看到了这些后台函数的记录。
内容的提问来源于stack exchange,提问作者DeDMakar
相关产品推荐
相关产品推荐

