mirror of
https://github.com/firebase/firebase-ios-sdk
synced 2026-11-10 22:45:59 +05:45
* Use trimmedURLString for logging * Update CHANGELOG.md * Move nanopb decode methods to test util * Update Package.swift * Incorporate comments
162 lines
7.1 KiB
Objective-C
162 lines
7.1 KiB
Objective-C
// 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
|