[WIP] firebase init Error

This commit is contained in:
2024-08-02 20:09:59 +08:00
commit b77fd9f498
7087 changed files with 1466846 additions and 0 deletions

View File

@@ -0,0 +1,139 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>AvailableLibraries</key>
<array>
<dict>
<key>BinaryPath</key>
<string>GoogleDataTransport.framework/Versions/A/GoogleDataTransport</string>
<key>LibraryIdentifier</key>
<string>macos-arm64_x86_64</string>
<key>LibraryPath</key>
<string>GoogleDataTransport.framework</string>
<key>SupportedArchitectures</key>
<array>
<string>arm64</string>
<string>x86_64</string>
</array>
<key>SupportedPlatform</key>
<string>macos</string>
</dict>
<dict>
<key>BinaryPath</key>
<string>GoogleDataTransport.framework/GoogleDataTransport</string>
<key>LibraryIdentifier</key>
<string>watchos-arm64_arm64_32</string>
<key>LibraryPath</key>
<string>GoogleDataTransport.framework</string>
<key>SupportedArchitectures</key>
<array>
<string>arm64</string>
<string>arm64_32</string>
</array>
<key>SupportedPlatform</key>
<string>watchos</string>
</dict>
<dict>
<key>BinaryPath</key>
<string>GoogleDataTransport.framework/GoogleDataTransport</string>
<key>LibraryIdentifier</key>
<string>ios-arm64</string>
<key>LibraryPath</key>
<string>GoogleDataTransport.framework</string>
<key>SupportedArchitectures</key>
<array>
<string>arm64</string>
</array>
<key>SupportedPlatform</key>
<string>ios</string>
</dict>
<dict>
<key>BinaryPath</key>
<string>GoogleDataTransport.framework/GoogleDataTransport</string>
<key>LibraryIdentifier</key>
<string>ios-arm64_x86_64-simulator</string>
<key>LibraryPath</key>
<string>GoogleDataTransport.framework</string>
<key>SupportedArchitectures</key>
<array>
<string>arm64</string>
<string>x86_64</string>
</array>
<key>SupportedPlatform</key>
<string>ios</string>
<key>SupportedPlatformVariant</key>
<string>simulator</string>
</dict>
<dict>
<key>BinaryPath</key>
<string>GoogleDataTransport.framework/Versions/A/GoogleDataTransport</string>
<key>LibraryIdentifier</key>
<string>ios-arm64_x86_64-maccatalyst</string>
<key>LibraryPath</key>
<string>GoogleDataTransport.framework</string>
<key>SupportedArchitectures</key>
<array>
<string>arm64</string>
<string>x86_64</string>
</array>
<key>SupportedPlatform</key>
<string>ios</string>
<key>SupportedPlatformVariant</key>
<string>maccatalyst</string>
</dict>
<dict>
<key>BinaryPath</key>
<string>GoogleDataTransport.framework/GoogleDataTransport</string>
<key>LibraryIdentifier</key>
<string>watchos-arm64_x86_64-simulator</string>
<key>LibraryPath</key>
<string>GoogleDataTransport.framework</string>
<key>SupportedArchitectures</key>
<array>
<string>arm64</string>
<string>x86_64</string>
</array>
<key>SupportedPlatform</key>
<string>watchos</string>
<key>SupportedPlatformVariant</key>
<string>simulator</string>
</dict>
<dict>
<key>BinaryPath</key>
<string>GoogleDataTransport.framework/GoogleDataTransport</string>
<key>LibraryIdentifier</key>
<string>tvos-arm64_x86_64-simulator</string>
<key>LibraryPath</key>
<string>GoogleDataTransport.framework</string>
<key>SupportedArchitectures</key>
<array>
<string>arm64</string>
<string>x86_64</string>
</array>
<key>SupportedPlatform</key>
<string>tvos</string>
<key>SupportedPlatformVariant</key>
<string>simulator</string>
</dict>
<dict>
<key>BinaryPath</key>
<string>GoogleDataTransport.framework/GoogleDataTransport</string>
<key>LibraryIdentifier</key>
<string>tvos-arm64</string>
<key>LibraryPath</key>
<string>GoogleDataTransport.framework</string>
<key>SupportedArchitectures</key>
<array>
<string>arm64</string>
</array>
<key>SupportedPlatform</key>
<string>tvos</string>
</dict>
</array>
<key>CFBundlePackageType</key>
<string>XFWK</string>
<key>XCFrameworkFormatVersion</key>
<string>1.0</string>
</dict>
</plist>

View File

@@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: 23e11f42b77384c969cadb27288b9c87
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: ca5d07bbb5abd4f91b4f55ed85f48a4f
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,68 @@
fileFormatVersion: 2
guid: e0963a276e1d94830a98491242cc5da5
PluginImporter:
externalObjects: {}
serializedVersion: 2
iconMap: {}
executionOrder: {}
defineConstraints: []
isPreloaded: 0
isOverridable: 1
isExplicitlyReferenced: 0
validateReferences: 1
platformData:
- first:
: Any
second:
enabled: 0
settings:
Exclude Android: 1
Exclude Editor: 1
Exclude Linux64: 1
Exclude OSXUniversal: 1
Exclude Win: 1
Exclude Win64: 1
Exclude iOS: 0
- first:
Any:
second:
enabled: 0
settings: {}
- first:
Editor: Editor
second:
enabled: 0
settings:
DefaultValueInitialized: true
- first:
Standalone: Linux64
second:
enabled: 0
settings:
CPU: None
- first:
Standalone: OSXUniversal
second:
enabled: 0
settings:
CPU: None
- first:
Standalone: Win
second:
enabled: 0
settings:
CPU: None
- first:
Standalone: Win64
second:
enabled: 0
settings:
CPU: None
- first:
iPhone: iOS
second:
enabled: 1
settings: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: 5f2f38dab978644e8bc3768353fadbb8
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 6975b5d96c06740bea08a0b5d837c56a
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: 45c175239628d41589e9cf9543519ad9
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,30 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>NSPrivacyTracking</key>
<false/>
<key>NSPrivacyTrackingDomains</key>
<array>
</array>
<key>NSPrivacyCollectedDataTypes</key>
<array>
<dict>
<key>NSPrivacyCollectedDataType</key>
<string>NSPrivacyCollectedDataTypeOtherDiagnosticData</string>
<key>NSPrivacyCollectedDataTypeLinked</key>
<false/>
<key>NSPrivacyCollectedDataTypeTracking</key>
<false/>
<key>NSPrivacyCollectedDataTypePurposes</key>
<array>
<string>NSPrivacyCollectedDataTypePurposeAnalytics</string>
</array>
</dict>
</array>
<key>NSPrivacyAccessedAPITypes</key>
<array>
</array>
</dict>
</plist>

View File

@@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: 3b0dc34257b9042c4b150b4dfea7be66
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: b0b04fca19be746b191d9e4f6270990d
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,66 @@
/*
* Copyright 2018 Google
*
* 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
/** This class manages the device clock and produces snapshots of the current time. */
@interface GDTCORClock : NSObject <NSSecureCoding>
/** The wallclock time, UTC, in milliseconds. */
@property(nonatomic, readonly) int64_t timeMillis;
/** The offset from UTC in seconds. */
@property(nonatomic, readonly) int64_t timezoneOffsetSeconds;
/** The kernel boot time when this clock was created in nanoseconds. */
@property(nonatomic, readonly) int64_t kernelBootTimeNanoseconds;
/** The device uptime when this clock was created in nanoseconds. */
@property(nonatomic, readonly) int64_t uptimeNanoseconds;
@property(nonatomic, readonly) int64_t kernelBootTime DEPRECATED_MSG_ATTRIBUTE(
"Please use `kernelBootTimeNanoseconds` instead");
@property(nonatomic, readonly)
int64_t uptime DEPRECATED_MSG_ATTRIBUTE("Please use `uptimeNanoseconds` instead");
/** Creates a GDTCORClock object using the current time and offsets.
*
* @return A new GDTCORClock object representing the current time state.
*/
+ (instancetype)snapshot;
/** Creates a GDTCORClock object representing a time in the future, relative to now.
*
* @param millisInTheFuture The millis in the future from now this clock should represent.
* @return An instance representing a future time.
*/
+ (instancetype)clockSnapshotInTheFuture:(uint64_t)millisInTheFuture;
/** Compares one clock with another, returns YES if the caller is after the parameter.
*
* @return YES if the calling clock's time is after the given clock's time.
*/
- (BOOL)isAfter:(GDTCORClock *)otherClock;
/** Returns value of `uptime` property in milliseconds. */
- (int64_t)uptimeMilliseconds;
@end
NS_ASSUME_NONNULL_END

View File

@@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: 18df9aa6acb2f4d4ea5ab8297ceacfd0
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,144 @@
/*
* Copyright 2018 Google
*
* 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>
/** The current logging level. This value and higher will be printed. Declared as volatile to make
* getting and setting atomic.
*/
FOUNDATION_EXPORT volatile NSInteger GDTCORConsoleLoggerLoggingLevel;
/** A list of logging levels that GDT supports. */
typedef NS_ENUM(NSInteger, GDTCORLoggingLevel) {
/** Causes all logs to be printed. */
GDTCORLoggingLevelDebug = 1,
/** Causes all non-debug logs to be printed. */
GDTCORLoggingLevelVerbose = 2,
/** Causes warnings and errors to be printed. */
GDTCORLoggingLevelWarnings = 3,
/** Causes errors to be printed. This is the default value. */
GDTCORLoggingLevelErrors = 4
};
/** A list of message codes to print in the logger that help to correspond printed messages with
* code locations.
*
* Prefixes:
* - MCD => MessageCodeDebug
* - MCW => MessageCodeWarning
* - MCE => MessageCodeError
*/
typedef NS_ENUM(NSInteger, GDTCORMessageCode) {
/** For debug logs. */
GDTCORMCDDebugLog = 0,
/** For warning messages concerning transportBytes: not being implemented by a data object. */
GDTCORMCWDataObjectMissingBytesImpl = 1,
/** For warning messages concerning a failed event upload. */
GDTCORMCWUploadFailed = 2,
/** For warning messages concerning a forced event upload. */
GDTCORMCWForcedUpload = 3,
/** For warning messages concerning a failed reachability call. */
GDTCORMCWReachabilityFailed = 4,
/** For warning messages concerning a database warning. */
GDTCORMCWDatabaseWarning = 5,
/** For warning messages concerning the reading of a event file. */
GDTCORMCWFileReadError = 6,
/** For error messages concerning transformGDTEvent: not being implemented by an event
transformer. */
GDTCORMCETransformerDoesntImplementTransform = 1000,
/** For error messages concerning the creation of a directory failing. */
GDTCORMCEDirectoryCreationError = 1001,
/** For error messages concerning the writing of a event file. */
GDTCORMCEFileWriteError = 1002,
/** For error messages concerning the lack of a prioritizer for a given backend. */
GDTCORMCEPrioritizerError = 1003,
/** For error messages concerning a package delivery API violation. */
GDTCORMCEDeliverTwice = 1004,
/** For error messages concerning an error in an implementation of -transportBytes. */
GDTCORMCETransportBytesError = 1005,
/** For general purpose error messages in a dependency. */
GDTCORMCEGeneralError = 1006,
/** For fatal errors. Please go to https://github.com/firebase/firebase-ios-sdk/issues and open
* an issue if you encounter an error with this code.
*/
GDTCORMCEFatalAssertion = 1007,
/** For error messages concerning the reading of a event file. */
GDTCORMCEFileReadError = 1008,
/** For errors related to running sqlite. */
GDTCORMCEDatabaseError = 1009,
};
/** Prints the given code and format string to the console.
*
* @param code The message code describing the nature of the log.
* @param logLevel The log level of this log.
* @param format The format string.
*/
FOUNDATION_EXPORT
void GDTCORLog(GDTCORMessageCode code, GDTCORLoggingLevel logLevel, NSString *_Nonnull format, ...)
NS_FORMAT_FUNCTION(3, 4);
/** Prints an assert log to the console.
*
* @param wasFatal Send YES if the assertion should be fatal, NO otherwise.
* @param file The file in which the failure occurred.
* @param line The line number of the failure.
* @param format The format string.
*/
FOUNDATION_EXPORT void GDTCORLogAssert(BOOL wasFatal,
NSString *_Nonnull file,
NSInteger line,
NSString *_Nullable format,
...) NS_FORMAT_FUNCTION(4, 5);
/** Returns the string that represents some message code.
*
* @param code The code to convert to a string.
* @return The string representing the message code.
*/
FOUNDATION_EXPORT NSString *_Nonnull GDTCORMessageCodeEnumToString(GDTCORMessageCode code);
#define GDTCORLogDebug(MESSAGE_FORMAT, ...) \
GDTCORLog(GDTCORMCDDebugLog, GDTCORLoggingLevelDebug, MESSAGE_FORMAT, __VA_ARGS__);
// A define to wrap GULLogWarning with slightly more convenient usage.
#define GDTCORLogWarning(MESSAGE_CODE, MESSAGE_FORMAT, ...) \
GDTCORLog(MESSAGE_CODE, GDTCORLoggingLevelWarnings, MESSAGE_FORMAT, __VA_ARGS__);
// A define to wrap GULLogError with slightly more convenient usage and a failing assert.
#define GDTCORLogError(MESSAGE_CODE, MESSAGE_FORMAT, ...) \
GDTCORLog(MESSAGE_CODE, GDTCORLoggingLevelErrors, MESSAGE_FORMAT, __VA_ARGS__);

View File

@@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: 6e468bc648cf44cb5aa5cc0596398fd0
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,36 @@
/*
* Copyright 2018 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>
#import "GDTCORTargets.h"
NS_ASSUME_NONNULL_BEGIN
/* Class that manages the endpoints used by Google data transport library. */
@interface GDTCOREndpoints : NSObject
- (instancetype)init NS_UNAVAILABLE;
/** Returns the upload URL for a target specified. If the target is not available, returns nil.
*
* @param target GoogleDataTransport target for which the upload URL is being looked up for.
* @return URL that will be used for uploading the events for the provided target.
*/
+ (nullable NSURL *)uploadURLForTarget:(GDTCORTarget)target;
@end
NS_ASSUME_NONNULL_END

View File

@@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: d9e1ed870a7cc4a45a627d36d285fc64
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,102 @@
/*
* Copyright 2018 Google
*
* 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>
#import "GDTCOREventDataObject.h"
#import "GDTCORTargets.h"
@class GDTCORClock;
@class GDTCORProductData;
NS_ASSUME_NONNULL_BEGIN
/** The different possible quality of service specifiers. High values indicate high priority. */
typedef NS_ENUM(NSInteger, GDTCOREventQoS) {
/** The QoS tier wasn't set, and won't ever be sent. */
GDTCOREventQoSUnknown = 0,
/** This event is internal telemetry data that should not be sent on its own if possible. */
GDTCOREventQoSTelemetry = 1,
/** This event should be sent, but in a batch only roughly once per day. */
GDTCOREventQoSDaily = 2,
/** This event should be sent when requested by the uploader. */
GDTCOREventQosDefault = 3,
/** This event should be sent immediately along with any other data that can be batched. */
GDTCOREventQoSFast = 4,
/** This event should only be uploaded on wifi. */
GDTCOREventQoSWifiOnly = 5,
};
@interface GDTCOREvent : NSObject <NSSecureCoding>
/** The unique ID of the event. */
@property(readonly, nonatomic) NSString *eventID;
/** The mapping identifier, to allow backends to map the transport bytes to a proto. */
@property(nullable, readonly, nonatomic) NSString *mappingID;
/** The identifier for the backend this event will eventually be sent to. */
@property(readonly, nonatomic) GDTCORTarget target;
/** The data object encapsulated in the transport of your choice, as long as it implements
* the GDTCOREventDataObject protocol. */
@property(nullable, nonatomic) id<GDTCOREventDataObject> dataObject;
/** The serialized bytes from calling [dataObject transportBytes]. */
@property(nullable, readonly, nonatomic) NSData *serializedDataObjectBytes;
/** The quality of service tier this event belongs to. */
@property(nonatomic) GDTCOREventQoS qosTier;
/** The clock snapshot at the time of the event. */
@property(nonatomic) GDTCORClock *clockSnapshot;
/** The expiration date of the event. Default is 604800 seconds (7 days) from creation. */
@property(nonatomic) NSDate *expirationDate;
/** Bytes that can be used by an uploader later on. */
@property(nullable, nonatomic) NSData *customBytes;
/** The product data that the event is associated with, if any. */
@property(nullable, readonly, nonatomic) GDTCORProductData *productData;
/** Initializes an instance using the given mapping ID and target.
*
* @param mappingID The mapping identifier.
* @param target The event's target identifier.
* @return An instance of this class.
*/
- (nullable instancetype)initWithMappingID:(NSString *)mappingID target:(GDTCORTarget)target;
/** Initializes an instance using the given mapping ID, product data, and target.
*
* @param mappingID The mapping identifier.
* @param productData The product data to associate this event with.
* @param target The event's target identifier.
* @return An instance of this class.
*/
- (nullable instancetype)initWithMappingID:(NSString *)mappingID
productData:(nullable GDTCORProductData *)productData
target:(GDTCORTarget)target;
@end
NS_ASSUME_NONNULL_END

View File

@@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: 57b4f342f62744bfb891ea514acfbeab
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,36 @@
/*
* Copyright 2018 Google
*
* 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
/** This protocol defines the common interface that event protos should implement regardless of the
* underlying transport technology (protobuf, nanopb, etc).
*/
@protocol GDTCOREventDataObject <NSObject>
@required
/** Returns the serialized proto bytes of the implementing event proto.
*
* @return the serialized proto bytes of the implementing event proto.
*/
- (NSData *)transportBytes;
@end
NS_ASSUME_NONNULL_END

View File

@@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: 18536b604d6334f8ab773dd0d588809f
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,38 @@
/*
* Copyright 2018 Google
*
* 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>
@class GDTCOREvent;
NS_ASSUME_NONNULL_BEGIN
/** Defines the API that event transformers must adopt. */
@protocol GDTCOREventTransformer <NSObject>
@required
/** Transforms an event by applying some logic to it. Events returned can be nil, for example, in
* instances where the event should be sampled.
*
* @param event The event to transform.
* @return A transformed event, or nil if the transformation dropped the event.
*/
- (nullable GDTCOREvent *)transformGDTEvent:(GDTCOREvent *)event;
@end
NS_ASSUME_NONNULL_END

View File

@@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: 8f0e3c5c4cfaf4cf2ac2c9a06be0750a
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,29 @@
// Copyright 2023 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>
@interface GDTCORProductData : NSObject <NSCopying, NSSecureCoding>
/// The product ID.
@property(nonatomic, readonly) int32_t productID;
/// Initializes an instance using the given product ID.
/// - Parameter productID: A 32-bit integer.
- (instancetype)initWithProductID:(int32_t)productID;
/// This API is unavailable.
- (instancetype)init NS_UNAVAILABLE;
@end

View File

@@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: 6cd68d1c9ec7e4d7eb37cb540fa90bf9
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,39 @@
/*
* Copyright 2019 Google
*
* 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>
/** The list of targets supported by the shared transport infrastructure.
* These targets map to a specific backend designed to accept GDT payloads. If
* adding a new target, please use the previous value +1.
*/
typedef NS_ENUM(NSInteger, GDTCORTarget) {
/** Target used for testing purposes. */
kGDTCORTargetTest = 999,
/** Target used by internal clients. See go/firelog for more information. */
kGDTCORTargetCCT = 1000,
/** Target mapping to the Firelog backend. See go/firelog for more information. */
kGDTCORTargetFLL = 1001,
/** Special-purpose Crashlytics target. Please do not use it without permission. */
kGDTCORTargetCSH = 1002,
/** Target used for integration testing. */
kGDTCORTargetINT = 1003,
};

View File

@@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: 6f9dbc33bc69c4ff5ae048b0b90884b0
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,101 @@
/*
* Copyright 2018 Google
*
* 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>
#import "GDTCOREventTransformer.h"
#import "GDTCORTargets.h"
@class GDTCOREvent;
@class GDTCORProductData;
NS_ASSUME_NONNULL_BEGIN
@interface GDTCORTransport : NSObject
// Please use the designated initializer.
- (instancetype)init NS_UNAVAILABLE;
/** Initializes a new transport that will send events to the given target backend.
*
* @param mappingID The mapping identifier used by the backend to map the data object transport
* bytes to a proto.
* @param transformers A list of transformers to be applied to events that are sent.
* @param target The target backend of this transport.
* @return A transport that will send events.
*/
- (nullable instancetype)initWithMappingID:(NSString *)mappingID
transformers:
(nullable NSArray<id<GDTCOREventTransformer>> *)transformers
target:(GDTCORTarget)target NS_DESIGNATED_INITIALIZER;
/** Copies and sends an internal telemetry event. Events sent using this API are lower in priority,
* and sometimes won't be sent on their own.
*
* @note This will convert the event's data object to data and release the original event.
*
* @param event The event to send.
* @param completion A block that will be called when the event has been written or dropped.
*/
- (void)sendTelemetryEvent:(GDTCOREvent *)event
onComplete:(void (^_Nullable)(BOOL wasWritten, NSError *_Nullable error))completion;
/** Copies and sends an internal telemetry event. Events sent using this API are lower in priority,
* and sometimes won't be sent on their own.
*
* @note This will convert the event's data object to data and release the original event.
*
* @param event The event to send.
*/
- (void)sendTelemetryEvent:(GDTCOREvent *)event;
/** Copies and sends an SDK service data event. Events send using this API are higher in priority,
* and will cause a network request at some point in the relative near future.
*
* @note This will convert the event's data object to data and release the original event.
*
* @param event The event to send.
* @param completion A block that will be called when the event has been written or dropped.
*/
- (void)sendDataEvent:(GDTCOREvent *)event
onComplete:(void (^_Nullable)(BOOL wasWritten, NSError *_Nullable error))completion;
/** Copies and sends an SDK service data event. Events send using this API are higher in priority,
* and will cause a network request at some point in the relative near future.
*
* @note This will convert the event's data object to data and release the original event.
*
* @param event The event to send.
*/
- (void)sendDataEvent:(GDTCOREvent *)event;
/** Creates an event for use by this transport.
*
* @return An event that is suited for use by this transport.
*/
- (GDTCOREvent *)eventForTransport;
/**
* Creates an event with the given product data for use by this transport.
*
* @param productData The given product data to associate with the created event.
* @return An event that is suited for use by this transport.
*/
- (GDTCOREvent *)eventForTransportWithProductData:(nonnull GDTCORProductData *)productData;
@end
NS_ASSUME_NONNULL_END

View File

@@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: aaead23ed06154700923dd3d24c205e3
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,26 @@
#ifdef __OBJC__
#import <UIKit/UIKit.h>
#else
#ifndef FOUNDATION_EXPORT
#if defined(__cplusplus)
#define FOUNDATION_EXPORT extern "C"
#else
#define FOUNDATION_EXPORT extern
#endif
#endif
#endif
#import "GDTCORClock.h"
#import "GDTCORConsoleLogger.h"
#import "GDTCOREndpoints.h"
#import "GDTCOREvent.h"
#import "GDTCOREventDataObject.h"
#import "GDTCOREventTransformer.h"
#import "GDTCORProductData.h"
#import "GDTCORTargets.h"
#import "GDTCORTransport.h"
#import "GoogleDataTransport.h"
FOUNDATION_EXPORT double GoogleDataTransportVersionNumber;
FOUNDATION_EXPORT const unsigned char GoogleDataTransportVersionString[];

View File

@@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: 32be33f61fc2b4d5bbad5e95b863ca59
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,25 @@
/*
* Copyright 2018 Google
*
* 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 "GDTCORClock.h"
#import "GDTCORConsoleLogger.h"
#import "GDTCOREndpoints.h"
#import "GDTCOREvent.h"
#import "GDTCOREventDataObject.h"
#import "GDTCOREventTransformer.h"
#import "GDTCORProductData.h"
#import "GDTCORTargets.h"
#import "GDTCORTransport.h"

View File

@@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: 53756b882ec254c6fbe90bb7b4d111a7
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,57 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>BuildMachineOSBuild</key>
<string>23F79</string>
<key>CFBundleDevelopmentRegion</key>
<string>en</string>
<key>CFBundleExecutable</key>
<string>GoogleDataTransport</string>
<key>CFBundleIdentifier</key>
<string>org.cocoapods.GoogleDataTransport</string>
<key>CFBundleInfoDictionaryVersion</key>
<string>6.0</string>
<key>CFBundleName</key>
<string>GoogleDataTransport</string>
<key>CFBundlePackageType</key>
<string>FMWK</string>
<key>CFBundleShortVersionString</key>
<string>9.4.1</string>
<key>CFBundleSignature</key>
<string>????</string>
<key>CFBundleSupportedPlatforms</key>
<array>
<string>iPhoneOS</string>
</array>
<key>CFBundleVersion</key>
<string>1</string>
<key>DTCompiler</key>
<string>com.apple.compilers.llvm.clang.1_0</string>
<key>DTPlatformBuild</key>
<string>21C52</string>
<key>DTPlatformName</key>
<string>iphoneos</string>
<key>DTPlatformVersion</key>
<string>17.2</string>
<key>DTSDKBuild</key>
<string>21C52</string>
<key>DTSDKName</key>
<string>iphoneos17.2</string>
<key>DTXcode</key>
<string>1520</string>
<key>DTXcodeBuild</key>
<string>15C500b</string>
<key>MinimumOSVersion</key>
<string>100.0</string>
<key>UIDeviceFamily</key>
<array>
<integer>1</integer>
<integer>2</integer>
</array>
<key>UIRequiredDeviceCapabilities</key>
<array>
<string>arm64</string>
</array>
</dict>
</plist>

View File

@@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: 080d1dc2627fb4fdab66516c179db0af
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: d79a64aaaa808402c931ea3a78dfacda
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,9 @@
framework module GoogleDataTransport {
umbrella header "GoogleDataTransport-umbrella.h"
export *
module * { export * }
link framework "CoreTelephony"
link framework "Security"
link framework "SystemConfiguration"
link "z"
}

View File

@@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: d1afb6a91fedf498b86521d76fb1fe29
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 295ef148569534cefb54aff0cf2c24d0
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,68 @@
fileFormatVersion: 2
guid: edfc919cc7b8c4b7aa9322473ecdf2cc
PluginImporter:
externalObjects: {}
serializedVersion: 2
iconMap: {}
executionOrder: {}
defineConstraints: []
isPreloaded: 0
isOverridable: 1
isExplicitlyReferenced: 0
validateReferences: 1
platformData:
- first:
: Any
second:
enabled: 0
settings:
Exclude Android: 1
Exclude Editor: 1
Exclude Linux64: 1
Exclude OSXUniversal: 1
Exclude Win: 1
Exclude Win64: 1
Exclude iOS: 1
- first:
Any:
second:
enabled: 0
settings: {}
- first:
Editor: Editor
second:
enabled: 0
settings:
DefaultValueInitialized: true
- first:
Standalone: Linux64
second:
enabled: 0
settings:
CPU: None
- first:
Standalone: OSXUniversal
second:
enabled: 0
settings:
CPU: None
- first:
Standalone: Win
second:
enabled: 0
settings:
CPU: None
- first:
Standalone: Win64
second:
enabled: 0
settings:
CPU: None
- first:
iPhone: iOS
second:
enabled: 0
settings: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: 6e650bffcf9bf4458ae81663deed1e00
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 3bde64b29dbd249ef9fdbe09539ba232
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 4c31e4a629b40416f84115aa4e02b75f
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 9b64d7855aed44ba68512d8e33e136ea
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 5758656357d25461699d6cb9e9c5d21e
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 75f51414285e1472fbb5aafa8e4a5f4a
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: 63638b1fa695b4123810495fb08d0686
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 4ae83fe064138485093467573b75781e
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,66 @@
/*
* Copyright 2018 Google
*
* 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
/** This class manages the device clock and produces snapshots of the current time. */
@interface GDTCORClock : NSObject <NSSecureCoding>
/** The wallclock time, UTC, in milliseconds. */
@property(nonatomic, readonly) int64_t timeMillis;
/** The offset from UTC in seconds. */
@property(nonatomic, readonly) int64_t timezoneOffsetSeconds;
/** The kernel boot time when this clock was created in nanoseconds. */
@property(nonatomic, readonly) int64_t kernelBootTimeNanoseconds;
/** The device uptime when this clock was created in nanoseconds. */
@property(nonatomic, readonly) int64_t uptimeNanoseconds;
@property(nonatomic, readonly) int64_t kernelBootTime DEPRECATED_MSG_ATTRIBUTE(
"Please use `kernelBootTimeNanoseconds` instead");
@property(nonatomic, readonly)
int64_t uptime DEPRECATED_MSG_ATTRIBUTE("Please use `uptimeNanoseconds` instead");
/** Creates a GDTCORClock object using the current time and offsets.
*
* @return A new GDTCORClock object representing the current time state.
*/
+ (instancetype)snapshot;
/** Creates a GDTCORClock object representing a time in the future, relative to now.
*
* @param millisInTheFuture The millis in the future from now this clock should represent.
* @return An instance representing a future time.
*/
+ (instancetype)clockSnapshotInTheFuture:(uint64_t)millisInTheFuture;
/** Compares one clock with another, returns YES if the caller is after the parameter.
*
* @return YES if the calling clock's time is after the given clock's time.
*/
- (BOOL)isAfter:(GDTCORClock *)otherClock;
/** Returns value of `uptime` property in milliseconds. */
- (int64_t)uptimeMilliseconds;
@end
NS_ASSUME_NONNULL_END

View File

@@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: 1a35d8668191944f69dcee6c1c208d8d
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,144 @@
/*
* Copyright 2018 Google
*
* 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>
/** The current logging level. This value and higher will be printed. Declared as volatile to make
* getting and setting atomic.
*/
FOUNDATION_EXPORT volatile NSInteger GDTCORConsoleLoggerLoggingLevel;
/** A list of logging levels that GDT supports. */
typedef NS_ENUM(NSInteger, GDTCORLoggingLevel) {
/** Causes all logs to be printed. */
GDTCORLoggingLevelDebug = 1,
/** Causes all non-debug logs to be printed. */
GDTCORLoggingLevelVerbose = 2,
/** Causes warnings and errors to be printed. */
GDTCORLoggingLevelWarnings = 3,
/** Causes errors to be printed. This is the default value. */
GDTCORLoggingLevelErrors = 4
};
/** A list of message codes to print in the logger that help to correspond printed messages with
* code locations.
*
* Prefixes:
* - MCD => MessageCodeDebug
* - MCW => MessageCodeWarning
* - MCE => MessageCodeError
*/
typedef NS_ENUM(NSInteger, GDTCORMessageCode) {
/** For debug logs. */
GDTCORMCDDebugLog = 0,
/** For warning messages concerning transportBytes: not being implemented by a data object. */
GDTCORMCWDataObjectMissingBytesImpl = 1,
/** For warning messages concerning a failed event upload. */
GDTCORMCWUploadFailed = 2,
/** For warning messages concerning a forced event upload. */
GDTCORMCWForcedUpload = 3,
/** For warning messages concerning a failed reachability call. */
GDTCORMCWReachabilityFailed = 4,
/** For warning messages concerning a database warning. */
GDTCORMCWDatabaseWarning = 5,
/** For warning messages concerning the reading of a event file. */
GDTCORMCWFileReadError = 6,
/** For error messages concerning transformGDTEvent: not being implemented by an event
transformer. */
GDTCORMCETransformerDoesntImplementTransform = 1000,
/** For error messages concerning the creation of a directory failing. */
GDTCORMCEDirectoryCreationError = 1001,
/** For error messages concerning the writing of a event file. */
GDTCORMCEFileWriteError = 1002,
/** For error messages concerning the lack of a prioritizer for a given backend. */
GDTCORMCEPrioritizerError = 1003,
/** For error messages concerning a package delivery API violation. */
GDTCORMCEDeliverTwice = 1004,
/** For error messages concerning an error in an implementation of -transportBytes. */
GDTCORMCETransportBytesError = 1005,
/** For general purpose error messages in a dependency. */
GDTCORMCEGeneralError = 1006,
/** For fatal errors. Please go to https://github.com/firebase/firebase-ios-sdk/issues and open
* an issue if you encounter an error with this code.
*/
GDTCORMCEFatalAssertion = 1007,
/** For error messages concerning the reading of a event file. */
GDTCORMCEFileReadError = 1008,
/** For errors related to running sqlite. */
GDTCORMCEDatabaseError = 1009,
};
/** Prints the given code and format string to the console.
*
* @param code The message code describing the nature of the log.
* @param logLevel The log level of this log.
* @param format The format string.
*/
FOUNDATION_EXPORT
void GDTCORLog(GDTCORMessageCode code, GDTCORLoggingLevel logLevel, NSString *_Nonnull format, ...)
NS_FORMAT_FUNCTION(3, 4);
/** Prints an assert log to the console.
*
* @param wasFatal Send YES if the assertion should be fatal, NO otherwise.
* @param file The file in which the failure occurred.
* @param line The line number of the failure.
* @param format The format string.
*/
FOUNDATION_EXPORT void GDTCORLogAssert(BOOL wasFatal,
NSString *_Nonnull file,
NSInteger line,
NSString *_Nullable format,
...) NS_FORMAT_FUNCTION(4, 5);
/** Returns the string that represents some message code.
*
* @param code The code to convert to a string.
* @return The string representing the message code.
*/
FOUNDATION_EXPORT NSString *_Nonnull GDTCORMessageCodeEnumToString(GDTCORMessageCode code);
#define GDTCORLogDebug(MESSAGE_FORMAT, ...) \
GDTCORLog(GDTCORMCDDebugLog, GDTCORLoggingLevelDebug, MESSAGE_FORMAT, __VA_ARGS__);
// A define to wrap GULLogWarning with slightly more convenient usage.
#define GDTCORLogWarning(MESSAGE_CODE, MESSAGE_FORMAT, ...) \
GDTCORLog(MESSAGE_CODE, GDTCORLoggingLevelWarnings, MESSAGE_FORMAT, __VA_ARGS__);
// A define to wrap GULLogError with slightly more convenient usage and a failing assert.
#define GDTCORLogError(MESSAGE_CODE, MESSAGE_FORMAT, ...) \
GDTCORLog(MESSAGE_CODE, GDTCORLoggingLevelErrors, MESSAGE_FORMAT, __VA_ARGS__);

View File

@@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: 7ab811eef93f44e049839168352b29d8
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,36 @@
/*
* Copyright 2018 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>
#import "GDTCORTargets.h"
NS_ASSUME_NONNULL_BEGIN
/* Class that manages the endpoints used by Google data transport library. */
@interface GDTCOREndpoints : NSObject
- (instancetype)init NS_UNAVAILABLE;
/** Returns the upload URL for a target specified. If the target is not available, returns nil.
*
* @param target GoogleDataTransport target for which the upload URL is being looked up for.
* @return URL that will be used for uploading the events for the provided target.
*/
+ (nullable NSURL *)uploadURLForTarget:(GDTCORTarget)target;
@end
NS_ASSUME_NONNULL_END

View File

@@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: 4cf4b854568514be28a7cbd3938f32da
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,102 @@
/*
* Copyright 2018 Google
*
* 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>
#import "GDTCOREventDataObject.h"
#import "GDTCORTargets.h"
@class GDTCORClock;
@class GDTCORProductData;
NS_ASSUME_NONNULL_BEGIN
/** The different possible quality of service specifiers. High values indicate high priority. */
typedef NS_ENUM(NSInteger, GDTCOREventQoS) {
/** The QoS tier wasn't set, and won't ever be sent. */
GDTCOREventQoSUnknown = 0,
/** This event is internal telemetry data that should not be sent on its own if possible. */
GDTCOREventQoSTelemetry = 1,
/** This event should be sent, but in a batch only roughly once per day. */
GDTCOREventQoSDaily = 2,
/** This event should be sent when requested by the uploader. */
GDTCOREventQosDefault = 3,
/** This event should be sent immediately along with any other data that can be batched. */
GDTCOREventQoSFast = 4,
/** This event should only be uploaded on wifi. */
GDTCOREventQoSWifiOnly = 5,
};
@interface GDTCOREvent : NSObject <NSSecureCoding>
/** The unique ID of the event. */
@property(readonly, nonatomic) NSString *eventID;
/** The mapping identifier, to allow backends to map the transport bytes to a proto. */
@property(nullable, readonly, nonatomic) NSString *mappingID;
/** The identifier for the backend this event will eventually be sent to. */
@property(readonly, nonatomic) GDTCORTarget target;
/** The data object encapsulated in the transport of your choice, as long as it implements
* the GDTCOREventDataObject protocol. */
@property(nullable, nonatomic) id<GDTCOREventDataObject> dataObject;
/** The serialized bytes from calling [dataObject transportBytes]. */
@property(nullable, readonly, nonatomic) NSData *serializedDataObjectBytes;
/** The quality of service tier this event belongs to. */
@property(nonatomic) GDTCOREventQoS qosTier;
/** The clock snapshot at the time of the event. */
@property(nonatomic) GDTCORClock *clockSnapshot;
/** The expiration date of the event. Default is 604800 seconds (7 days) from creation. */
@property(nonatomic) NSDate *expirationDate;
/** Bytes that can be used by an uploader later on. */
@property(nullable, nonatomic) NSData *customBytes;
/** The product data that the event is associated with, if any. */
@property(nullable, readonly, nonatomic) GDTCORProductData *productData;
/** Initializes an instance using the given mapping ID and target.
*
* @param mappingID The mapping identifier.
* @param target The event's target identifier.
* @return An instance of this class.
*/
- (nullable instancetype)initWithMappingID:(NSString *)mappingID target:(GDTCORTarget)target;
/** Initializes an instance using the given mapping ID, product data, and target.
*
* @param mappingID The mapping identifier.
* @param productData The product data to associate this event with.
* @param target The event's target identifier.
* @return An instance of this class.
*/
- (nullable instancetype)initWithMappingID:(NSString *)mappingID
productData:(nullable GDTCORProductData *)productData
target:(GDTCORTarget)target;
@end
NS_ASSUME_NONNULL_END

View File

@@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: 5d26a6b20f75a415ba605cc2de79c464
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,36 @@
/*
* Copyright 2018 Google
*
* 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
/** This protocol defines the common interface that event protos should implement regardless of the
* underlying transport technology (protobuf, nanopb, etc).
*/
@protocol GDTCOREventDataObject <NSObject>
@required
/** Returns the serialized proto bytes of the implementing event proto.
*
* @return the serialized proto bytes of the implementing event proto.
*/
- (NSData *)transportBytes;
@end
NS_ASSUME_NONNULL_END

View File

@@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: acd2430d03db946a5b31dfb52b85c609
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,38 @@
/*
* Copyright 2018 Google
*
* 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>
@class GDTCOREvent;
NS_ASSUME_NONNULL_BEGIN
/** Defines the API that event transformers must adopt. */
@protocol GDTCOREventTransformer <NSObject>
@required
/** Transforms an event by applying some logic to it. Events returned can be nil, for example, in
* instances where the event should be sampled.
*
* @param event The event to transform.
* @return A transformed event, or nil if the transformation dropped the event.
*/
- (nullable GDTCOREvent *)transformGDTEvent:(GDTCOREvent *)event;
@end
NS_ASSUME_NONNULL_END

View File

@@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: b383f931005ac44918ca2e66b5a3ace3
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,29 @@
// Copyright 2023 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>
@interface GDTCORProductData : NSObject <NSCopying, NSSecureCoding>
/// The product ID.
@property(nonatomic, readonly) int32_t productID;
/// Initializes an instance using the given product ID.
/// - Parameter productID: A 32-bit integer.
- (instancetype)initWithProductID:(int32_t)productID;
/// This API is unavailable.
- (instancetype)init NS_UNAVAILABLE;
@end

View File

@@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: a838d463d17b842e2bdae9f562452736
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,39 @@
/*
* Copyright 2019 Google
*
* 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>
/** The list of targets supported by the shared transport infrastructure.
* These targets map to a specific backend designed to accept GDT payloads. If
* adding a new target, please use the previous value +1.
*/
typedef NS_ENUM(NSInteger, GDTCORTarget) {
/** Target used for testing purposes. */
kGDTCORTargetTest = 999,
/** Target used by internal clients. See go/firelog for more information. */
kGDTCORTargetCCT = 1000,
/** Target mapping to the Firelog backend. See go/firelog for more information. */
kGDTCORTargetFLL = 1001,
/** Special-purpose Crashlytics target. Please do not use it without permission. */
kGDTCORTargetCSH = 1002,
/** Target used for integration testing. */
kGDTCORTargetINT = 1003,
};

View File

@@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: d576bdf89eabd42398446393595cf78c
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,101 @@
/*
* Copyright 2018 Google
*
* 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>
#import "GDTCOREventTransformer.h"
#import "GDTCORTargets.h"
@class GDTCOREvent;
@class GDTCORProductData;
NS_ASSUME_NONNULL_BEGIN
@interface GDTCORTransport : NSObject
// Please use the designated initializer.
- (instancetype)init NS_UNAVAILABLE;
/** Initializes a new transport that will send events to the given target backend.
*
* @param mappingID The mapping identifier used by the backend to map the data object transport
* bytes to a proto.
* @param transformers A list of transformers to be applied to events that are sent.
* @param target The target backend of this transport.
* @return A transport that will send events.
*/
- (nullable instancetype)initWithMappingID:(NSString *)mappingID
transformers:
(nullable NSArray<id<GDTCOREventTransformer>> *)transformers
target:(GDTCORTarget)target NS_DESIGNATED_INITIALIZER;
/** Copies and sends an internal telemetry event. Events sent using this API are lower in priority,
* and sometimes won't be sent on their own.
*
* @note This will convert the event's data object to data and release the original event.
*
* @param event The event to send.
* @param completion A block that will be called when the event has been written or dropped.
*/
- (void)sendTelemetryEvent:(GDTCOREvent *)event
onComplete:(void (^_Nullable)(BOOL wasWritten, NSError *_Nullable error))completion;
/** Copies and sends an internal telemetry event. Events sent using this API are lower in priority,
* and sometimes won't be sent on their own.
*
* @note This will convert the event's data object to data and release the original event.
*
* @param event The event to send.
*/
- (void)sendTelemetryEvent:(GDTCOREvent *)event;
/** Copies and sends an SDK service data event. Events send using this API are higher in priority,
* and will cause a network request at some point in the relative near future.
*
* @note This will convert the event's data object to data and release the original event.
*
* @param event The event to send.
* @param completion A block that will be called when the event has been written or dropped.
*/
- (void)sendDataEvent:(GDTCOREvent *)event
onComplete:(void (^_Nullable)(BOOL wasWritten, NSError *_Nullable error))completion;
/** Copies and sends an SDK service data event. Events send using this API are higher in priority,
* and will cause a network request at some point in the relative near future.
*
* @note This will convert the event's data object to data and release the original event.
*
* @param event The event to send.
*/
- (void)sendDataEvent:(GDTCOREvent *)event;
/** Creates an event for use by this transport.
*
* @return An event that is suited for use by this transport.
*/
- (GDTCOREvent *)eventForTransport;
/**
* Creates an event with the given product data for use by this transport.
*
* @param productData The given product data to associate with the created event.
* @return An event that is suited for use by this transport.
*/
- (GDTCOREvent *)eventForTransportWithProductData:(nonnull GDTCORProductData *)productData;
@end
NS_ASSUME_NONNULL_END

View File

@@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: 1828ab7e02211413fa3ef56fa4db7848
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,26 @@
#ifdef __OBJC__
#import <UIKit/UIKit.h>
#else
#ifndef FOUNDATION_EXPORT
#if defined(__cplusplus)
#define FOUNDATION_EXPORT extern "C"
#else
#define FOUNDATION_EXPORT extern
#endif
#endif
#endif
#import "GDTCORClock.h"
#import "GDTCORConsoleLogger.h"
#import "GDTCOREndpoints.h"
#import "GDTCOREvent.h"
#import "GDTCOREventDataObject.h"
#import "GDTCOREventTransformer.h"
#import "GDTCORProductData.h"
#import "GDTCORTargets.h"
#import "GDTCORTransport.h"
#import "GoogleDataTransport.h"
FOUNDATION_EXPORT double GoogleDataTransportVersionNumber;
FOUNDATION_EXPORT const unsigned char GoogleDataTransportVersionString[];

View File

@@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: 491f2155c4c664b55ba6fe6f67dd7706
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,25 @@
/*
* Copyright 2018 Google
*
* 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 "GDTCORClock.h"
#import "GDTCORConsoleLogger.h"
#import "GDTCOREndpoints.h"
#import "GDTCOREvent.h"
#import "GDTCOREventDataObject.h"
#import "GDTCOREventTransformer.h"
#import "GDTCORProductData.h"
#import "GDTCORTargets.h"
#import "GDTCORTransport.h"

View File

@@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: f93f36a2bd62044d08e385c14a1ea7b4
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: f4175c534a0cd44f0b7967ed35e51079
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,9 @@
framework module GoogleDataTransport {
umbrella header "GoogleDataTransport-umbrella.h"
export *
module * { export * }
link framework "CoreTelephony"
link framework "Security"
link framework "SystemConfiguration"
link "z"
}

View File

@@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: 3bd55c671a03c49fd8e790d30e3c8d6f
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: a84023cadaae44de69c93167a40d3580
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: ffb20900a504540578edebd21a3518fd
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 8b777e8a071a247928e778252818488f
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,50 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>BuildMachineOSBuild</key>
<string>23F79</string>
<key>CFBundleDevelopmentRegion</key>
<string>en</string>
<key>CFBundleIdentifier</key>
<string>org.cocoapods.GoogleDataTransport-Privacy</string>
<key>CFBundleInfoDictionaryVersion</key>
<string>6.0</string>
<key>CFBundleName</key>
<string>GoogleDataTransport_Privacy</string>
<key>CFBundlePackageType</key>
<string>BNDL</string>
<key>CFBundleShortVersionString</key>
<string>9.4.1</string>
<key>CFBundleSignature</key>
<string>????</string>
<key>CFBundleSupportedPlatforms</key>
<array>
<string>MacOSX</string>
</array>
<key>CFBundleVersion</key>
<string>1</string>
<key>DTCompiler</key>
<string>com.apple.compilers.llvm.clang.1_0</string>
<key>DTPlatformBuild</key>
<string></string>
<key>DTPlatformName</key>
<string>macosx</string>
<key>DTPlatformVersion</key>
<string>14.2</string>
<key>DTSDKBuild</key>
<string>23C53</string>
<key>DTSDKName</key>
<string>macosx14.2</string>
<key>DTXcode</key>
<string>1520</string>
<key>DTXcodeBuild</key>
<string>15C500b</string>
<key>LSMinimumSystemVersion</key>
<string>10.15</string>
<key>UIDeviceFamily</key>
<array>
<integer>2</integer>
</array>
</dict>
</plist>

View File

@@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: 7cd63525781474f00890d8bf42a53cc2
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 147679adec2cd48f4afaa5148ffefb1c
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,30 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>NSPrivacyTracking</key>
<false/>
<key>NSPrivacyTrackingDomains</key>
<array>
</array>
<key>NSPrivacyCollectedDataTypes</key>
<array>
<dict>
<key>NSPrivacyCollectedDataType</key>
<string>NSPrivacyCollectedDataTypeOtherDiagnosticData</string>
<key>NSPrivacyCollectedDataTypeLinked</key>
<false/>
<key>NSPrivacyCollectedDataTypeTracking</key>
<false/>
<key>NSPrivacyCollectedDataTypePurposes</key>
<array>
<string>NSPrivacyCollectedDataTypePurposeAnalytics</string>
</array>
</dict>
</array>
<key>NSPrivacyAccessedAPITypes</key>
<array>
</array>
</dict>
</plist>

View File

@@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: 3fa89c552c1ec4e258938d1b6071690b
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,54 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>BuildMachineOSBuild</key>
<string>23F79</string>
<key>CFBundleDevelopmentRegion</key>
<string>en</string>
<key>CFBundleExecutable</key>
<string>GoogleDataTransport</string>
<key>CFBundleIdentifier</key>
<string>org.cocoapods.GoogleDataTransport</string>
<key>CFBundleInfoDictionaryVersion</key>
<string>6.0</string>
<key>CFBundleName</key>
<string>GoogleDataTransport</string>
<key>CFBundlePackageType</key>
<string>FMWK</string>
<key>CFBundleShortVersionString</key>
<string>9.4.1</string>
<key>CFBundleSignature</key>
<string>????</string>
<key>CFBundleSupportedPlatforms</key>
<array>
<string>MacOSX</string>
</array>
<key>CFBundleVersion</key>
<string>1</string>
<key>DTCompiler</key>
<string>com.apple.compilers.llvm.clang.1_0</string>
<key>DTPlatformBuild</key>
<string></string>
<key>DTPlatformName</key>
<string>macosx</string>
<key>DTPlatformVersion</key>
<string>14.2</string>
<key>DTSDKBuild</key>
<string>23C53</string>
<key>DTSDKName</key>
<string>macosx14.2</string>
<key>DTXcode</key>
<string>1520</string>
<key>DTXcodeBuild</key>
<string>15C500b</string>
<key>LSMinimumSystemVersion</key>
<string>10.15</string>
<key>MinimumOSVersion</key>
<string>100.0</string>
<key>UIDeviceFamily</key>
<array>
<integer>2</integer>
</array>
</dict>
</plist>

View File

@@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: 4b9be5f2509cb40d482a2e9a185a66d3
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 3bcf0976cbf5b4e5a985273ac69583cc
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 9696ba4a4d2f44e3c86cdcc423fee44c
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,59 @@
fileFormatVersion: 2
guid: d42d2d488d3cd42c983b1dc4b5cd0729
PluginImporter:
externalObjects: {}
serializedVersion: 2
iconMap: {}
executionOrder: {}
defineConstraints: []
isPreloaded: 0
isOverridable: 1
isExplicitlyReferenced: 0
validateReferences: 1
platformData:
- first:
: Any
second:
enabled: 0
settings:
Exclude Android: 1
Exclude Editor: 0
Exclude Linux64: 0
Exclude OSXUniversal: 0
Exclude Win: 0
Exclude Win64: 0
Exclude iOS: 1
- first:
Any:
second:
enabled: 0
settings: {}
- first:
Editor: Editor
second:
enabled: 1
settings:
DefaultValueInitialized: true
- first:
Standalone: Linux64
second:
enabled: 1
settings: {}
- first:
Standalone: OSXUniversal
second:
enabled: 1
settings: {}
- first:
Standalone: Win
second:
enabled: 1
settings: {}
- first:
Standalone: Win64
second:
enabled: 1
settings: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: 99d69048c4dfc4c6e841b578dbd0e5ae
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: bee6ae4c2b0e7415b8b76513aabfcfd1
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: ba459265eab5a4974a777c75521f948c
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,30 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>NSPrivacyTracking</key>
<false/>
<key>NSPrivacyTrackingDomains</key>
<array>
</array>
<key>NSPrivacyCollectedDataTypes</key>
<array>
<dict>
<key>NSPrivacyCollectedDataType</key>
<string>NSPrivacyCollectedDataTypeOtherDiagnosticData</string>
<key>NSPrivacyCollectedDataTypeLinked</key>
<false/>
<key>NSPrivacyCollectedDataTypeTracking</key>
<false/>
<key>NSPrivacyCollectedDataTypePurposes</key>
<array>
<string>NSPrivacyCollectedDataTypePurposeAnalytics</string>
</array>
</dict>
</array>
<key>NSPrivacyAccessedAPITypes</key>
<array>
</array>
</dict>
</plist>

View File

@@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: d1c10297d2b994639bbff73f6efba12f
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

Some files were not shown because too many files have changed in this diff Show More