14 files deleted
8 files renamed
28 files added
1 files copied
37 files modified
| | |
| | | Pod::Spec.new do |s| |
| | | |
| | | s.name = 'WAFirebaseImpl' |
| | | s.version = '3.8.5' |
| | | s.version = '3.9.2' |
| | | s.summary = 'WAFirebaseImpl framework in testing environment.' |
| | | s.license = 'MIT' |
| | | s.author = { "Wuyx" => "wuyixin_gh@gamehollywood.com" } |
New file |
| | |
| | | # |
| | | # Be sure to run `pod spec lint WAFbImpl.podspec' to ensure this is a |
| | | # valid spec and to remove all comments including this before submitting the spec. |
| | | # |
| | | # To learn more about Podspec attributes see http://docs.cocoapods.org/specification.html |
| | | # To see working Podspecs in the CocoaPods repo see https://github.com/CocoaPods/Specs/ |
| | | # |
| | | |
| | | Pod::Spec.new do |s| |
| | | |
| | | s.name = 'WAFirebaseImpl' |
| | | s.version = '3.9.2' |
| | | s.summary = 'WAFirebaseImpl framework in testing environment.' |
| | | s.license = 'MIT' |
| | | s.author = { "Wuyx" => "wuyixin_gh@gamehollywood.com" } |
| | | s.homepage = 'http://repo.wingsdk.cn:8082/summary/WAFirebaseImpl.git' |
| | | s.source = { :git => "http://admin@repo.wingsdk.cn:8082/r/WAFirebaseImpl.git" , :tag => s.version} |
| | | s.platform = :ios |
| | | s.ios.deployment_target = "7.0" |
| | | s.vendored_frameworks = 'frameworks/*.framework' |
| | | s.resources = ['config/*.xml'] |
| | | s.requires_arc = true |
| | | s.dependency 'WASdkIntf' |
| | | s.dependency 'WASdkImpl' |
| | | end |
| | |
| | | <?xml version="1.0" encoding="UTF-8"?> |
| | | <config> |
| | | <version val="Firebase 3.8.5"/> |
| | | <version val="Firebase 3.9.2"/> |
| | | <comps> |
| | | |
| | | <!-- 公共模块 --> |
old mode 100755
new mode 100644
Binary files differ
old mode 100755
new mode 100644
New file |
| | |
| | | #import <Foundation/Foundation.h> |
| | | |
| | | #import "FIRAnalytics.h" |
| | | |
| | | NS_ASSUME_NONNULL_BEGIN |
| | | |
| | | /// The type of consent to set. Supported consent types are `ConsentType.adStorage` and |
| | | /// `ConsentType.analyticsStorage`. Omitting a type retains its previous status. |
| | | typedef NSString *FIRConsentType NS_TYPED_ENUM NS_SWIFT_NAME(ConsentType); |
| | | extern FIRConsentType const FIRConsentTypeAdStorage; |
| | | extern FIRConsentType const FIRConsentTypeAnalyticsStorage; |
| | | |
| | | /// The status value of the consent type. Supported statuses are `ConsentStatus.granted` and |
| | | /// `ConsentStatus.denied`. |
| | | typedef NSString *FIRConsentStatus NS_TYPED_ENUM NS_SWIFT_NAME(ConsentStatus); |
| | | extern FIRConsentStatus const FIRConsentStatusDenied; |
| | | extern FIRConsentStatus const FIRConsentStatusGranted; |
| | | |
| | | /// Sets the applicable end user consent state. |
| | | @interface FIRAnalytics (Consent) |
| | | |
| | | /// Sets the applicable end user consent state (e.g. for device identifiers) for this app on this |
| | | /// device. Use the consent settings to specify individual consent type values. Settings are |
| | | /// persisted across app sessions. By default consent types are set to `ConsentStatus.granted`. |
| | | /// |
| | | /// @param consentSettings An NSDictionary of consent types. Supported consent type keys are |
| | | /// `ConsentType.adStorage` and `ConsentType.analyticsStorage`. Valid values are |
| | | /// `ConsentStatus.granted` and `ConsentStatus.denied`. |
| | | + (void)setConsent:(NSDictionary<FIRConsentType, FIRConsentStatus> *)consentSettings; |
| | | |
| | | @end |
| | | |
| | | NS_ASSUME_NONNULL_END |
old mode 100755
new mode 100644
| | |
| | | /// <li>ad_activeview</li> |
| | | /// <li>ad_click</li> |
| | | /// <li>ad_exposure</li> |
| | | /// <li>ad_impression</li> |
| | | /// <li>ad_query</li> |
| | | /// <li>ad_reward</li> |
| | | /// <li>adunit_exposure</li> |
| | | /// <li>app_background</li> |
| | | /// <li>app_clear_data</li> |
| | | /// <li>app_exception</li> |
| | | /// <li>app_remove</li> |
| | | /// <li>app_store_refund</li> |
| | | /// <li>app_store_subscription_cancel</li> |
| | | /// <li>app_store_subscription_convert</li> |
| | | /// <li>app_store_subscription_renew</li> |
| | | /// <li>app_update</li> |
| | | /// <li>app_upgrade</li> |
| | | /// <li>dynamic_link_app_open</li> |
| | | /// <li>dynamic_link_app_update</li> |
| | | /// <li>dynamic_link_first_open</li> |
| | | /// <li>error</li> |
| | | /// <li>firebase_campaign</li> |
| | | /// <li>first_open</li> |
| | | /// <li>first_visit</li> |
| | | /// <li>in_app_purchase</li> |
| | | /// <li>notification_dismiss</li> |
| | | /// <li>notification_foreground</li> |
| | |
| | | /// <li>notification_receive</li> |
| | | /// <li>os_update</li> |
| | | /// <li>session_start</li> |
| | | /// <li>session_start_with_rollout</li> |
| | | /// <li>user_engagement</li> |
| | | /// </ul> |
| | | /// |
| | |
| | | /// session terminates. |
| | | + (void)setSessionTimeoutInterval:(NSTimeInterval)sessionTimeoutInterval; |
| | | |
| | | /// The unique ID for this instance of the application. |
| | | + (NSString *)appInstanceID; |
| | | /// Returns the unique ID for this instance of the application or nil if |
| | | /// `ConsentType.analyticsStorage` has been set to `ConsentStatus.denied`. |
| | | /// |
| | | /// @see `FIRAnalytics+Consent.h` |
| | | + (nullable NSString *)appInstanceID; |
| | | |
| | | /// Clears all analytics data for this instance from the device and resets the app instance ID. |
| | | /// FIRAnalyticsConfiguration values will be reset to the default values. |
| | |
| | | /// that parameter. Passing in a nil dictionary will clear all parameters. |
| | | + (void)setDefaultEventParameters:(nullable NSDictionary<NSString *, id> *)parameters; |
| | | |
| | | /// Unavailable. |
| | | - (instancetype)init NS_UNAVAILABLE; |
| | | |
| | | @end |
| | | |
| | | NS_ASSUME_NONNULL_END |
old mode 100755
new mode 100644
| | |
| | | static NSString *const kFIREventAddToWishlist NS_SWIFT_NAME(AnalyticsEventAddToWishlist) = |
| | | @"add_to_wishlist"; |
| | | |
| | | /// Ad Impression event. This event signifies when a user sees an ad impression. Note: If you supply |
| | | /// the @c kFIRParameterValue parameter, you must also supply the @c kFIRParameterCurrency parameter |
| | | /// so that revenue metrics can be computed accurately. Params: |
| | | /// |
| | | /// <ul> |
| | | /// <li>@c kFIRParameterAdPlatform (NSString) (optional)</li> |
| | | /// <li>@c kFIRParameterAdFormat (NSString) (optional)</li> |
| | | /// <li>@c kFIRParameterAdSource (NSString) (optional)</li> |
| | | /// <li>@c kFIRParameterAdUnitName (NSString) (optional)</li> |
| | | /// <li>@c kFIRParameterCurrency (NSString) (optional)</li> |
| | | /// <li>@c kFIRParameterValue (double as NSNumber) (optional)</li> |
| | | /// </ul> |
| | | static NSString *const kFIREventAdImpression NS_SWIFT_NAME(AnalyticsEventAdImpression) = |
| | | @"ad_impression"; |
| | | |
| | | /// App Open event. By logging this event when an App becomes active, developers can understand how |
| | | /// often users leave and return during the course of a Session. Although Sessions are automatically |
| | | /// reported, this event can provide further clarification around the continuous engagement of |
old mode 100755
new mode 100644
| | |
| | | static NSString *const kFIRParameterAchievementID NS_SWIFT_NAME(AnalyticsParameterAchievementID) = |
| | | @"achievement_id"; |
| | | |
| | | /// The ad format (e.g. Banner, Interstitial, Rewarded, Native, Rewarded Interstitial, Instream). |
| | | /// (NSString). |
| | | /// <pre> |
| | | /// NSDictionary *params = @{ |
| | | /// kFIRParameterAdFormat : @"Banner", |
| | | /// // ... |
| | | /// }; |
| | | /// </pre> |
| | | static NSString *const kFIRParameterAdFormat NS_SWIFT_NAME(AnalyticsParameterAdFormat) = |
| | | @"ad_format"; |
| | | |
| | | /// Ad Network Click ID (NSString). Used for network-specific click IDs which vary in format. |
| | | /// <pre> |
| | | /// NSDictionary *params = @{ |
| | |
| | | static NSString *const kFIRParameterAdNetworkClickID |
| | | NS_SWIFT_NAME(AnalyticsParameterAdNetworkClickID) = @"aclid"; |
| | | |
| | | /// The ad platform (e.g. MoPub, IronSource) (NSString). |
| | | /// <pre> |
| | | /// NSDictionary *params = @{ |
| | | /// kFIRParameterAdPlatform : @"MoPub", |
| | | /// // ... |
| | | /// }; |
| | | /// </pre> |
| | | static NSString *const kFIRParameterAdPlatform NS_SWIFT_NAME(AnalyticsParameterAdPlatform) = |
| | | @"ad_platform"; |
| | | |
| | | /// The ad source (e.g. AdColony) (NSString). |
| | | /// <pre> |
| | | /// NSDictionary *params = @{ |
| | | /// kFIRParameterAdSource : @"AdColony", |
| | | /// // ... |
| | | /// }; |
| | | /// </pre> |
| | | static NSString *const kFIRParameterAdSource NS_SWIFT_NAME(AnalyticsParameterAdSource) = |
| | | @"ad_source"; |
| | | |
| | | /// The ad unit name (e.g. Banner_03) (NSString). |
| | | /// <pre> |
| | | /// NSDictionary *params = @{ |
| | | /// kFIRParameterAdUnitName : @"Banner_03", |
| | | /// // ... |
| | | /// }; |
| | | /// </pre> |
| | | static NSString *const kFIRParameterAdUnitName NS_SWIFT_NAME(AnalyticsParameterAdUnitName) = |
| | | @"ad_unit_name"; |
| | | |
| | | /// A product affiliation to designate a supplying company or brick and mortar store location |
| | | /// (NSString). <pre> |
| | | /// NSDictionary *params = @{ |
old mode 100755
new mode 100644
old mode 100755
new mode 100644
| | |
| | | #import "FIRAnalytics+AppDelegate.h" |
| | | #import "FIRAnalytics+Consent.h" |
| | | #import "FIRAnalytics.h" |
| | | #import "FIREventNames.h" |
| | | #import "FIRParameterNames.h" |
New file |
| | |
| | | <?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>CFBundleExecutable</key> |
| | | <string>FirebaseAnalytics</string> |
| | | <key>CFBundleIdentifier</key> |
| | | <string>com.firebase.Firebase-FirebaseAnalytics</string> |
| | | <key>CFBundleInfoDictionaryVersion</key> |
| | | <string>6.0</string> |
| | | <key>CFBundleName</key> |
| | | <string>FirebaseAnalytics</string> |
| | | <key>CFBundlePackageType</key> |
| | | <string>FMWK</string> |
| | | <key>CFBundleVersion</key> |
| | | <string>7.4.0</string> |
| | | <key>DTSDKName</key> |
| | | <string>iphonesimulator11.2</string> |
| | | </dict> |
| | | </plist> |
old mode 100755
new mode 100644
| | |
| | | framework module FirebaseAnalytics { |
| | | umbrella header "FirebaseAnalytics.h" |
| | | export * |
| | | module * { export * } |
| | | link "sqlite3" |
| | | link "z" |
| | | link framework "CoreData" |
| | | umbrella header "FirebaseAnalytics.h" |
| | | export * |
| | | module * { export * } |
| | | link framework "CoreTelephony" |
| | | link framework "Foundation" |
| | | link framework "Security" |
| | | link framework "StoreKit" |
| | | link framework "SystemConfiguration" |
| | | link framework "UIKit" |
| | | link "c++" |
| | | link "sqlite3" |
| | | link "z" |
| | | } |
| | |
| | | * FIROptions *options = [[FIROptions alloc] initWithContentsOfFile:filePath]; |
| | | * Returns nil if the plist file does not exist or is invalid. |
| | | */ |
| | | - (nullable instancetype)initWithContentsOfFile:(NSString *)plistPath; |
| | | - (nullable instancetype)initWithContentsOfFile:(NSString *)plistPath NS_DESIGNATED_INITIALIZER; |
| | | |
| | | /** |
| | | * Initializes a customized instance of FIROptions with required fields. Use the mutable properties |
| | |
| | | // clang-format off |
| | | - (instancetype)initWithGoogleAppID:(NSString *)googleAppID |
| | | GCMSenderID:(NSString *)GCMSenderID |
| | | NS_SWIFT_NAME(init(googleAppID:gcmSenderID:)); |
| | | NS_SWIFT_NAME(init(googleAppID:gcmSenderID:)) NS_DESIGNATED_INITIALIZER; |
| | | // clang-format on |
| | | |
| | | /** Unavailable. Please use `init(contentsOfFile:)` or `init(googleAppID:gcmSenderID:)` instead. */ |
| | | - (instancetype)init NS_UNAVAILABLE; |
| | | |
| | | @end |
| | | |
| | | NS_ASSUME_NONNULL_END |
File was renamed from frameworks/FirebaseInstallations.framework/Headers/FIRInstallationsVersion.h |
| | |
| | | /* |
| | | * Copyright 2019 Google |
| | | * Copyright 2020 Google LLC |
| | | * |
| | | * Licensed under the Apache License, Version 2.0 (the "License"); |
| | | * you may not use this file except in compliance with the License. |
| | |
| | | |
| | | #import <Foundation/Foundation.h> |
| | | |
| | | FOUNDATION_EXPORT const char *const FIRInstallationsVersionStr; |
| | | NS_ASSUME_NONNULL_BEGIN |
| | | |
| | | NS_SWIFT_NAME(FirebaseVersion()) |
| | | NSString* FIRFirebaseVersion(void); |
| | | |
| | | NS_ASSUME_NONNULL_END |
| | |
| | | #import "FIRConfiguration.h" |
| | | #import "FIRLoggerLevel.h" |
| | | #import "FIROptions.h" |
| | | #import "FIRVersion.h" |
New file |
| | |
| | | <?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>CFBundleExecutable</key> |
| | | <string>FirebaseCore</string> |
| | | <key>CFBundleIdentifier</key> |
| | | <string>com.firebase.Firebase-FirebaseCore</string> |
| | | <key>CFBundleInfoDictionaryVersion</key> |
| | | <string>6.0</string> |
| | | <key>CFBundleName</key> |
| | | <string>FirebaseCore</string> |
| | | <key>CFBundlePackageType</key> |
| | | <string>FMWK</string> |
| | | <key>CFBundleVersion</key> |
| | | <string>7.4.0</string> |
| | | <key>DTSDKName</key> |
| | | <string>iphonesimulator11.2</string> |
| | | </dict> |
| | | </plist> |
copy from frameworks/FirebaseInstallations.framework/Headers/FIRInstallationsVersion.h
copy to frameworks/FirebaseCoreDiagnostics.framework/Headers/FIRCoreDiagnostics.h
File was copied from frameworks/FirebaseInstallations.framework/Headers/FIRInstallationsVersion.h |
| | |
| | | /* |
| | | * Copyright 2019 Google |
| | | * Copyright 2020 Google LLC |
| | | * |
| | | * Licensed under the Apache License, Version 2.0 (the "License"); |
| | | * you may not use this file except in compliance with the License. |
| | |
| | | * limitations under the License. |
| | | */ |
| | | |
| | | #import <Foundation/Foundation.h> |
| | | |
| | | FOUNDATION_EXPORT const char *const FIRInstallationsVersionStr; |
| | | // There are no actual public headers in the lib. This is a dummy public header to prevent Cocoapods |
| | | // from adding all internal headers as public. |
| | |
| | | #endif |
| | | #endif |
| | | |
| | | #import "firebasecore.nanopb.h" |
| | | #import "GoogleDataTransportInternal.h" |
| | | #import "GULAppEnvironmentUtil.h" |
| | | #import "GULHeartbeatDateStorage.h" |
| | | #import "GULKeychainStorage.h" |
| | | #import "GULKeychainUtils.h" |
| | | #import "GULSecureCoding.h" |
| | | #import "GULLogger.h" |
| | | #import "FIRCoreDiagnosticsData.h" |
| | | #import "FIRCoreDiagnosticsInterop.h" |
| | | #import "FIRCoreDiagnostics.h" |
| | | |
| | | FOUNDATION_EXPORT double FirebaseCoreDiagnosticsVersionNumber; |
| | | FOUNDATION_EXPORT const unsigned char FirebaseCoreDiagnosticsVersionString[]; |
New file |
| | |
| | | <?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>CFBundleExecutable</key> |
| | | <string>FirebaseCoreDiagnostics</string> |
| | | <key>CFBundleIdentifier</key> |
| | | <string>com.firebase.Firebase-FirebaseCoreDiagnostics</string> |
| | | <key>CFBundleInfoDictionaryVersion</key> |
| | | <string>6.0</string> |
| | | <key>CFBundleName</key> |
| | | <string>FirebaseCoreDiagnostics</string> |
| | | <key>CFBundlePackageType</key> |
| | | <string>FMWK</string> |
| | | <key>CFBundleVersion</key> |
| | | <string>7.4.0</string> |
| | | <key>DTSDKName</key> |
| | | <string>iphonesimulator11.2</string> |
| | | </dict> |
| | | </plist> |
| | |
| | | NS_ASSUME_NONNULL_BEGIN |
| | | |
| | | /** A notification with this name is sent each time an installation is created or deleted. */ |
| | | FOUNDATION_EXPORT const NSNotificationName FIRInstallationIDDidChangeNotification; |
| | | FOUNDATION_EXPORT const NSNotificationName FIRInstallationIDDidChangeNotification |
| | | NS_SWIFT_NAME(InstallationIDDidChange); |
| | | /** `userInfo` key for the `FirebaseApp.name` in `FIRInstallationIDDidChangeNotification`. */ |
| | | FOUNDATION_EXPORT NSString *const kFIRInstallationIDDidChangeNotificationAppNameKey; |
| | | FOUNDATION_EXPORT NSString *const kFIRInstallationIDDidChangeNotificationAppNameKey |
| | | NS_SWIFT_NAME(InstallationIDDidChangeAppNameKey); |
| | | |
| | | /** |
| | | * An installation ID handler block. |
| | |
| | | - (void)installationIDWithCompletion:(FIRInstallationsIDHandler)completion; |
| | | |
| | | /** |
| | | * Retrieves (locally if it exists or from the server) a valid authorization token. An existing |
| | | * token may be invalidated or expired, so it is recommended to fetch the auth token before each |
| | | * server request. The method does the same as `Installations.authTokenForcingRefresh(:, |
| | | * Retrieves (locally if it exists or from the server) a valid installation auth token. An existing |
| | | * token may be invalidated or expired, so it is recommended to fetch the installation auth token |
| | | * before each server request. The method does the same as `Installations.authTokenForcingRefresh(:, |
| | | * completion:)` with forcing refresh `NO`. |
| | | * @param completion A completion handler which is invoked when the operation completes. See |
| | | * `InstallationsTokenHandler` for additional details. |
| | |
| | | - (void)authTokenWithCompletion:(FIRInstallationsTokenHandler)completion; |
| | | |
| | | /** |
| | | * Retrieves (locally or from the server depending on `forceRefresh` value) a valid authorization |
| | | * token. An existing token may be invalidated or expire, so it is recommended to fetch the auth |
| | | * token before each server request. This method should be used with `forceRefresh == YES` when e.g. |
| | | * a request with the previously fetched auth token failed with "Not Authorized" error. |
| | | * @param forceRefresh If `YES` then the locally cached auth token will be ignored and a new one |
| | | * will be requested from the server. If `NO`, then the locally cached auth token will be returned |
| | | * if exists and has not expired yet. |
| | | * Retrieves (locally or from the server depending on `forceRefresh` value) a valid installation |
| | | * auth token. An existing token may be invalidated or expire, so it is recommended to fetch the |
| | | * installation auth token before each server request. This method should be used with `forceRefresh |
| | | * == YES` when e.g. a request with the previously fetched installation auth token failed with "Not |
| | | * Authorized" error. |
| | | * @param forceRefresh If `YES` then the locally cached installation auth token will be ignored and |
| | | * a new one will be requested from the server. If `NO`, then the locally cached installation auth |
| | | * token will be returned if exists and has not expired yet. |
| | | * @param completion A completion handler which is invoked when the operation completes. See |
| | | * `InstallationsTokenHandler` for additional details. |
| | | */ |
| | |
| | | |
| | | NS_ASSUME_NONNULL_BEGIN |
| | | |
| | | /** The class represents a result of the auth token request. */ |
| | | /** The class represents a result of the installation auth token request. */ |
| | | NS_SWIFT_NAME(InstallationsAuthTokenResult) |
| | | @interface FIRInstallationsAuthTokenResult : NSObject |
| | | |
| | | /** The authorization token string. */ |
| | | /** The installation auth token string. */ |
| | | @property(nonatomic, readonly) NSString *authToken; |
| | | |
| | | /** The auth token expiration date. */ |
| | | /** The installation auth token expiration date. */ |
| | | @property(nonatomic, readonly) NSDate *expirationDate; |
| | | |
| | | @end |
| | |
| | | #import "FIRInstallations.h" |
| | | #import "FIRInstallationsAuthTokenResult.h" |
| | | #import "FIRInstallationsErrors.h" |
| | | #import "FIRInstallationsVersion.h" |
New file |
| | |
| | | <?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>CFBundleExecutable</key> |
| | | <string>FirebaseInstallations</string> |
| | | <key>CFBundleIdentifier</key> |
| | | <string>com.firebase.Firebase-FirebaseInstallations</string> |
| | | <key>CFBundleInfoDictionaryVersion</key> |
| | | <string>6.0</string> |
| | | <key>CFBundleName</key> |
| | | <string>FirebaseInstallations</string> |
| | | <key>CFBundlePackageType</key> |
| | | <string>FMWK</string> |
| | | <key>CFBundleVersion</key> |
| | | <string>7.4.0</string> |
| | | <key>DTSDKName</key> |
| | | <string>iphonesimulator11.2</string> |
| | | </dict> |
| | | </plist> |
old mode 100755
new mode 100644
Binary files differ
New file |
| | |
| | | <?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>CFBundleExecutable</key> |
| | | <string>GoogleAppMeasurement</string> |
| | | <key>CFBundleIdentifier</key> |
| | | <string>com.firebase.Firebase-GoogleAppMeasurement</string> |
| | | <key>CFBundleInfoDictionaryVersion</key> |
| | | <string>6.0</string> |
| | | <key>CFBundleName</key> |
| | | <string>GoogleAppMeasurement</string> |
| | | <key>CFBundlePackageType</key> |
| | | <string>FMWK</string> |
| | | <key>CFBundleVersion</key> |
| | | <string>7.4.0</string> |
| | | <key>DTSDKName</key> |
| | | <string>iphonesimulator11.2</string> |
| | | </dict> |
| | | </plist> |
old mode 100755
new mode 100644
| | |
| | | framework module GoogleAppMeasurement { |
| | | export * |
| | | module * { export * } |
| | | umbrella header "GoogleAppMeasurement-umbrella.h" |
| | | export * |
| | | module * { export * } |
| | | link framework "Security" |
| | | link framework "SystemConfiguration" |
| | | link "c++" |
| | | link "sqlite3" |
| | | link "z" |
| | | link framework "CoreData" |
| | | link framework "Security" |
| | | link framework "StoreKit" |
| | | link framework "SystemConfiguration" |
| | | link framework "UIKit" |
| | | } |
New file |
| | |
| | | /* |
| | | * 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 |
| | |
| | | |
| | | #import "GDTCORClock.h" |
| | | #import "GDTCORConsoleLogger.h" |
| | | #import "GDTCOREndpoints.h" |
| | | #import "GDTCOREvent.h" |
| | | #import "GDTCOREventDataObject.h" |
| | | #import "GDTCOREventTransformer.h" |
| | | #import "GDTCORLifecycle.h" |
| | | #import "GDTCORRegistrar.h" |
| | | #import "GDTCORTargets.h" |
| | | #import "GDTCORTransport.h" |
| | | #import "GDTCORUploader.h" |
New file |
| | |
| | | <?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>CFBundleExecutable</key> |
| | | <string>GoogleDataTransport</string> |
| | | <key>CFBundleIdentifier</key> |
| | | <string>com.firebase.Firebase-GoogleDataTransport</string> |
| | | <key>CFBundleInfoDictionaryVersion</key> |
| | | <string>6.0</string> |
| | | <key>CFBundleName</key> |
| | | <string>GoogleDataTransport</string> |
| | | <key>CFBundlePackageType</key> |
| | | <string>FMWK</string> |
| | | <key>CFBundleVersion</key> |
| | | <string>8.2.0</string> |
| | | <key>DTSDKName</key> |
| | | <string>iphonesimulator11.2</string> |
| | | </dict> |
| | | </plist> |
New file |
| | |
| | | /* |
| | | * 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 "GULApplication.h" |
| | | |
| | | NS_ASSUME_NONNULL_BEGIN |
| | | |
| | | typedef NSString *const GULAppDelegateInterceptorID; |
| | | |
| | | /** This class contains methods that isa swizzle the app delegate. */ |
| | | @interface GULAppDelegateSwizzler : NSProxy |
| | | |
| | | /** Registers an app delegate interceptor whose methods will be invoked as they're invoked on the |
| | | * original app delegate. |
| | | * |
| | | * @param interceptor An instance of a class that conforms to the application delegate protocol. |
| | | * The interceptor is NOT retained. |
| | | * @return A unique GULAppDelegateInterceptorID if interceptor was successfully registered; nil |
| | | * if it fails. |
| | | */ |
| | | + (nullable GULAppDelegateInterceptorID)registerAppDelegateInterceptor: |
| | | (id<GULApplicationDelegate>)interceptor; |
| | | |
| | | /** Unregisters an interceptor with the given ID if it exists. |
| | | * |
| | | * @param interceptorID The object that was generated when the interceptor was registered. |
| | | */ |
| | | + (void)unregisterAppDelegateInterceptorWithID:(GULAppDelegateInterceptorID)interceptorID; |
| | | |
| | | /** This method ensures that the original app delegate has been proxied. Call this before |
| | | * registering your interceptor. This method is safe to call multiple times (but it only proxies |
| | | * the app delegate once). |
| | | * |
| | | * This method doesn't proxy APNS related methods: |
| | | * @code |
| | | * - application:didRegisterForRemoteNotificationsWithDeviceToken: |
| | | * - application:didFailToRegisterForRemoteNotificationsWithError: |
| | | * - application:didReceiveRemoteNotification:fetchCompletionHandler: |
| | | * - application:didReceiveRemoteNotification: |
| | | * @endcode |
| | | * |
| | | * To proxy these methods use +[GULAppDelegateSwizzler |
| | | * proxyOriginalDelegateIncludingAPNSMethods]. The methods have to be proxied separately to |
| | | * avoid potential warnings from Apple review about missing Push Notification Entitlement (e.g. |
| | | * https://github.com/firebase/firebase-ios-sdk/issues/2807) |
| | | * |
| | | * The method has no effect for extensions. |
| | | * |
| | | * @see proxyOriginalDelegateIncludingAPNSMethods |
| | | */ |
| | | + (void)proxyOriginalDelegate; |
| | | |
| | | /** This method ensures that the original app delegate has been proxied including APNS related |
| | | * methods. Call this before registering your interceptor. This method is safe to call multiple |
| | | * times (but it only proxies the app delegate once) or |
| | | * after +[GULAppDelegateSwizzler proxyOriginalDelegate] |
| | | * |
| | | * This method calls +[GULAppDelegateSwizzler proxyOriginalDelegate] under the hood. |
| | | * After calling this method the following App Delegate methods will be proxied in addition to |
| | | * the methods proxied by proxyOriginalDelegate: |
| | | * @code |
| | | * - application:didRegisterForRemoteNotificationsWithDeviceToken: |
| | | * - application:didFailToRegisterForRemoteNotificationsWithError: |
| | | * - application:didReceiveRemoteNotification:fetchCompletionHandler: |
| | | * - application:didReceiveRemoteNotification: |
| | | * @endcode |
| | | * |
| | | * The method has no effect for extensions. |
| | | * |
| | | * @see proxyOriginalDelegate |
| | | */ |
| | | + (void)proxyOriginalDelegateIncludingAPNSMethods; |
| | | |
| | | /** Indicates whether app delegate proxy is explicitly disabled or enabled. Enabled by default. |
| | | * |
| | | * @return YES if AppDelegateProxy is Enabled, NO otherwise. |
| | | */ |
| | | + (BOOL)isAppDelegateProxyEnabled; |
| | | |
| | | /** Returns the current sharedApplication. |
| | | * |
| | | * @return the current application instance if in an app, or nil if in extension or if it doesn't |
| | | * exist. |
| | | */ |
| | | + (nullable GULApplication *)sharedApplication; |
| | | |
| | | /** Do not initialize this class. */ |
| | | - (instancetype)init NS_UNAVAILABLE; |
| | | |
| | | NS_ASSUME_NONNULL_END |
| | | |
| | | @end |
File was renamed from frameworks/FirebaseCoreDiagnostics.framework/Headers/GULAppEnvironmentUtil.h |
| | |
| | | |
| | | #import <Foundation/Foundation.h> |
| | | |
| | | NS_ASSUME_NONNULL_BEGIN |
| | | |
| | | @interface GULAppEnvironmentUtil : NSObject |
| | | |
| | | /// Indicates whether the app is from Apple Store or not. Returns NO if the app is on simulator, |
| | |
| | | + (BOOL)isSimulator; |
| | | |
| | | /// The current device model. Returns an empty string if device model cannot be retrieved. |
| | | + (NSString *)deviceModel; |
| | | + (nullable NSString *)deviceModel; |
| | | |
| | | /// The current operating system version. Returns an empty string if the system version cannot be |
| | | /// retrieved. |
| | |
| | | + (BOOL)isIOS7OrHigher DEPRECATED_MSG_ATTRIBUTE( |
| | | "Always `YES` because only iOS 8 and higher supported. The method will be removed."); |
| | | |
| | | /// @return YES if Swift runtime detected in the app. |
| | | + (BOOL)hasSwiftRuntime; |
| | | |
| | | /// @return An Apple platform. Possible values "ios", "tvos", "macos", "watchos", "maccatalyst". |
| | | + (NSString *)applePlatform; |
| | | |
| | | /// @return The way the library was added to the app, e.g. "swiftpm", "cocoapods", etc. |
| | | + (NSString *)deploymentType; |
| | | |
| | | @end |
| | | |
| | | NS_ASSUME_NONNULL_END |
New file |
| | |
| | | /* |
| | | * Copyright 2019 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> |
| | | |
| | | #if TARGET_OS_IOS || TARGET_OS_TV |
| | | |
| | | #import <UIKit/UIKit.h> |
| | | |
| | | #define GULApplication UIApplication |
| | | #define GULApplicationDelegate UIApplicationDelegate |
| | | #define GULUserActivityRestoring UIUserActivityRestoring |
| | | |
| | | static NSString *const kGULApplicationClassName = @"UIApplication"; |
| | | |
| | | #elif TARGET_OS_OSX |
| | | |
| | | #import <AppKit/AppKit.h> |
| | | |
| | | #define GULApplication NSApplication |
| | | #define GULApplicationDelegate NSApplicationDelegate |
| | | #define GULUserActivityRestoring NSUserActivityRestoring |
| | | |
| | | static NSString *const kGULApplicationClassName = @"NSApplication"; |
| | | |
| | | #elif TARGET_OS_WATCH |
| | | |
| | | #import <WatchKit/WatchKit.h> |
| | | |
| | | // We match the according watchOS API but swizzling should not work in watch |
| | | #define GULApplication WKExtension |
| | | #define GULApplicationDelegate WKExtensionDelegate |
| | | #define GULUserActivityRestoring NSUserActivityRestoring |
| | | |
| | | static NSString *const kGULApplicationClassName = @"WKExtension"; |
| | | |
| | | #endif |
File was renamed from frameworks/FirebaseCoreDiagnostics.framework/Headers/GULLogger.h |
| | |
| | | |
| | | #import <Foundation/Foundation.h> |
| | | |
| | | #if SWIFT_PACKAGE |
| | | @import GoogleUtilities_Logger; |
| | | #else |
| | | #import <GoogleUtilities/GULLoggerLevel.h> |
| | | #endif |
| | | #import "GULLoggerLevel.h" |
| | | |
| | | NS_ASSUME_NONNULL_BEGIN |
| | | |
| | |
| | | * Register version to include in logs. |
| | | * (required) version |
| | | */ |
| | | extern void GULLoggerRegisterVersion(const char *version); |
| | | extern void GULLoggerRegisterVersion(NSString *version); |
| | | |
| | | /** |
| | | * Logs a message to the Xcode console and the device log. If running from AppStore, will |
New file |
| | |
| | | /* |
| | | * Copyright 2017 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> |
| | | |
| | | /// A mutable dictionary that provides atomic accessor and mutators. |
| | | @interface GULMutableDictionary : NSObject |
| | | |
| | | /// Returns an object given a key in the dictionary or nil if not found. |
| | | - (id)objectForKey:(id)key; |
| | | |
| | | /// Updates the object given its key or adds it to the dictionary if it is not in the dictionary. |
| | | - (void)setObject:(id)object forKey:(id<NSCopying>)key; |
| | | |
| | | /// Removes the object given its session ID from the dictionary. |
| | | - (void)removeObjectForKey:(id)key; |
| | | |
| | | /// Removes all objects. |
| | | - (void)removeAllObjects; |
| | | |
| | | /// Returns the number of current objects in the dictionary. |
| | | - (NSUInteger)count; |
| | | |
| | | /// Returns an object given a key in the dictionary or nil if not found. |
| | | - (id)objectForKeyedSubscript:(id<NSCopying>)key; |
| | | |
| | | /// Updates the object given its key or adds it to the dictionary if it is not in the dictionary. |
| | | - (void)setObject:(id)obj forKeyedSubscript:(id<NSCopying>)key; |
| | | |
| | | /// Returns the immutable dictionary. |
| | | - (NSDictionary *)dictionary; |
| | | |
| | | @end |
New file |
| | |
| | | /* |
| | | * Copyright 2017 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 "GULNetworkConstants.h" |
| | | #import "GULNetworkLoggerProtocol.h" |
| | | #import "GULNetworkURLSession.h" |
| | | |
| | | /// Delegate protocol for GULNetwork events. |
| | | @protocol GULNetworkReachabilityDelegate |
| | | |
| | | /// Tells the delegate to handle events when the network reachability changes to connected or not |
| | | /// connected. |
| | | - (void)reachabilityDidChange; |
| | | |
| | | @end |
| | | |
| | | /// The Network component that provides network status and handles network requests and responses. |
| | | /// This is not thread safe. |
| | | /// |
| | | /// NOTE: |
| | | /// User must add FIRAnalytics handleEventsForBackgroundURLSessionID:completionHandler to the |
| | | /// AppDelegate application:handleEventsForBackgroundURLSession:completionHandler: |
| | | @interface GULNetwork : NSObject |
| | | |
| | | /// Indicates if network connectivity is available. |
| | | @property(nonatomic, readonly, getter=isNetworkConnected) BOOL networkConnected; |
| | | |
| | | /// Indicates if there are any uploads in progress. |
| | | @property(nonatomic, readonly, getter=hasUploadInProgress) BOOL uploadInProgress; |
| | | |
| | | /// An optional delegate that can be used in the event when network reachability changes. |
| | | @property(nonatomic, weak) id<GULNetworkReachabilityDelegate> reachabilityDelegate; |
| | | |
| | | /// An optional delegate that can be used to log messages, warnings or errors that occur in the |
| | | /// network operations. |
| | | @property(nonatomic, weak) id<GULNetworkLoggerDelegate> loggerDelegate; |
| | | |
| | | /// Indicates whether the logger should display debug messages. |
| | | @property(nonatomic, assign) BOOL isDebugModeEnabled; |
| | | |
| | | /// The time interval in seconds for the network request to timeout. |
| | | @property(nonatomic, assign) NSTimeInterval timeoutInterval; |
| | | |
| | | /// Initializes with the default reachability host. |
| | | - (instancetype)init; |
| | | |
| | | /// Initializes with a custom reachability host. |
| | | - (instancetype)initWithReachabilityHost:(NSString *)reachabilityHost; |
| | | |
| | | /// Handles events when background session with the given ID has finished. |
| | | + (void)handleEventsForBackgroundURLSessionID:(NSString *)sessionID |
| | | completionHandler:(GULNetworkSystemCompletionHandler)completionHandler; |
| | | |
| | | /// Compresses and sends a POST request with the provided data to the URL. The session will be |
| | | /// background session if usingBackgroundSession is YES. Otherwise, the POST session is default |
| | | /// session. Returns a session ID or nil if an error occurs. |
| | | - (NSString *)postURL:(NSURL *)url |
| | | payload:(NSData *)payload |
| | | queue:(dispatch_queue_t)queue |
| | | usingBackgroundSession:(BOOL)usingBackgroundSession |
| | | completionHandler:(GULNetworkCompletionHandler)handler; |
| | | |
| | | /// Sends a GET request with the provided data to the URL. The session will be background session |
| | | /// if usingBackgroundSession is YES. Otherwise, the GET session is default session. Returns a |
| | | /// session ID or nil if an error occurs. |
| | | - (NSString *)getURL:(NSURL *)url |
| | | headers:(NSDictionary *)headers |
| | | queue:(dispatch_queue_t)queue |
| | | usingBackgroundSession:(BOOL)usingBackgroundSession |
| | | completionHandler:(GULNetworkCompletionHandler)handler; |
| | | |
| | | @end |
New file |
| | |
| | | /* |
| | | * Copyright 2017 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> |
| | | |
| | | /// Error codes in Firebase Network error domain. |
| | | /// Note: these error codes should never change. It would make it harder to decode the errors if |
| | | /// we inadvertently altered any of these codes in a future SDK version. |
| | | typedef NS_ENUM(NSInteger, GULNetworkErrorCode) { |
| | | /// Unknown error. |
| | | GULNetworkErrorCodeUnknown = 0, |
| | | /// Error occurs when the request URL is invalid. |
| | | GULErrorCodeNetworkInvalidURL = 1, |
| | | /// Error occurs when request cannot be constructed. |
| | | GULErrorCodeNetworkRequestCreation = 2, |
| | | /// Error occurs when payload cannot be compressed. |
| | | GULErrorCodeNetworkPayloadCompression = 3, |
| | | /// Error occurs when session task cannot be created. |
| | | GULErrorCodeNetworkSessionTaskCreation = 4, |
| | | /// Error occurs when there is no response. |
| | | GULErrorCodeNetworkInvalidResponse = 5 |
| | | }; |
| | | |
| | | #pragma mark - Network constants |
| | | |
| | | /// The prefix of the ID of the background session. |
| | | extern NSString *const kGULNetworkBackgroundSessionConfigIDPrefix; |
| | | |
| | | /// The sub directory to store the files of data that is being uploaded in the background. |
| | | extern NSString *const kGULNetworkApplicationSupportSubdirectory; |
| | | |
| | | /// Name of the temporary directory that stores files for background uploading. |
| | | extern NSString *const kGULNetworkTempDirectoryName; |
| | | |
| | | /// The period when the temporary uploading file can stay. |
| | | extern const NSTimeInterval kGULNetworkTempFolderExpireTime; |
| | | |
| | | /// The default network request timeout interval. |
| | | extern const NSTimeInterval kGULNetworkTimeOutInterval; |
| | | |
| | | /// The host to check the reachability of the network. |
| | | extern NSString *const kGULNetworkReachabilityHost; |
| | | |
| | | /// The key to get the error context of the UserInfo. |
| | | extern NSString *const kGULNetworkErrorContext; |
| | | |
| | | #pragma mark - Network Status Code |
| | | |
| | | extern const int kGULNetworkHTTPStatusOK; |
| | | extern const int kGULNetworkHTTPStatusNoContent; |
| | | extern const int kGULNetworkHTTPStatusCodeMultipleChoices; |
| | | extern const int kGULNetworkHTTPStatusCodeMovedPermanently; |
| | | extern const int kGULNetworkHTTPStatusCodeFound; |
| | | extern const int kGULNetworkHTTPStatusCodeNotModified; |
| | | extern const int kGULNetworkHTTPStatusCodeMovedTemporarily; |
| | | extern const int kGULNetworkHTTPStatusCodeNotFound; |
| | | extern const int kGULNetworkHTTPStatusCodeCannotAcceptTraffic; |
| | | extern const int kGULNetworkHTTPStatusCodeUnavailable; |
New file |
| | |
| | | /* |
| | | * Copyright 2017 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 "GULNetworkMessageCode.h" |
| | | |
| | | /// The log levels used by GULNetworkLogger. |
| | | typedef NS_ENUM(NSInteger, GULNetworkLogLevel) { |
| | | kGULNetworkLogLevelError = 3, |
| | | kGULNetworkLogLevelWarning = 4, |
| | | kGULNetworkLogLevelInfo = 6, |
| | | kGULNetworkLogLevelDebug = 7, |
| | | }; |
| | | |
| | | @protocol GULNetworkLoggerDelegate <NSObject> |
| | | |
| | | @required |
| | | /// Tells the delegate to log a message with an array of contexts and the log level. |
| | | - (void)GULNetwork_logWithLevel:(GULNetworkLogLevel)logLevel |
| | | messageCode:(GULNetworkMessageCode)messageCode |
| | | message:(NSString *)message |
| | | contexts:(NSArray *)contexts; |
| | | |
| | | /// Tells the delegate to log a message with a context and the log level. |
| | | - (void)GULNetwork_logWithLevel:(GULNetworkLogLevel)logLevel |
| | | messageCode:(GULNetworkMessageCode)messageCode |
| | | message:(NSString *)message |
| | | context:(id)context; |
| | | |
| | | /// Tells the delegate to log a message with the log level. |
| | | - (void)GULNetwork_logWithLevel:(GULNetworkLogLevel)logLevel |
| | | messageCode:(GULNetworkMessageCode)messageCode |
| | | message:(NSString *)message; |
| | | |
| | | @end |
New file |
| | |
| | | /* |
| | | * Copyright 2017 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> |
| | | |
| | | // Make sure these codes do not overlap with any contained in the FIRAMessageCode enum. |
| | | typedef NS_ENUM(NSInteger, GULNetworkMessageCode) { |
| | | // GULNetwork.m |
| | | kGULNetworkMessageCodeNetwork000 = 900000, // I-NET900000 |
| | | kGULNetworkMessageCodeNetwork001 = 900001, // I-NET900001 |
| | | kGULNetworkMessageCodeNetwork002 = 900002, // I-NET900002 |
| | | kGULNetworkMessageCodeNetwork003 = 900003, // I-NET900003 |
| | | // GULNetworkURLSession.m |
| | | kGULNetworkMessageCodeURLSession000 = 901000, // I-NET901000 |
| | | kGULNetworkMessageCodeURLSession001 = 901001, // I-NET901001 |
| | | kGULNetworkMessageCodeURLSession002 = 901002, // I-NET901002 |
| | | kGULNetworkMessageCodeURLSession003 = 901003, // I-NET901003 |
| | | kGULNetworkMessageCodeURLSession004 = 901004, // I-NET901004 |
| | | kGULNetworkMessageCodeURLSession005 = 901005, // I-NET901005 |
| | | kGULNetworkMessageCodeURLSession006 = 901006, // I-NET901006 |
| | | kGULNetworkMessageCodeURLSession007 = 901007, // I-NET901007 |
| | | kGULNetworkMessageCodeURLSession008 = 901008, // I-NET901008 |
| | | kGULNetworkMessageCodeURLSession009 = 901009, // I-NET901009 |
| | | kGULNetworkMessageCodeURLSession010 = 901010, // I-NET901010 |
| | | kGULNetworkMessageCodeURLSession011 = 901011, // I-NET901011 |
| | | kGULNetworkMessageCodeURLSession012 = 901012, // I-NET901012 |
| | | kGULNetworkMessageCodeURLSession013 = 901013, // I-NET901013 |
| | | kGULNetworkMessageCodeURLSession014 = 901014, // I-NET901014 |
| | | kGULNetworkMessageCodeURLSession015 = 901015, // I-NET901015 |
| | | kGULNetworkMessageCodeURLSession016 = 901016, // I-NET901016 |
| | | kGULNetworkMessageCodeURLSession017 = 901017, // I-NET901017 |
| | | kGULNetworkMessageCodeURLSession018 = 901018, // I-NET901018 |
| | | kGULNetworkMessageCodeURLSession019 = 901019, // I-NET901019 |
| | | }; |
New file |
| | |
| | | /* |
| | | * Copyright 2017 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 "GULNetworkLoggerProtocol.h" |
| | | |
| | | NS_ASSUME_NONNULL_BEGIN |
| | | |
| | | typedef void (^GULNetworkCompletionHandler)(NSHTTPURLResponse *_Nullable response, |
| | | NSData *_Nullable data, |
| | | NSError *_Nullable error); |
| | | typedef void (^GULNetworkURLSessionCompletionHandler)(NSHTTPURLResponse *_Nullable response, |
| | | NSData *_Nullable data, |
| | | NSString *sessionID, |
| | | NSError *_Nullable error); |
| | | typedef void (^GULNetworkSystemCompletionHandler)(void); |
| | | |
| | | /// The protocol that uses NSURLSession for iOS >= 7.0 to handle requests and responses. |
| | | @interface GULNetworkURLSession : NSObject |
| | | |
| | | /// Indicates whether the background network is enabled. Default value is NO. |
| | | @property(nonatomic, getter=isBackgroundNetworkEnabled) BOOL backgroundNetworkEnabled; |
| | | |
| | | /// The logger delegate to log message, errors or warnings that occur during the network operations. |
| | | @property(nonatomic, weak, nullable) id<GULNetworkLoggerDelegate> loggerDelegate; |
| | | |
| | | /// Calls the system provided completion handler after the background session is finished. |
| | | + (void)handleEventsForBackgroundURLSessionID:(NSString *)sessionID |
| | | completionHandler:(GULNetworkSystemCompletionHandler)completionHandler; |
| | | |
| | | /// Initializes with logger delegate. |
| | | - (instancetype)initWithNetworkLoggerDelegate: |
| | | (nullable id<GULNetworkLoggerDelegate>)networkLoggerDelegate NS_DESIGNATED_INITIALIZER; |
| | | |
| | | - (instancetype)init NS_UNAVAILABLE; |
| | | |
| | | /// Sends an asynchronous POST request and calls the provided completion handler when the request |
| | | /// completes or when errors occur, and returns an ID of the session/connection. |
| | | - (nullable NSString *)sessionIDFromAsyncPOSTRequest:(NSURLRequest *)request |
| | | completionHandler:(GULNetworkURLSessionCompletionHandler)handler; |
| | | |
| | | /// Sends an asynchronous GET request and calls the provided completion handler when the request |
| | | /// completes or when errors occur, and returns an ID of the session. |
| | | - (nullable NSString *)sessionIDFromAsyncGETRequest:(NSURLRequest *)request |
| | | completionHandler:(GULNetworkURLSessionCompletionHandler)handler; |
| | | |
| | | NS_ASSUME_NONNULL_END |
| | | @end |
New file |
| | |
| | | /* |
| | | * 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> |
| | | |
| | | NS_ASSUME_NONNULL_BEGIN |
| | | |
| | | /** Enums that map to their OBJC-prefixed counterparts. */ |
| | | typedef OBJC_ENUM(uintptr_t, GUL_ASSOCIATION){ |
| | | |
| | | // Is a weak association. |
| | | GUL_ASSOCIATION_ASSIGN, |
| | | |
| | | // Is a nonatomic strong association. |
| | | GUL_ASSOCIATION_RETAIN_NONATOMIC, |
| | | |
| | | // Is a nonatomic copy association. |
| | | GUL_ASSOCIATION_COPY_NONATOMIC, |
| | | |
| | | // Is an atomic strong association. |
| | | GUL_ASSOCIATION_RETAIN, |
| | | |
| | | // Is an atomic copy association. |
| | | GUL_ASSOCIATION_COPY}; |
| | | |
| | | /** This class handles swizzling a specific instance of a class by generating a |
| | | * dynamic subclass and installing selectors and properties onto the dynamic |
| | | * subclass. Then, the instance's class is set to the dynamic subclass. There |
| | | * should be a 1:1 ratio of object swizzlers to swizzled instances. |
| | | */ |
| | | @interface GULObjectSwizzler : NSObject |
| | | |
| | | /** The subclass that is generated. */ |
| | | @property(nullable, nonatomic, readonly) Class generatedClass; |
| | | |
| | | /** Sets an associated object in the runtime. This mechanism can be used to |
| | | * simulate adding properties. |
| | | * |
| | | * @param object The object that will be queried for the associated object. |
| | | * @param key The key of the associated object. |
| | | * @param value The value to associate to the swizzled object. |
| | | * @param association The mechanism to use when associating the objects. |
| | | */ |
| | | + (void)setAssociatedObject:(id)object |
| | | key:(NSString *)key |
| | | value:(nullable id)value |
| | | association:(GUL_ASSOCIATION)association; |
| | | |
| | | /** Gets an associated object in the runtime. This mechanism can be used to |
| | | * simulate adding properties. |
| | | * |
| | | * @param object The object that will be queried for the associated object. |
| | | * @param key The key of the associated object. |
| | | */ |
| | | + (nullable id)getAssociatedObject:(id)object key:(NSString *)key; |
| | | |
| | | /** Please use the designated initializer. */ |
| | | - (instancetype)init NS_UNAVAILABLE; |
| | | |
| | | /** Instantiates an object swizzler using an object it will operate on. |
| | | * Generates a new class pair. |
| | | * |
| | | * @note There is no need to store this object. After calling -swizzle, this |
| | | * object can be found by calling -gul_objectSwizzler |
| | | * |
| | | * @param object The object to be swizzled. |
| | | * @return An instance of this class. |
| | | */ |
| | | - (instancetype)initWithObject:(id)object NS_DESIGNATED_INITIALIZER; |
| | | |
| | | /** Sets an associated object in the runtime. This mechanism can be used to |
| | | * simulate adding properties. |
| | | * |
| | | * @param key The key of the associated object. |
| | | * @param value The value to associate to the swizzled object. |
| | | * @param association The mechanism to use when associating the objects. |
| | | */ |
| | | - (void)setAssociatedObjectWithKey:(NSString *)key |
| | | value:(id)value |
| | | association:(GUL_ASSOCIATION)association; |
| | | |
| | | /** Gets an associated object in the runtime. This mechanism can be used to |
| | | * simulate adding properties. |
| | | * |
| | | * @param key The key of the associated object. |
| | | */ |
| | | - (nullable id)getAssociatedObjectForKey:(NSString *)key; |
| | | |
| | | /** Copies a selector from an existing class onto the generated dynamic subclass |
| | | * that this object will adopt. This mechanism can be used to add methods to |
| | | * specific instances of a class. |
| | | * |
| | | * @note Should not be called after calling -swizzle. |
| | | * @param selector The selector to add to the instance. |
| | | * @param aClass The class supplying an implementation of the method. |
| | | * @param isClassSelector A BOOL specifying whether the selector is a class or |
| | | * instance selector. |
| | | */ |
| | | - (void)copySelector:(SEL)selector fromClass:(Class)aClass isClassSelector:(BOOL)isClassSelector; |
| | | |
| | | /** Swizzles the object, changing its class to the generated class. Registers |
| | | * the class pair. */ |
| | | - (void)swizzle; |
| | | |
| | | /** @return The value of -[objectBeingSwizzled isProxy] */ |
| | | - (BOOL)isSwizzlingProxyObject; |
| | | |
| | | @end |
| | | |
| | | NS_ASSUME_NONNULL_END |
New file |
| | |
| | | /* |
| | | * 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. |
| | | */ |
| | | |
| | | /** |
| | | * GULOriginalIMPConvenienceMacros.h |
| | | * |
| | | * This header contains convenience macros for invoking the original IMP of a swizzled method. |
| | | */ |
| | | |
| | | /** |
| | | * Invokes original IMP when the original selector takes no arguments. |
| | | * |
| | | * @param __receivingObject The object on which the IMP is invoked. |
| | | * @param __swizzledSEL The selector used for swizzling. |
| | | * @param __returnType The return type of the original implementation. |
| | | * @param __originalIMP The original IMP. |
| | | */ |
| | | #define GUL_INVOKE_ORIGINAL_IMP0(__receivingObject, __swizzledSEL, __returnType, __originalIMP) \ |
| | | ((__returnType(*)(id, SEL))__originalIMP)(__receivingObject, __swizzledSEL) |
| | | |
| | | /** |
| | | * Invokes original IMP when the original selector takes 1 argument. |
| | | * |
| | | * @param __receivingObject The object on which the IMP is invoked. |
| | | * @param __swizzledSEL The selector used for swizzling. |
| | | * @param __returnType The return type of the original implementation. |
| | | * @param __originalIMP The original IMP. |
| | | * @param __arg1 The first argument. |
| | | */ |
| | | #define GUL_INVOKE_ORIGINAL_IMP1(__receivingObject, __swizzledSEL, __returnType, __originalIMP, \ |
| | | __arg1) \ |
| | | ((__returnType(*)(id, SEL, __typeof__(__arg1)))__originalIMP)(__receivingObject, __swizzledSEL, \ |
| | | __arg1) |
| | | |
| | | /** |
| | | * Invokes original IMP when the original selector takes 2 arguments. |
| | | * |
| | | * @param __receivingObject The object on which the IMP is invoked. |
| | | * @param __swizzledSEL The selector used for swizzling. |
| | | * @param __returnType The return type of the original implementation. |
| | | * @param __originalIMP The original IMP. |
| | | * @param __arg1 The first argument. |
| | | * @param __arg2 The second argument. |
| | | */ |
| | | #define GUL_INVOKE_ORIGINAL_IMP2(__receivingObject, __swizzledSEL, __returnType, __originalIMP, \ |
| | | __arg1, __arg2) \ |
| | | ((__returnType(*)(id, SEL, __typeof__(__arg1), __typeof__(__arg2)))__originalIMP)( \ |
| | | __receivingObject, __swizzledSEL, __arg1, __arg2) |
| | | |
| | | /** |
| | | * Invokes original IMP when the original selector takes 3 arguments. |
| | | * |
| | | * @param __receivingObject The object on which the IMP is invoked. |
| | | * @param __swizzledSEL The selector used for swizzling. |
| | | * @param __returnType The return type of the original implementation. |
| | | * @param __originalIMP The original IMP. |
| | | * @param __arg1 The first argument. |
| | | * @param __arg2 The second argument. |
| | | * @param __arg3 The third argument. |
| | | */ |
| | | #define GUL_INVOKE_ORIGINAL_IMP3(__receivingObject, __swizzledSEL, __returnType, __originalIMP, \ |
| | | __arg1, __arg2, __arg3) \ |
| | | ((__returnType(*)(id, SEL, __typeof__(__arg1), __typeof__(__arg2), \ |
| | | __typeof__(__arg3)))__originalIMP)(__receivingObject, __swizzledSEL, __arg1, \ |
| | | __arg2, __arg3) |
| | | |
| | | /** |
| | | * Invokes original IMP when the original selector takes 4 arguments. |
| | | * |
| | | * @param __receivingObject The object on which the IMP is invoked. |
| | | * @param __swizzledSEL The selector used for swizzling. |
| | | * @param __returnType The return type of the original implementation. |
| | | * @param __originalIMP The original IMP. |
| | | * @param __arg1 The first argument. |
| | | * @param __arg2 The second argument. |
| | | * @param __arg3 The third argument. |
| | | * @param __arg4 The fourth argument. |
| | | */ |
| | | #define GUL_INVOKE_ORIGINAL_IMP4(__receivingObject, __swizzledSEL, __returnType, __originalIMP, \ |
| | | __arg1, __arg2, __arg3, __arg4) \ |
| | | ((__returnType(*)(id, SEL, __typeof__(__arg1), __typeof__(__arg2), __typeof__(__arg3), \ |
| | | __typeof__(__arg4)))__originalIMP)(__receivingObject, __swizzledSEL, __arg1, \ |
| | | __arg2, __arg3, __arg4) |
| | | |
| | | /** |
| | | * Invokes original IMP when the original selector takes 5 arguments. |
| | | * |
| | | * @param __receivingObject The object on which the IMP is invoked. |
| | | * @param __swizzledSEL The selector used for swizzling. |
| | | * @param __returnType The return type of the original implementation. |
| | | * @param __originalIMP The original IMP. |
| | | * @param __arg1 The first argument. |
| | | * @param __arg2 The second argument. |
| | | * @param __arg3 The third argument. |
| | | * @param __arg4 The fourth argument. |
| | | * @param __arg5 The fifth argument. |
| | | */ |
| | | #define GUL_INVOKE_ORIGINAL_IMP5(__receivingObject, __swizzledSEL, __returnType, __originalIMP, \ |
| | | __arg1, __arg2, __arg3, __arg4, __arg5) \ |
| | | ((__returnType(*)(id, SEL, __typeof__(__arg1), __typeof__(__arg2), __typeof__(__arg3), \ |
| | | __typeof__(__arg4), __typeof__(__arg5)))__originalIMP)( \ |
| | | __receivingObject, __swizzledSEL, __arg1, __arg2, __arg3, __arg4, __arg5) |
| | | |
| | | /** |
| | | * Invokes original IMP when the original selector takes 6 arguments. |
| | | * |
| | | * @param __receivingObject The object on which the IMP is invoked. |
| | | * @param __swizzledSEL The selector used for swizzling. |
| | | * @param __returnType The return type of the original implementation. |
| | | * @param __originalIMP The original IMP. |
| | | * @param __arg1 The first argument. |
| | | * @param __arg2 The second argument. |
| | | * @param __arg3 The third argument. |
| | | * @param __arg4 The fourth argument. |
| | | * @param __arg5 The fifth argument. |
| | | * @param __arg6 The sixth argument. |
| | | */ |
| | | #define GUL_INVOKE_ORIGINAL_IMP6(__receivingObject, __swizzledSEL, __returnType, __originalIMP, \ |
| | | __arg1, __arg2, __arg3, __arg4, __arg5, __arg6) \ |
| | | ((__returnType(*)(id, SEL, __typeof__(__arg1), __typeof__(__arg2), __typeof__(__arg3), \ |
| | | __typeof__(__arg4), __typeof__(__arg5), __typeof__(__arg6)))__originalIMP)( \ |
| | | __receivingObject, __swizzledSEL, __arg1, __arg2, __arg3, __arg4, __arg5, __arg6) |
| | | |
| | | /** |
| | | * Invokes original IMP when the original selector takes 7 arguments. |
| | | * |
| | | * @param __receivingObject The object on which the IMP is invoked. |
| | | * @param __swizzledSEL The selector used for swizzling. |
| | | * @param __returnType The return type of the original implementation. |
| | | * @param __originalIMP The original IMP. |
| | | * @param __arg1 The first argument. |
| | | * @param __arg2 The second argument. |
| | | * @param __arg3 The third argument. |
| | | * @param __arg4 The fourth argument. |
| | | * @param __arg5 The fifth argument. |
| | | * @param __arg6 The sixth argument. |
| | | * @param __arg7 The seventh argument. |
| | | */ |
| | | #define GUL_INVOKE_ORIGINAL_IMP7(__receivingObject, __swizzledSEL, __returnType, __originalIMP, \ |
| | | __arg1, __arg2, __arg3, __arg4, __arg5, __arg6, __arg7) \ |
| | | ((__returnType(*)(id, SEL, __typeof__(__arg1), __typeof__(__arg2), __typeof__(__arg3), \ |
| | | __typeof__(__arg4), __typeof__(__arg5), __typeof__(__arg6), \ |
| | | __typeof__(__arg7)))__originalIMP)( \ |
| | | __receivingObject, __swizzledSEL, __arg1, __arg2, __arg3, __arg4, __arg5, __arg6, __arg7) |
| | | |
| | | /** |
| | | * Invokes original IMP when the original selector takes 8 arguments. |
| | | * |
| | | * @param __receivingObject The object on which the IMP is invoked. |
| | | * @param __swizzledSEL The selector used for swizzling. |
| | | * @param __returnType The return type of the original implementation. |
| | | * @param __originalIMP The original IMP. |
| | | * @param __arg1 The first argument. |
| | | * @param __arg2 The second argument. |
| | | * @param __arg3 The third argument. |
| | | * @param __arg4 The fourth argument. |
| | | * @param __arg5 The fifth argument. |
| | | * @param __arg6 The sixth argument. |
| | | * @param __arg7 The seventh argument. |
| | | * @param __arg8 The eighth argument. |
| | | */ |
| | | #define GUL_INVOKE_ORIGINAL_IMP8(__receivingObject, __swizzledSEL, __returnType, __originalIMP, \ |
| | | __arg1, __arg2, __arg3, __arg4, __arg5, __arg6, __arg7, __arg8) \ |
| | | ((__returnType(*)(id, SEL, __typeof__(__arg1), __typeof__(__arg2), __typeof__(__arg3), \ |
| | | __typeof__(__arg4), __typeof__(__arg5), __typeof__(__arg6), \ |
| | | __typeof__(__arg7), __typeof__(__arg8)))__originalIMP)( \ |
| | | __receivingObject, __swizzledSEL, __arg1, __arg2, __arg3, __arg4, __arg5, __arg6, __arg7, \ |
| | | __arg8) |
| | | |
| | | /** |
| | | * Invokes original IMP when the original selector takes 9 arguments. |
| | | * |
| | | * @param __receivingObject The object on which the IMP is invoked. |
| | | * @param __swizzledSEL The selector used for swizzling. |
| | | * @param __returnType The return type of the original implementation. |
| | | * @param __originalIMP The original IMP. |
| | | * @param __arg1 The first argument. |
| | | * @param __arg2 The second argument. |
| | | * @param __arg3 The third argument. |
| | | * @param __arg4 The fourth argument. |
| | | * @param __arg5 The fifth argument. |
| | | * @param __arg6 The sixth argument. |
| | | * @param __arg7 The seventh argument. |
| | | * @param __arg8 The eighth argument. |
| | | * @param __arg9 The ninth argument. |
| | | */ |
| | | #define GUL_INVOKE_ORIGINAL_IMP9(__receivingObject, __swizzledSEL, __returnType, __originalIMP, \ |
| | | __arg1, __arg2, __arg3, __arg4, __arg5, __arg6, __arg7, __arg8, \ |
| | | __arg9) \ |
| | | ((__returnType(*)(id, SEL, __typeof__(__arg1), __typeof__(__arg2), __typeof__(__arg3), \ |
| | | __typeof__(__arg4), __typeof__(__arg5), __typeof__(__arg6), \ |
| | | __typeof__(__arg7), __typeof__(__arg8), __typeof__(__arg9)))__originalIMP)( \ |
| | | __receivingObject, __swizzledSEL, __arg1, __arg2, __arg3, __arg4, __arg5, __arg6, __arg7, \ |
| | | __arg8, __arg9) |
New file |
| | |
| | | /* |
| | | * Copyright 2017 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> |
| | | #if !TARGET_OS_WATCH |
| | | #import <SystemConfiguration/SystemConfiguration.h> |
| | | #endif |
| | | |
| | | /// Reachability Status |
| | | typedef enum { |
| | | kGULReachabilityUnknown, ///< Have not yet checked or been notified whether host is reachable. |
| | | kGULReachabilityNotReachable, ///< Host is not reachable. |
| | | kGULReachabilityViaWifi, ///< Host is reachable via Wifi. |
| | | kGULReachabilityViaCellular, ///< Host is reachable via cellular. |
| | | } GULReachabilityStatus; |
| | | |
| | | const NSString *GULReachabilityStatusString(GULReachabilityStatus status); |
| | | |
| | | @class GULReachabilityChecker; |
| | | |
| | | /// Google Analytics iOS Reachability Checker. |
| | | @protocol GULReachabilityDelegate |
| | | @required |
| | | /// Called when network status has changed. |
| | | - (void)reachability:(GULReachabilityChecker *)reachability |
| | | statusChanged:(GULReachabilityStatus)status; |
| | | @end |
| | | |
| | | /// Google Analytics iOS Network Status Checker. |
| | | @interface GULReachabilityChecker : NSObject |
| | | |
| | | /// The last known reachability status, or GULReachabilityStatusUnknown if the |
| | | /// checker is not active. |
| | | @property(nonatomic, readonly) GULReachabilityStatus reachabilityStatus; |
| | | /// The host to which reachability status is to be checked. |
| | | @property(nonatomic, copy, readonly) NSString *host; |
| | | /// The delegate to be notified of reachability status changes. |
| | | @property(nonatomic, weak) id<GULReachabilityDelegate> reachabilityDelegate; |
| | | /// `YES` if the reachability checker is active, `NO` otherwise. |
| | | @property(nonatomic, readonly) BOOL isActive; |
| | | |
| | | /// Initialize the reachability checker. Note that you must call start to begin checking for and |
| | | /// receiving notifications about network status changes. |
| | | /// |
| | | /// @param reachabilityDelegate The delegate to be notified when reachability status to host |
| | | /// changes. |
| | | /// |
| | | /// @param host The name of the host. |
| | | /// |
| | | - (instancetype)initWithReachabilityDelegate:(id<GULReachabilityDelegate>)reachabilityDelegate |
| | | withHost:(NSString *)host; |
| | | |
| | | - (instancetype)init NS_UNAVAILABLE; |
| | | |
| | | /// Start checking for reachability to the specified host. This has no effect if the status |
| | | /// checker is already checking for connectivity. |
| | | /// |
| | | /// @return `YES` if initiating status checking was successful or the status checking has already |
| | | /// been initiated, `NO` otherwise. |
| | | - (BOOL)start; |
| | | |
| | | /// Stop checking for reachability to the specified host. This has no effect if the status |
| | | /// checker is not checking for connectivity. |
| | | - (void)stop; |
| | | |
| | | @end |
New file |
| | |
| | | /* |
| | | * Copyright 2019 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 <TargetConditionals.h> |
| | | |
| | | #if !TARGET_OS_OSX |
| | | #import <UIKit/UIKit.h> |
| | | #endif // !TARGET_OS_OSX |
| | | |
| | | #if ((TARGET_OS_IOS || TARGET_OS_TV) && (__IPHONE_OS_VERSION_MAX_ALLOWED >= 130000)) |
| | | #define UISCENE_SUPPORTED 1 |
| | | #endif |
| | | |
| | | NS_ASSUME_NONNULL_BEGIN |
| | | |
| | | typedef NSString *const GULSceneDelegateInterceptorID; |
| | | |
| | | /** This class contains methods that isa swizzle the scene delegate. */ |
| | | @interface GULSceneDelegateSwizzler : NSProxy |
| | | |
| | | #if UISCENE_SUPPORTED |
| | | |
| | | /** Registers a scene delegate interceptor whose methods will be invoked as they're invoked on the |
| | | * original scene delegate. |
| | | * |
| | | * @param interceptor An instance of a class that conforms to the application delegate protocol. |
| | | * The interceptor is NOT retained. |
| | | * @return A unique GULSceneDelegateInterceptorID if interceptor was successfully registered; nil |
| | | * if it fails. |
| | | */ |
| | | + (nullable GULSceneDelegateInterceptorID)registerSceneDelegateInterceptor: |
| | | (id<UISceneDelegate>)interceptor API_AVAILABLE(ios(13.0), tvos(13.0)); |
| | | |
| | | /** Unregisters an interceptor with the given ID if it exists. |
| | | * |
| | | * @param interceptorID The object that was generated when the interceptor was registered. |
| | | */ |
| | | + (void)unregisterSceneDelegateInterceptorWithID:(GULSceneDelegateInterceptorID)interceptorID |
| | | API_AVAILABLE(ios(13.0), tvos(13.0)); |
| | | |
| | | /** Do not initialize this class. */ |
| | | - (instancetype)init NS_UNAVAILABLE; |
| | | |
| | | #endif // UISCENE_SUPPORTED |
| | | |
| | | /** This method ensures that the original scene delegate has been proxied. Call this before |
| | | * registering your interceptor. This method is safe to call multiple times (but it only proxies |
| | | * the scene delegate once). |
| | | * |
| | | * The method has no effect for extensions. |
| | | */ |
| | | + (void)proxyOriginalSceneDelegate; |
| | | |
| | | /** Indicates whether scene delegate proxy is explicitly disabled or enabled. Enabled by default. |
| | | * |
| | | * @return YES if SceneDelegateProxy is Enabled, NO otherwise. |
| | | */ |
| | | + (BOOL)isSceneDelegateProxyEnabled; |
| | | |
| | | @end |
| | | |
| | | NS_ASSUME_NONNULL_END |
New file |
| | |
| | | /* |
| | | * 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> |
| | | |
| | | @class GULObjectSwizzler; |
| | | |
| | | FOUNDATION_EXPORT NSString *kSwizzlerAssociatedObjectKey; |
| | | |
| | | /** This class exists as a method donor. These methods will be added to all objects that are |
| | | * swizzled by the object swizzler. This class should not be instantiated. |
| | | */ |
| | | @interface GULSwizzledObject : NSObject |
| | | |
| | | - (instancetype)init NS_UNAVAILABLE; |
| | | |
| | | /** Copies the methods below to the swizzled object. |
| | | * |
| | | * @param objectSwizzler The swizzler to use when adding the methods below. |
| | | */ |
| | | + (void)copyDonorSelectorsUsingObjectSwizzler:(GULObjectSwizzler *)objectSwizzler; |
| | | |
| | | #pragma mark - Donor methods. |
| | | |
| | | /** @return The generated subclass. Used in respondsToSelector: calls. */ |
| | | - (Class)gul_class; |
| | | |
| | | /** @return The object swizzler that manages this object. */ |
| | | - (GULObjectSwizzler *)gul_objectSwizzler; |
| | | |
| | | @end |
New file |
| | |
| | | /* |
| | | * 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> |
| | | |
| | | NS_ASSUME_NONNULL_BEGIN |
| | | |
| | | /** This class handles the runtime manipulation necessary to instrument selectors. It stores the |
| | | * classes and selectors that have been swizzled, and runs all operations on its own queue. |
| | | */ |
| | | @interface GULSwizzler : NSObject |
| | | |
| | | /** Manipulates the Objective-C runtime to replace the original IMP with the supplied block. |
| | | * |
| | | * @param aClass The class to swizzle. |
| | | * @param selector The selector of the class to swizzle. |
| | | * @param isClassSelector A BOOL specifying whether the selector is a class or instance selector. |
| | | * @param block The block that replaces the original IMP. |
| | | */ |
| | | + (void)swizzleClass:(Class)aClass |
| | | selector:(SEL)selector |
| | | isClassSelector:(BOOL)isClassSelector |
| | | withBlock:(nullable id)block; |
| | | |
| | | /** Returns the current IMP for the given class and selector. |
| | | * |
| | | * @param aClass The class to use. |
| | | * @param selector The selector to find the implementation of. |
| | | * @param isClassSelector A BOOL specifying whether the selector is a class or instance selector. |
| | | * @return The implementation of the selector in the runtime. |
| | | */ |
| | | + (nullable IMP)currentImplementationForClass:(Class)aClass |
| | | selector:(SEL)selector |
| | | isClassSelector:(BOOL)isClassSelector; |
| | | |
| | | /** Checks the runtime to see if a selector exists on a class. If a property is declared as |
| | | * @dynamic, we have a reverse swizzling situation, where the implementation of a method exists |
| | | * only in concrete subclasses, and NOT in the superclass. We can detect that situation using |
| | | * this helper method. Similarly, we can detect situations where a class doesn't implement a |
| | | * protocol method. |
| | | * |
| | | * @param selector The selector to check for. |
| | | * @param aClass The class to check. |
| | | * @param isClassSelector A BOOL specifying whether the selector is a class or instance selector. |
| | | * @return YES if the method was found in this selector/class combination, NO otherwise. |
| | | */ |
| | | + (BOOL)selector:(SEL)selector existsInClass:(Class)aClass isClassSelector:(BOOL)isClassSelector; |
| | | |
| | | /** Returns a list of all Objective-C (and not primitive) ivars contained by the given object. |
| | | * |
| | | * @param object The object whose ivars will be iterated. |
| | | * @return The list of ivar objects. |
| | | */ |
| | | + (NSArray<id> *)ivarObjectsForObject:(id)object; |
| | | |
| | | @end |
| | | |
| | | NS_ASSUME_NONNULL_END |
File was renamed from frameworks/GoogleDataTransport.framework/Headers/GDTCORReachability.h |
| | |
| | | /* |
| | | * Copyright 2019 Google |
| | | * Copyright 2020 Google LLC |
| | | * |
| | | * Licensed under the Apache License, Version 2.0 (the "License"); |
| | | * you may not use this file except in compliance with the License. |
| | |
| | | |
| | | #import <Foundation/Foundation.h> |
| | | |
| | | #import "GDTCORPlatform.h" |
| | | |
| | | NS_ASSUME_NONNULL_BEGIN |
| | | |
| | | /** This class helps determine upload conditions by determining connectivity. */ |
| | | @interface GDTCORReachability : NSObject |
| | | /** The class represents HTTP response received from `NSURLSession`. */ |
| | | @interface GULURLSessionDataResponse : NSObject |
| | | |
| | | /** The current set flags indicating network conditions */ |
| | | + (GDTCORNetworkReachabilityFlags)currentFlags; |
| | | @property(nonatomic, readonly) NSHTTPURLResponse *HTTPResponse; |
| | | @property(nonatomic, nullable, readonly) NSData *HTTPBody; |
| | | |
| | | - (instancetype)initWithResponse:(NSHTTPURLResponse *)response HTTPBody:(nullable NSData *)body; |
| | | |
| | | @end |
| | | |
New file |
| | |
| | | // 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 |
| | | |
| | | /// A thread-safe user defaults that uses C functions from CFPreferences.h instead of |
| | | /// `NSUserDefaults`. This is to avoid sending an `NSNotification` when it's changed from a |
| | | /// background thread to avoid crashing. // TODO: Insert radar number here. |
| | | @interface GULUserDefaults : NSObject |
| | | |
| | | /// A shared user defaults similar to +[NSUserDefaults standardUserDefaults] and accesses the same |
| | | /// data of the standardUserDefaults. |
| | | + (GULUserDefaults *)standardUserDefaults; |
| | | |
| | | /// Initializes preferences with a suite name that is the same with the NSUserDefaults' suite name. |
| | | /// Both of CFPreferences and NSUserDefaults share the same plist file so their data will exactly |
| | | /// the same. |
| | | /// |
| | | /// @param suiteName The name of the suite of the user defaults. |
| | | - (instancetype)initWithSuiteName:(nullable NSString *)suiteName; |
| | | |
| | | #pragma mark - Getters |
| | | |
| | | /// Searches the receiver's search list for a default with the key 'defaultName' and return it. If |
| | | /// another process has changed defaults in the search list, NSUserDefaults will automatically |
| | | /// update to the latest values. If the key in question has been marked as ubiquitous via a Defaults |
| | | /// Configuration File, the latest value may not be immediately available, and the registered value |
| | | /// will be returned instead. |
| | | - (nullable id)objectForKey:(NSString *)defaultName; |
| | | |
| | | /// Equivalent to -objectForKey:, except that it will return nil if the value is not an NSArray. |
| | | - (nullable NSArray *)arrayForKey:(NSString *)defaultName; |
| | | |
| | | /// Equivalent to -objectForKey:, except that it will return nil if the value |
| | | /// is not an NSDictionary. |
| | | - (nullable NSDictionary<NSString *, id> *)dictionaryForKey:(NSString *)defaultName; |
| | | |
| | | /// Equivalent to -objectForKey:, except that it will convert NSNumber values to their NSString |
| | | /// representation. If a non-string non-number value is found, nil will be returned. |
| | | - (nullable NSString *)stringForKey:(NSString *)defaultName; |
| | | |
| | | /// Equivalent to -objectForKey:, except that it converts the returned value to an NSInteger. If the |
| | | /// value is an NSNumber, the result of -integerValue will be returned. If the value is an NSString, |
| | | /// it will be converted to NSInteger if possible. If the value is a boolean, it will be converted |
| | | /// to either 1 for YES or 0 for NO. If the value is absent or can't be converted to an integer, 0 |
| | | /// will be returned. |
| | | - (NSInteger)integerForKey:(NSString *)defaultName; |
| | | |
| | | /// Similar to -integerForKey:, except that it returns a float, and boolean values will not be |
| | | /// converted. |
| | | - (float)floatForKey:(NSString *)defaultName; |
| | | |
| | | /// Similar to -integerForKey:, except that it returns a double, and boolean values will not be |
| | | /// converted. |
| | | - (double)doubleForKey:(NSString *)defaultName; |
| | | |
| | | /// Equivalent to -objectForKey:, except that it converts the returned value to a BOOL. If the value |
| | | /// is an NSNumber, NO will be returned if the value is 0, YES otherwise. If the value is an |
| | | /// NSString, values of "YES" or "1" will return YES, and values of "NO", "0", or any other string |
| | | /// will return NO. If the value is absent or can't be converted to a BOOL, NO will be returned. |
| | | - (BOOL)boolForKey:(NSString *)defaultName; |
| | | |
| | | #pragma mark - Setters |
| | | |
| | | /// Immediately stores a value (or removes the value if `nil` is passed as the value) for the |
| | | /// provided key in the search list entry for the receiver's suite name in the current user and any |
| | | /// host, then asynchronously stores the value persistently, where it is made available to other |
| | | /// processes. |
| | | - (void)setObject:(nullable id)value forKey:(NSString *)defaultName; |
| | | |
| | | /// Equivalent to -setObject:forKey: except that the value is converted from a float to an NSNumber. |
| | | - (void)setFloat:(float)value forKey:(NSString *)defaultName; |
| | | |
| | | /// Equivalent to -setObject:forKey: except that the value is converted from a double to an |
| | | /// NSNumber. |
| | | - (void)setDouble:(double)value forKey:(NSString *)defaultName; |
| | | |
| | | /// Equivalent to -setObject:forKey: except that the value is converted from an NSInteger to an |
| | | /// NSNumber. |
| | | - (void)setInteger:(NSInteger)value forKey:(NSString *)defaultName; |
| | | |
| | | /// Equivalent to -setObject:forKey: except that the value is converted from a BOOL to an NSNumber. |
| | | - (void)setBool:(BOOL)value forKey:(NSString *)defaultName; |
| | | |
| | | #pragma mark - Removing Defaults |
| | | |
| | | /// Equivalent to -[... setObject:nil forKey:defaultName] |
| | | - (void)removeObjectForKey:(NSString *)defaultName; |
| | | |
| | | #pragma mark - Save data |
| | | |
| | | /// Blocks the calling thread until all in-progress set operations have completed. |
| | | - (void)synchronize; |
| | | |
| | | @end |
| | | |
| | | NS_ASSUME_NONNULL_END |
| | |
| | | #endif |
| | | #endif |
| | | |
| | | #import "GULAppDelegateSwizzler.h" |
| | | #import "GULApplication.h" |
| | | #import "GULSceneDelegateSwizzler.h" |
| | | #import "GULAppEnvironmentUtil.h" |
| | | #import "GULHeartbeatDateStorage.h" |
| | | #import "GULKeychainStorage.h" |
| | | #import "GULKeychainUtils.h" |
| | | #import "GULSecureCoding.h" |
| | | #import "GULURLSessionDataResponse.h" |
| | | #import "NSURLSession+GULPromises.h" |
| | | #import "GULObjectSwizzler.h" |
| | | #import "GULSwizzledObject.h" |
| | | #import "GULLogger.h" |
| | | #import "GULLoggerLevel.h" |
| | | #import "GULLoggerCodes.h" |
| | | #import "GULOriginalIMPConvenienceMacros.h" |
| | | #import "GULSwizzler.h" |
| | | #import "GULNSData+zlib.h" |
| | | #import "GULMutableDictionary.h" |
| | | #import "GULNetwork.h" |
| | | #import "GULNetworkConstants.h" |
| | | #import "GULNetworkLoggerProtocol.h" |
| | | #import "GULNetworkMessageCode.h" |
| | | #import "GULNetworkURLSession.h" |
| | | #import "GULReachabilityChecker.h" |
| | | #import "GULUserDefaults.h" |
| | | |
| | | FOUNDATION_EXPORT double GoogleUtilitiesVersionNumber; |
| | | FOUNDATION_EXPORT const unsigned char GoogleUtilitiesVersionString[]; |
New file |
| | |
| | | /* |
| | | * Copyright 2020 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> |
| | | |
| | | @class FBLPromise<Value>; |
| | | @class GULURLSessionDataResponse; |
| | | |
| | | NS_ASSUME_NONNULL_BEGIN |
| | | |
| | | /** Promise based API for `NSURLSession`. */ |
| | | @interface NSURLSession (GULPromises) |
| | | |
| | | /** Creates a promise wrapping `-[NSURLSession dataTaskWithRequest:completionHandler:]` method. |
| | | * @param URLRequest The request to create a data task with. |
| | | * @return A promise that is fulfilled when an HTTP response is received (with any response code), |
| | | * or is rejected with the error passed to the task completion. |
| | | */ |
| | | - (FBLPromise<GULURLSessionDataResponse *> *)gul_dataTaskPromiseWithRequest: |
| | | (NSURLRequest *)URLRequest; |
| | | |
| | | @end |
| | | |
| | | NS_ASSUME_NONNULL_END |
New file |
| | |
| | | <?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>CFBundleExecutable</key> |
| | | <string>GoogleUtilities</string> |
| | | <key>CFBundleIdentifier</key> |
| | | <string>com.firebase.Firebase-GoogleUtilities</string> |
| | | <key>CFBundleInfoDictionaryVersion</key> |
| | | <string>6.0</string> |
| | | <key>CFBundleName</key> |
| | | <string>GoogleUtilities</string> |
| | | <key>CFBundlePackageType</key> |
| | | <string>FMWK</string> |
| | | <key>CFBundleVersion</key> |
| | | <string>7.2.0</string> |
| | | <key>DTSDKName</key> |
| | | <string>iphonesimulator11.2</string> |
| | | </dict> |
| | | </plist> |
New file |
| | |
| | | <?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>CFBundleExecutable</key> |
| | | <string>PromisesObjC</string> |
| | | <key>CFBundleIdentifier</key> |
| | | <string>com.firebase.Firebase-PromisesObjC</string> |
| | | <key>CFBundleInfoDictionaryVersion</key> |
| | | <string>6.0</string> |
| | | <key>CFBundleName</key> |
| | | <string>PromisesObjC</string> |
| | | <key>CFBundlePackageType</key> |
| | | <string>FMWK</string> |
| | | <key>CFBundleVersion</key> |
| | | <string>1.2.12</string> |
| | | <key>DTSDKName</key> |
| | | <string>iphonesimulator11.2</string> |
| | | </dict> |
| | | </plist> |
| | |
| | | |
| | | // In this header, you should import all the public headers of your framework using statements like #import <WAFirebaseImpl/PublicHeader.h> |
| | | |
| | | //time:2020/09/02 15:35 ver:3.8.5 |
| | | //time:2021/01/23 15:35 ver:3.9.2 |
| | | |
| | |
| | | <dict> |
| | | <key>Headers/WAFirebaseImpl.h</key> |
| | | <data> |
| | | YhnbGibSGVOxkRJEuf+snerysE8= |
| | | Wx5f2IC8qtXRoup68duE3SJK+kc= |
| | | </data> |
| | | <key>Info.plist</key> |
| | | <data> |
| | | lp6enMqCBh6AT50+6kOOIfDIUZs= |
| | | fXO/Dl9htAtsbV3X04RKPOzZ79s= |
| | | </data> |
| | | <key>Modules/module.modulemap</key> |
| | | <data> |
| | |
| | | <dict> |
| | | <key>hash</key> |
| | | <data> |
| | | YhnbGibSGVOxkRJEuf+snerysE8= |
| | | Wx5f2IC8qtXRoup68duE3SJK+kc= |
| | | </data> |
| | | <key>hash2</key> |
| | | <data> |
| | | P417On82s+y0oTLzN0vf1IPKFklRGzegntW5zQ/cjB8= |
| | | yNUrjWlplqIKkC1nH60MH2jp40kDXkQZwO2GKRd0/8o= |
| | | </data> |
| | | </dict> |
| | | <key>Modules/module.modulemap</key> |
| | |
| | | |
| | | /* Version of the nanopb library. Just in case you want to check it in |
| | | * your own program. */ |
| | | #define NANOPB_VERSION nanopb-0.3.9.6 |
| | | #define NANOPB_VERSION nanopb-0.3.9.7 |
| | | |
| | | /* Include all the system headers needed by nanopb. You will need the |
| | | * definitions of the following: |
| | |
| | | * structure. Call this from the callback before writing out field contents. */ |
| | | bool pb_encode_tag_for_field(pb_ostream_t *stream, const pb_field_t *field); |
| | | |
| | | /* Encode field header by manually specifing wire type. You need to use this |
| | | /* Encode field header by manually specifying wire type. You need to use this |
| | | * if you want to write out packed arrays from a callback field. */ |
| | | bool pb_encode_tag(pb_ostream_t *stream, pb_wire_type_t wiretype, uint32_t field_number); |
| | | |
New file |
| | |
| | | <?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>CFBundleExecutable</key> |
| | | <string>nanopb</string> |
| | | <key>CFBundleIdentifier</key> |
| | | <string>com.firebase.Firebase-nanopb</string> |
| | | <key>CFBundleInfoDictionaryVersion</key> |
| | | <string>6.0</string> |
| | | <key>CFBundleName</key> |
| | | <string>nanopb</string> |
| | | <key>CFBundlePackageType</key> |
| | | <string>FMWK</string> |
| | | <key>CFBundleVersion</key> |
| | | <string>2.30907.0</string> |
| | | <key>DTSDKName</key> |
| | | <string>iphonesimulator11.2</string> |
| | | </dict> |
| | | </plist> |