AutorÃa | Ultima modificación | Ver Log |
// Copyright 2021 Google LLC//// Licensed under the Apache License, Version 2.0 (the "License");// you may not use this file except in compliance with the License.// You may obtain a copy of the License at//// http://www.apache.org/licenses/LICENSE-2.0//// Unless required by applicable law or agreed to in writing, software// distributed under the License is distributed on an "AS IS" BASIS,// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.// See the License for the specific language governing permissions and// limitations under the License.#import <Foundation/Foundation.h>NS_ASSUME_NONNULL_BEGIN@class FIRCLSManagerData;@class FIRCLSReportUploader;@class FIRCLSDataCollectionToken;@class FIRCrashlyticsReport;FOUNDATION_EXPORT NSUInteger const FIRCLSMaxUnsentReports;@interface FIRCLSExistingReportManager : NSObject/*** Returns the number of unsent reports on the device, ignoring empty reports in* the active folder, and ignoring any reports in "processing" or "prepared".** In the past, this would count reports in the processed or prepared* folders. This has been changed because reports in those paths have already* been cleared for upload, so there isn't any point in asking for permission* or possibly spamming end-users if a report gets stuck.** The tricky part is, customers will NOT be alerted in `checkForUnsentReports`* for reports in these paths, but when they choose `sendUnsentReports` / enable data* collection, reports in those directories will be re-managed. This should be ok and* just an edge case because reports should only be in processing or prepared for a split second as* they do on-device symbolication and get converted into a GDTEvent. After a report is handed off* to GoogleDataTransport, it is uploaded regardless of Crashlytics data collection.*/@property(nonatomic, readonly) NSUInteger unsentReportsCount;/*** This value needs to stay in sync with `numUnsentReports`, so if there is > 0 `numUnsentReports`,* `newestUnsentReport` needs to return a value. Otherwise it needs to return nil.** `FIRCLSContext` needs to be initialized before the `CrashlyticsReport` is instantiated.*/@property(nonatomic, readonly) FIRCrashlyticsReport *_Nullable newestUnsentReport;- (instancetype)initWithManagerData:(FIRCLSManagerData *)managerDatareportUploader:(FIRCLSReportUploader *)reportUploader;- (instancetype)init NS_UNAVAILABLE;+ (instancetype)new NS_UNAVAILABLE;/*** This is important to call once, early in startup, before the* new report for this run of the app has been created. Any* reports in `ExistingReportManager` will be uploaded or deleted* and we don't want to do that for the current run of the app.** If there are over MAX_UNSENT_REPORTS valid reports, this will delete them.** This methods is slow and should be called only once.*/- (void)collectExistingReports;/*** This is the side-effect of calling `deleteUnsentReports`, or collect_reports setting* being false.*/- (void)deleteUnsentReports;- (void)sendUnsentReportsWithToken:(FIRCLSDataCollectionToken *)dataCollectionTokenasUrgent:(BOOL)urgent;@endNS_ASSUME_NONNULL_END