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 <TargetConditionals.h>
#if __has_include("CoreTelephony/CTTelephonyNetworkInfo.h") && !TARGET_OS_MACCATALYST
#define TARGET_HAS_MOBILE_CONNECTIVITY
#import <CoreTelephony/CTTelephonyNetworkInfo.h>
#endif
#import "FirebasePerformance/Sources/AppActivity/FPRTraceBackgroundActivityTracker.h"
#import "FirebasePerformance/Sources/Instrumentation/FPRNetworkTrace.h"
#import "FirebasePerformance/Sources/Public/FirebasePerformance/FIRTrace.h"
#import "FirebasePerformance/Sources/Protogen/nanopb/perf_metric.nanopb.h"
/**nanopb struct of encoded NSDictionary<NSString *, NSString *>.*/
typedef struct {
pb_bytes_array_t* _Nonnull key;
pb_bytes_array_t* _Nonnull value;
} StringToStringMap;
/**nanopb struct of encoded NSDictionary<NSString *, NSNumber *>.*/
typedef struct {
pb_bytes_array_t* _Nonnull key;
bool has_value;
int64_t value;
} StringToNumberMap;
/** Callocs a pb_bytes_array and copies the given NSData bytes into the bytes array.
*
* @note Memory needs to be free manually, through pb_free or pb_release.
* @param data The data to copy into the new bytes array.
* @return pb_byte array
*/
extern pb_bytes_array_t* _Nullable FPREncodeData(NSData* _Nonnull data);
/** Callocs a pb_bytes_array and copies the given NSString's bytes into the bytes array.
*
* @note Memory needs to be free manually, through pb_free or pb_release.
* @param string The string to encode as pb_bytes.
* @return pb_byte array
*/
extern pb_bytes_array_t* _Nullable FPREncodeString(NSString* _Nonnull string);
/** Callocs a nanopb StringToStringMap and copies the given NSDictionary bytes into the
* StringToStringMap.
*
* @param dict The dict to copy into the new StringToStringMap.
* @return A reference to StringToStringMap
*/
extern StringToStringMap* _Nullable FPREncodeStringToStringMap(NSDictionary* _Nullable dict);
/** Callocs a nanopb StringToNumberMap and copies the given NSDictionary bytes into the
* StringToStringMap.
*
* @param dict The dict to copy into the new StringToNumberMap.
* @return A reference to StringToNumberMap
*/
extern StringToNumberMap* _Nullable FPREncodeStringToNumberMap(NSDictionary* _Nullable dict);
/** Creates a new firebase_perf_v1_PerfMetric struct populated with system metadata.
* @param appID The Google app id to put into the message
* @return A firebase_perf_v1_PerfMetric struct.
*/
NS_EXTENSION_UNAVAILABLE("Firebase Performance is not supported for extensions.")
extern firebase_perf_v1_PerfMetric FPRGetPerfMetricMessage(NSString* _Nonnull appID);
/** Creates a new firebase_perf_v1_ApplicationInfo struct populated with system metadata.
* @return A firebase_perf_v1_ApplicationInfo struct.
*/
NS_EXTENSION_UNAVAILABLE("Firebase Performance is not supported for extensions.")
extern firebase_perf_v1_ApplicationInfo FPRGetApplicationInfoMessage(void);
/** Converts the FIRTrace object to a firebase_perf_v1_TraceMetric struct.
* @return A firebase_perf_v1_TraceMetric struct.
*/
NS_EXTENSION_UNAVAILABLE("Firebase Performance is not supported for extensions.")
extern firebase_perf_v1_TraceMetric FPRGetTraceMetric(FIRTrace* _Nonnull trace);
/** Converts the FPRNetworkTrace object to a firebase_perf_v1_NetworkRequestMetric struct.
* @return A firebase_perf_v1_NetworkRequestMetric struct.
*/
NS_EXTENSION_UNAVAILABLE("Firebase Performance is not supported for extensions.")
extern firebase_perf_v1_NetworkRequestMetric FPRGetNetworkRequestMetric(
FPRNetworkTrace* _Nonnull trace);
/** Converts the gaugeData array object to a firebase_perf_v1_GaugeMetric struct.
* @return A firebase_perf_v1_GaugeMetric struct.
*/
extern firebase_perf_v1_GaugeMetric FPRGetGaugeMetric(NSArray* _Nonnull gaugeData,
NSString* _Nonnull sessionId);
/** Converts the FPRTraceState to a firebase_perf_v1_ApplicationProcessState struct.
* @return A firebase_perf_v1_ApplicationProcessState struct.
*/
extern firebase_perf_v1_ApplicationProcessState FPRApplicationProcessState(FPRTraceState state);
/** Populate a firebase_perf_v1_PerfMetric object with the given firebase_perf_v1_ApplicationInfo.
*
* @param perfMetric The reference to a firebase_perf_v1_PerfMetric object to be populated.
* @param appInfo The firebase_perf_v1_ApplicationInfo object that will be added to
* firebase_perf_v1_PerfMetric.
*/
extern void FPRSetApplicationInfo(firebase_perf_v1_PerfMetric* _Nonnull perfMetric,
firebase_perf_v1_ApplicationInfo appInfo);
/** Populate a firebase_perf_v1_PerfMetric object with the given firebase_perf_v1_TraceMetric.
*
* @param perfMetric The reference to firebase_perf_v1_PerfMetric to be populated.
* @param traceMetric The firebase_perf_v1_TraceMetric object that will be added to
* firebase_perf_v1_PerfMetric.
*/
extern void FPRSetTraceMetric(firebase_perf_v1_PerfMetric* _Nonnull perfMetric,
firebase_perf_v1_TraceMetric traceMetric);
/** Populate a firebase_perf_v1_PerfMetric object with the given
* firebase_perf_v1_NetworkRequestMetric.
*
* @param perfMetric The reference to a firebase_perf_v1_PerfMetric object to be populated.
* @param networkMetric The firebase_perf_v1_NetworkRequestMetric object that will be added to
* firebase_perf_v1_PerfMetric.
*/
extern void FPRSetNetworkRequestMetric(firebase_perf_v1_PerfMetric* _Nonnull perfMetric,
firebase_perf_v1_NetworkRequestMetric networkMetric);
/** Populate a firebase_perf_v1_PerfMetric object with the given firebase_perf_v1_GaugeMetric.
*
* @param perfMetric The reference to a firebase_perf_v1_PerfMetric object to be populated.
* @param gaugeMetric The firebase_perf_v1_GaugeMetric object that will be added to
* firebase_perf_v1_PerfMetric.
*/
extern void FPRSetGaugeMetric(firebase_perf_v1_PerfMetric* _Nonnull perfMetric,
firebase_perf_v1_GaugeMetric gaugeMetric);
/** Populate a firebase_perf_v1_PerfMetric object with the given
* firebase_perf_v1_ApplicationProcessState.
*
* @param perfMetric The reference to a firebase_perf_v1_PerfMetric object to be populated.
* @param state The firebase_perf_v1_ApplicationProcessState object that will be added to
* firebase_perf_v1_PerfMetric.
*/
extern void FPRSetApplicationProcessState(firebase_perf_v1_PerfMetric* _Nonnull perfMetric,
firebase_perf_v1_ApplicationProcessState state);
#ifdef TARGET_HAS_MOBILE_CONNECTIVITY
/** Obtain a CTTelephonyNetworkInfo object to determine device network attributes.
* @return CTTelephonyNetworkInfo object.
*/
extern CTTelephonyNetworkInfo* _Nullable FPRNetworkInfo(void);
#endif