diff --git a/plugin.xml b/plugin.xml index b13737212..9468b49ef 100755 --- a/plugin.xml +++ b/plugin.xml @@ -12,6 +12,7 @@ Android uses Firebase Cloud Messaging. iOS uses Apple APNS Notifications. Windows uses Microsoft WNS Notifications. +<<<<<<< HEAD MIT @@ -115,8 +116,19 @@ - - + + + + + + + + + + + + diff --git a/src/ios/Firebase/Analytics/FirebaseAnalytics.framework/FirebaseAnalytics b/src/ios/Firebase/Analytics/FirebaseAnalytics.framework/FirebaseAnalytics new file mode 100644 index 000000000..89e8feb39 Binary files /dev/null and b/src/ios/Firebase/Analytics/FirebaseAnalytics.framework/FirebaseAnalytics differ diff --git a/src/ios/Firebase/Analytics/FirebaseAnalytics.framework/Headers/FIRAnalytics+AppDelegate.h b/src/ios/Firebase/Analytics/FirebaseAnalytics.framework/Headers/FIRAnalytics+AppDelegate.h new file mode 100644 index 000000000..45ce348cd --- /dev/null +++ b/src/ios/Firebase/Analytics/FirebaseAnalytics.framework/Headers/FIRAnalytics+AppDelegate.h @@ -0,0 +1,57 @@ +#import + +#import "FIRAnalytics.h" + +/** + * Provides App Delegate handlers to be used in your App Delegate. + * + * To save time integrating Firebase Analytics in an application, Firebase Analytics does not + * require delegation implementation from the AppDelegate. Instead this is automatically done by + * Firebase Analytics. Should you choose instead to delegate manually, you can turn off the App + * Delegate Proxy by adding FirebaseAppDelegateProxyEnabled into your Info.plist and setting it + * to NO, and adding the methods in this category to corresponding delegation handlers. + * + * To handle Universal Links, you must return YES in + * [UIApplicationDelegate application:didFinishLaunchingWithOptions:]. + */ +@interface FIRAnalytics (AppDelegate) + +/** + * Handles events related to a URL session that are waiting to be processed. + * + * For optimal use of Firebase Analytics, call this method from the + * [UIApplicationDelegate application:handleEventsForBackgroundURLSession:completionHandler] + * method of the app delegate in your app. + * + * @param identifier The identifier of the URL session requiring attention. + * @param completionHandler The completion handler to call when you finish processing the events. + * Calling this completion handler lets the system know that your app's user interface is + * updated and a new snapshot can be taken. + */ ++ (void)handleEventsForBackgroundURLSession:(NSString *)identifier + completionHandler:(void (^)(void))completionHandler; + +/** + * Handles the event when the app is launched by a URL. + * + * Call this method from [UIApplicationDelegate application:openURL:options:] (on iOS 9.0 and + * above), or [UIApplicationDelegate application:openURL:sourceApplication:annotation:] (on iOS 8.x + * and below) in your app. + * + * @param url The URL resource to open. This resource can be a network resource or a file. + */ ++ (void)handleOpenURL:(NSURL *)url; + +/** + * Handles the event when the app receives data associated with user activity that includes a + * Universal Link (on iOS 9.0 and above). + * + * Call this method from [UIApplication continueUserActivity:restorationHandler:] in your app + * delegate (on iOS 9.0 and above). + * + * @param userActivity The activity object containing the data associated with the task the user + * was performing. + */ ++ (void)handleUserActivity:(id)userActivity; + +@end diff --git a/src/ios/Firebase/Analytics/FirebaseAnalytics.framework/Headers/FIRAnalytics.h b/src/ios/Firebase/Analytics/FirebaseAnalytics.framework/Headers/FIRAnalytics.h new file mode 100644 index 000000000..a747972aa --- /dev/null +++ b/src/ios/Firebase/Analytics/FirebaseAnalytics.framework/Headers/FIRAnalytics.h @@ -0,0 +1,70 @@ +#import + +#import "FIREventNames.h" +#import "FIRParameterNames.h" +#import "FIRUserPropertyNames.h" + +/// The top level Firebase Analytics singleton that provides methods for logging events and setting +/// user properties. See the developer guides for general +/// information on using Firebase Analytics in your apps. +@interface FIRAnalytics : NSObject + +/// Logs an app event. The event can have up to 25 parameters. Events with the same name must have +/// the same parameters. Up to 500 event names are supported. Using predefined events and/or +/// parameters is recommended for optimal reporting. +/// +/// The following event names are reserved and cannot be used: +///
    +///
  • app_clear_data
  • +///
  • app_uninstall
  • +///
  • app_update
  • +///
  • error
  • +///
  • first_open
  • +///
  • in_app_purchase
  • +///
  • notification_dismiss
  • +///
  • notification_foreground
  • +///
  • notification_open
  • +///
  • notification_receive
  • +///
  • os_update
  • +///
  • session_start
  • +///
  • user_engagement
  • +///
+/// +/// @param name The name of the event. Should contain 1 to 32 alphanumeric characters or +/// underscores. The name must start with an alphabetic character. Some event names are +/// reserved. See FIREventNames.h for the list of reserved event names. The "firebase_" prefix +/// is reserved and should not be used. Note that event names are case-sensitive and that +/// logging two events whose names differ only in case will result in two distinct events. +/// @param parameters The dictionary of event parameters. Passing nil indicates that the event has +/// no parameters. Parameter names can be up to 24 characters long and must start with an +/// alphabetic character and contain only alphanumeric characters and underscores. Only NSString +/// and NSNumber (signed 64-bit integer and 64-bit floating-point number) parameter types are +/// supported. NSString parameter values can be up to 36 characters long. The "firebase_" prefix +/// is reserved and should not be used for parameter names. ++ (void)logEventWithName:(nonnull NSString *)name + parameters:(nullable NSDictionary *)parameters; + +/// Sets a user property to a given value. Up to 25 user property names are supported. +/// +/// The following user property names are reserved and cannot be used: +///
    +///
  • first_open_time
  • +///
  • last_deep_link_referrer
  • +///
  • user_id
  • +///
+/// +/// @param value The value of the user property. Values can be up to 36 characters long. Setting the +/// value to nil removes the user property. +/// @param name The name of the user property to set. Should contain 1 to 24 alphanumeric characters +/// or underscores and must start with an alphabetic character. The "firebase_" prefix is +/// reserved and should not be used for user property names. ++ (void)setUserPropertyString:(nullable NSString *)value forName:(nonnull NSString *)name; + +/// Sets the user ID property. This feature must be used in accordance with +/// Google's Privacy Policy +/// +/// @param userID The user ID to ascribe to the user of this app on this device, which must be +/// non-empty and no more than 36 characters long. Setting userID to nil removes the user ID. ++ (void)setUserID:(nullable NSString *)userID; + +@end diff --git a/src/ios/Firebase/Analytics/FirebaseAnalytics.framework/Headers/FIRAnalyticsConfiguration.h b/src/ios/Firebase/Analytics/FirebaseAnalytics.framework/Headers/FIRAnalyticsConfiguration.h new file mode 100644 index 000000000..667d5a4be --- /dev/null +++ b/src/ios/Firebase/Analytics/FirebaseAnalytics.framework/Headers/FIRAnalyticsConfiguration.h @@ -0,0 +1,38 @@ +#import + +/** + * This class provides configuration fields for Firebase Analytics. + */ +@interface FIRAnalyticsConfiguration : NSObject + +/** + * Returns the shared instance of FIRAnalyticsConfiguration. + */ ++ (FIRAnalyticsConfiguration *)sharedInstance; + +/** + * Sets the minimum engagement time in seconds required to start a new session. The default value + * is 10 seconds. + */ +- (void)setMinimumSessionInterval:(NSTimeInterval)minimumSessionInterval; + +/** + * Sets the interval of inactivity in seconds that terminates the current session. The default + * value is 1800 seconds (30 minutes). + */ +- (void)setSessionTimeoutInterval:(NSTimeInterval)sessionTimeoutInterval; + +/** + * Sets whether analytics collection is enabled for this app on this device. This setting is + * persisted across app sessions. By default it is enabled. + */ +- (void)setAnalyticsCollectionEnabled:(BOOL)analyticsCollectionEnabled; + +/** + * Deprecated. Sets whether measurement and reporting are enabled for this app on this device. By + * default they are enabled. + */ +- (void)setIsEnabled:(BOOL)isEnabled + DEPRECATED_MSG_ATTRIBUTE("Use setAnalyticsCollectionEnabled: instead."); + +@end diff --git a/src/ios/Firebase/Analytics/FirebaseAnalytics.framework/Headers/FIRApp.h b/src/ios/Firebase/Analytics/FirebaseAnalytics.framework/Headers/FIRApp.h new file mode 100644 index 000000000..6b65776ae --- /dev/null +++ b/src/ios/Firebase/Analytics/FirebaseAnalytics.framework/Headers/FIRApp.h @@ -0,0 +1,85 @@ +#import +#import + +@class FIROptions; + +NS_ASSUME_NONNULL_BEGIN + +typedef void (^FIRAppVoidBoolCallback)(BOOL success); + +/** + * The entry point of Firebase SDKs. + * + * Initialize and configure FIRApp using [FIRApp configure]; + * Or other customized ways as shown below. + */ +@interface FIRApp : NSObject + +/** + * Configures a default Firebase app. Raises an exception if any configuration step fails. The + * default app is named "__FIRAPP_DEFAULT". This method should be called after the app is launched + * and before using Firebase services. This method is thread safe. + */ ++ (void)configure; + +/** + * Configures the default Firebase app with the provided options. The default app is named + * "__FIRAPP_DEFAULT". Raises an exception if any configuration step fails. This method is thread + * safe. + * + * @param options The Firebase application options used to configure the service. + */ ++ (void)configureWithOptions:(FIROptions *)options; + +/** + * Configures a Firebase app with the given name and options. Raises an exception if any + * configuration step fails. This method is thread safe. + * + * @param name The application's name given by the developer. The name should should only contain + Letters, Numbers and Underscore. + * @param options The Firebase application options used to configure the services. + */ ++ (void)configureWithName:(NSString *)name options:(FIROptions *)options; + +/** + * Returns the default app, or nil if the default app does not exist. + */ ++ (nullable FIRApp *)defaultApp NS_SWIFT_NAME(defaultApp()); + +/** + * Returns a previously created FIRApp instance with the given name, or nil if no such app exists. + * This method is thread safe. + */ ++ (nullable FIRApp *)appNamed:(NSString *)name; + +/** + * Returns the set of all extant FIRApp instances, or nil if there is no FIRApp instance. This + * method is thread safe. + */ ++ (nullable NSDictionary *)allApps; + +/** + * Cleans up the current FIRApp, freeing associated data and returning its name to the pool for + * future use. This method is thread safe in class level. + */ +- (void)deleteApp:(FIRAppVoidBoolCallback)completion; + +/** + * FIRFirebaseApp instances should not be initialized directly. Call |FIRApp configure|, or + * |FIRApp configureWithOptions:|, or |FIRApp configureWithNames:options| directly. + */ +- (nullable instancetype)init NS_UNAVAILABLE; + +/** + * Gets the name of this app. + */ +@property(nonatomic, copy, readonly) NSString *name; + +/** + * Gets the options for this app. + */ +@property(nonatomic, readonly) FIROptions *options; + +@end + +NS_ASSUME_NONNULL_END diff --git a/src/ios/Firebase/Analytics/FirebaseAnalytics.framework/Headers/FIRConfiguration.h b/src/ios/Firebase/Analytics/FirebaseAnalytics.framework/Headers/FIRConfiguration.h new file mode 100644 index 000000000..f06526e8d --- /dev/null +++ b/src/ios/Firebase/Analytics/FirebaseAnalytics.framework/Headers/FIRConfiguration.h @@ -0,0 +1,31 @@ +#import + +#import "FIRAnalyticsConfiguration.h" + +/** + * The log levels used by FIRConfiguration. + */ +typedef NS_ENUM(NSInteger, FIRLogLevel) { + kFIRLogLevelError = 0, + kFIRLogLevelWarning, + kFIRLogLevelInfo, + kFIRLogLevelDebug, + kFIRLogLevelAssert, + kFIRLogLevelMax = kFIRLogLevelAssert +}; + +/** + * This interface provides global level properties that the developer can tweak, and the singleton + * of each Google service configuration class. + */ +@interface FIRConfiguration : NSObject + ++ (FIRConfiguration *)sharedInstance; + +// The configuration class for Firebase Analytics. +@property(nonatomic, readwrite) FIRAnalyticsConfiguration *analyticsConfiguration; + +// Global log level. Defaults to kFIRLogLevelError. +@property(nonatomic, readwrite, assign) FIRLogLevel logLevel; + +@end diff --git a/src/ios/Firebase/Analytics/FirebaseAnalytics.framework/Headers/FIREventNames.h b/src/ios/Firebase/Analytics/FirebaseAnalytics.framework/Headers/FIREventNames.h new file mode 100644 index 000000000..50a9f838a --- /dev/null +++ b/src/ios/Firebase/Analytics/FirebaseAnalytics.framework/Headers/FIREventNames.h @@ -0,0 +1,311 @@ +/// @file FIREventNames.h +/// +/// Predefined event names. +/// +/// An Event is an important occurrence in your app that you want to measure. You can report up to +/// 500 different types of Events per app and you can associate up to 25 unique parameters with each +/// Event type. Some common events are suggested below, but you may also choose to specify custom +/// Event types that are associated with your specific app. Each event type is identified by a +/// unique name. Event names can be up to 32 characters long, may only contain alphanumeric +/// characters and underscores ("_"), and must start with an alphabetic character. The "firebase_" +/// prefix is reserved and should not be used. + +/// Add Payment Info event. This event signifies that a user has submitted their payment information +/// to your app. +static NSString *const kFIREventAddPaymentInfo = @"add_payment_info"; + +/// E-Commerce Add To Cart event. This event signifies that an item was added to a cart for +/// purchase. Add this event to a funnel with kFIREventEcommercePurchase to gauge the effectiveness +/// of your checkout process. Note: If you supply the {@link kFIRParameterValue} parameter, you must +/// also supply the {@link kFIRParameterCurrency} parameter so that revenue metrics can be computed +/// accurately. Params: +/// +///
    +///
  • {@link kFIRParameterQuantity} (signed 64-bit integer as NSNumber)
  • +///
  • {@link kFIRParameterItemID} (NSString)
  • +///
  • {@link kFIRParameterItemName} (NSString)
  • +///
  • {@link kFIRParameterItemCategory} (NSString)
  • +///
  • {@link kFIRParameterItemLocationID} (NSString) (optional)
  • +///
  • {@link kFIRParameterPrice} (double as NSNumber) (optional)
  • +///
  • {@link kFIRParameterCurrency} (NSString) (optional)
  • +///
  • {@link kFIRParameterValue} (double as NSNumber) (optional)
  • +///
  • {@link kFIRParameterOrigin} (NSString) (optional)
  • +///
  • {@link kFIRParameterDestination} (NSString) (optional)
  • +///
  • {@link kFIRParameterStartDate} (NSString) (optional)
  • +///
  • {@link kFIRParameterEndDate} (NSString) (optional)
  • +///
+static NSString *const kFIREventAddToCart = @"add_to_cart"; + +/// E-Commerce Add To Wishlist event. This event signifies that an item was added to a wishlist. +/// Use this event to identify popular gift items in your app. Note: If you supply the +/// {@link kFIRParameterValue} parameter, you must also supply the {@link kFIRParameterCurrency} +/// parameter so that revenue metrics can be computed accurately. Params: +/// +///
    +///
  • {@link kFIRParameterQuantity} (signed 64-bit integer as NSNumber)
  • +///
  • {@link kFIRParameterItemID} (NSString)
  • +///
  • {@link kFIRParameterItemName} (NSString)
  • +///
  • {@link kFIRParameterItemCategory} (NSString)
  • +///
  • {@link kFIRParameterItemLocationID} (NSString) (optional)
  • +///
  • {@link kFIRParameterPrice} (double as NSNumber) (optional)
  • +///
  • {@link kFIRParameterCurrency} (NSString) (optional)
  • +///
  • {@link kFIRParameterValue} (double as NSNumber) (optional)
  • +///
+static NSString *const kFIREventAddToWishlist = @"add_to_wishlist"; + +/// App Open event. By logging this event when an App is moved to the foreground, 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 app-users. +static NSString *const kFIREventAppOpen = @"app_open"; + +/// E-Commerce Begin Checkout event. This event signifies that a user has begun the process of +/// checking out. Add this event to a funnel with your kFIREventEcommercePurchase event to gauge the +/// effectiveness of your checkout process. Note: If you supply the {@link kFIRParameterValue} +/// parameter, you must also supply the {@link kFIRParameterCurrency} parameter so that revenue +/// metrics can be computed accurately. Params: +/// +///
    +///
  • {@link kFIRParameterValue} (double as NSNumber) (optional)
  • +///
  • {@link kFIRParameterCurrency} (NSString) (optional)
  • +///
  • {@link kFIRParameterTransactionID} (NSString) (optional)
  • +///
  • {@link kFIRParameterStartDate} (NSString) (optional)
  • +///
  • {@link kFIRParameterEndDate} (NSString) (optional)
  • +///
  • {@link kFIRParameterNumberOfNights} (signed 64-bit integer as NSNumber) (optional) for +/// hotel bookings
  • +///
  • {@link kFIRParameterNumberOfRooms} (signed 64-bit integer as NSNumber) (optional) for +/// hotel bookings
  • +///
  • {@link kFIRParameterNumberOfPassengers} (signed 64-bit integer as NSNumber) (optional) +/// for travel bookings
  • +///
  • {@link kFIRParameterOrigin} (NSString) (optional)
  • +///
  • {@link kFIRParameterDestination} (NSString) (optional)
  • +///
  • {@link kFIRParameterTravelClass} (NSString) (optional) for travel bookings
  • +///
+static NSString *const kFIREventBeginCheckout = @"begin_checkout"; + +/// E-Commerce Purchase event. This event signifies that an item was purchased by a user. Note: +/// This is different from the in-app purchase event, which is reported automatically for App +/// Store-based apps. Note: If you supply the {@link kFIRParameterValue} parameter, you must also +/// supply the {@link kFIRParameterCurrency} parameter so that revenue metrics can be computed +/// accurately. Params: +/// +///
    +///
  • {@link kFIRParameterCurrency} (NSString) (optional)
  • +///
  • {@link kFIRParameterValue} (double as NSNumber) (optional)
  • +///
  • {@link kFIRParameterTransactionID} (NSString) (optional)
  • +///
  • {@link kFIRParameterTax} (double as NSNumber) (optional)
  • +///
  • {@link kFIRParameterShipping} (double as NSNumber) (optional)
  • +///
  • {@link kFIRParameterCoupon} (NSString) (optional)
  • +///
  • {@link kFIRParameterLocation} (NSString) (optional)
  • +///
  • {@link kFIRParameterStartDate} (NSString) (optional)
  • +///
  • {@link kFIRParameterEndDate} (NSString) (optional)
  • +///
  • {@link kFIRParameterNumberOfNights} (signed 64-bit integer as NSNumber) (optional) for +/// hotel bookings
  • +///
  • {@link kFIRParameterNumberOfRooms} (signed 64-bit integer as NSNumber) (optional) for +/// hotel bookings
  • +///
  • {@link kFIRParameterNumberOfPassengers} (signed 64-bit integer as NSNumber) (optional) +/// for travel bookings
  • +///
  • {@link kFIRParameterOrigin} (NSString) (optional)
  • +///
  • {@link kFIRParameterDestination} (NSString) (optional)
  • +///
  • {@link kFIRParameterTravelClass} (NSString) (optional) for travel bookings
  • +///
+static NSString *const kFIREventEcommercePurchase = @"ecommerce_purchase"; + +/// Generate Lead event. Log this event when a lead has been generated in the app to understand the +/// efficacy of your install and re-engagement campaigns. Note: If you supply the +/// {@link kFIRParameterValue} parameter, you must also supply the {@link kFIRParameterCurrency} +/// parameter so that revenue metrics can be computed accurately. Params: +/// +///
    +///
  • {@link kFIRParameterCurrency} (NSString) (optional)
  • +///
  • {@link kFIRParameterValue} (double as NSNumber) (optional)
  • +///
+static NSString *const kFIREventGenerateLead = @"generate_lead"; + +/// Join Group event. Log this event when a user joins a group such as a guild, team or family. Use +/// this event to analyze how popular certain groups or social features are in your app. Params: +/// +///
    +///
  • {@link kFIRParameterGroupID} (NSString)
  • +///
+static NSString *const kFIREventJoinGroup = @"join_group"; + +/// Level Up event. This event signifies that a player has leveled up in your gaming app. It can +/// help you gauge the level distribution of your userbase and help you identify certain levels that +/// are difficult to pass. Params: +/// +///
    +///
  • {@link kFIRParameterLevel} (signed 64-bit integer as NSNumber)
  • +///
  • {@link kFIRParameterCharacter} (NSString) (optional)
  • +///
+static NSString *const kFIREventLevelUp = @"level_up"; + +/// Login event. Apps with a login feature can report this event to signify that a user has logged +/// in. +static NSString *const kFIREventLogin = @"login"; + +/// Post Score event. Log this event when the user posts a score in your gaming app. This event can +/// help you understand how users are actually performing in your game and it can help you correlate +/// high scores with certain audiences or behaviors. Params: +/// +///
    +///
  • {@link kFIRParameterScore} (signed 64-bit integer as NSNumber)
  • +///
  • {@link kFIRParameterLevel} (signed 64-bit integer as NSNumber) (optional)
  • +///
  • {@link kFIRParameterCharacter} (NSString) (optional)
  • +///
+static NSString *const kFIREventPostScore = @"post_score"; + +/// Present Offer event. This event signifies that the app has presented a purchase offer to a user. +/// Add this event to a funnel with the kFIREventAddToCart and kFIREventEcommercePurchase to gauge +/// your conversion process. Note: If you supply the {@link kFIRParameterValue} parameter, you must +/// also supply the {@link kFIRParameterCurrency} parameter so that revenue metrics can be computed +/// accurately. Params: +/// +///
    +///
  • {@link kFIRParameterQuantity} (signed 64-bit integer as NSNumber)
  • +///
  • {@link kFIRParameterItemID} (NSString)
  • +///
  • {@link kFIRParameterItemName} (NSString)
  • +///
  • {@link kFIRParameterItemCategory} (NSString)
  • +///
  • {@link kFIRParameterItemLocationID} (NSString) (optional)
  • +///
  • {@link kFIRParameterPrice} (double as NSNumber) (optional)
  • +///
  • {@link kFIRParameterCurrency} (NSString) (optional)
  • +///
  • {@link kFIRParameterValue} (double as NSNumber) (optional)
  • +///
+static NSString *const kFIREventPresentOffer = @"present_offer"; + +/// E-Commerce Purchase Refund event. This event signifies that an item purchase was refunded. +/// Note: If you supply the {@link kFIRParameterValue} parameter, you must also supply the +/// {@link kFIRParameterCurrency} parameter so that revenue metrics can be computed accurately. +/// Params: +/// +///
    +///
  • {@link kFIRParameterCurrency} (NSString) (optional)
  • +///
  • {@link kFIRParameterValue} (double as NSNumber) (optional)
  • +///
  • {@link kFIRParameterTransactionID} (NSString) (optional)
  • +///
+static NSString *const kFIREventPurchaseRefund = @"purchase_refund"; + +/// Search event. Apps that support search features can use this event to contextualize search +/// operations by supplying the appropriate, corresponding parameters. This event can help you +/// identify the most popular content in your app. Params: +/// +///
    +///
  • {@link kFIRParameterSearchTerm} (NSString)
  • +///
  • {@link kFIRParameterStartDate} (NSString) (optional)
  • +///
  • {@link kFIRParameterEndDate} (NSString) (optional)
  • +///
  • {@link kFIRParameterNumberOfNights} (signed 64-bit integer as NSNumber) (optional) for +/// hotel bookings
  • +///
  • {@link kFIRParameterNumberOfRooms} (signed 64-bit integer as NSNumber) (optional) for +/// hotel bookings
  • +///
  • {@link kFIRParameterNumberOfPassengers} (signed 64-bit integer as NSNumber) (optional) +/// for travel bookings
  • +///
  • {@link kFIRParameterOrigin} (NSString) (optional)
  • +///
  • {@link kFIRParameterDestination} (NSString) (optional)
  • +///
  • {@link kFIRParameterTravelClass} (NSString) (optional) for travel bookings
  • +///
+static NSString *const kFIREventSearch = @"search"; + +/// Select Content event. This general purpose event signifies that a user has selected some content +/// of a certain type in an app. The content can be any object in your app. This event can help you +/// identify popular content and categories of content in your app. Params: +/// +///
    +///
  • {@link kFIRParameterContentType} (NSString)
  • +///
  • {@link kFIRParameterItemID} (NSString)
  • +///
+static NSString *const kFIREventSelectContent = @"select_content"; + +/// Share event. Apps with social features can log the Share event to identify the most viral +/// content. Params: +/// +///
    +///
  • {@link kFIRParameterContentType} (NSString)
  • +///
  • {@link kFIRParameterItemID} (NSString)
  • +///
+static NSString *const kFIREventShare = @"share"; + +/// Sign Up event. This event indicates that a user has signed up for an account in your app. The +/// parameter signifies the method by which the user signed up. Use this event to understand the +/// different behaviors between logged in and logged out users. Params: +/// +///
    +///
  • {@link kFIRParameterSignUpMethod} (NSString)
  • +///
+static NSString *const kFIREventSignUp = @"sign_up"; + +/// Spend Virtual Currency event. This event tracks the sale of virtual goods in your app and can +/// help you identify which virtual goods are the most popular objects of purchase. Params: +/// +///
    +///
  • {@link kFIRParameterItemName} (NSString)
  • +///
  • {@link kFIRParameterVirtualCurrencyName} (NSString)
  • +///
  • {@link kFIRParameterValue} (signed 64-bit integer or double as NSNumber)
  • +///
+static NSString *const kFIREventSpendVirtualCurrency = @"spend_virtual_currency"; + +/// Tutorial Begin event. This event signifies the start of the on-boarding process in your app. Use +/// this in a funnel with kFIREventTutorialComplete to understand how many users complete this +/// process and move on to the full app experience. +static NSString *const kFIREventTutorialBegin = @"tutorial_begin"; + +/// Tutorial End event. Use this event to signify the user's completion of your app's on-boarding +/// process. Add this to a funnel with kFIREventTutorialBegin to gauge the completion rate of your +/// on-boarding process. +static NSString *const kFIREventTutorialComplete = @"tutorial_complete"; + +/// Unlock Achievement event. Log this event when the user has unlocked an achievement in your +/// game. Since achievements generally represent the breadth of a gaming experience, this event can +/// help you understand how many users are experiencing all that your game has to offer. Params: +/// +///
    +///
  • {@link kFIRParameterAchievementID} (NSString)
  • +///
+static NSString *const kFIREventUnlockAchievement = @"unlock_achievement"; + +/// View Item event. This event signifies that some content was shown to the user. This content may +/// be a product, a webpage or just a simple image or text. Use the appropriate parameters to +/// contextualize the event. Use this event to discover the most popular items viewed in your app. +/// Note: If you supply the {@link kFIRParameterValue} parameter, you must also supply the +/// {@link kFIRParameterCurrency} parameter so that revenue metrics can be computed accurately. +/// Params: +/// +///
    +///
  • {@link kFIRParameterItemID} (NSString)
  • +///
  • {@link kFIRParameterItemName} (NSString)
  • +///
  • {@link kFIRParameterItemCategory} (NSString)
  • +///
  • {@link kFIRParameterItemLocationID} (NSString) (optional)
  • +///
  • {@link kFIRParameterPrice} (double as NSNumber) (optional)
  • +///
  • {@link kFIRParameterQuantity} (signed 64-bit integer as NSNumber) (optional)
  • +///
  • {@link kFIRParameterCurrency} (NSString) (optional)
  • +///
  • {@link kFIRParameterValue} (double as NSNumber) (optional)
  • +///
  • {@link kFIRParameterStartDate} (NSString) (optional)
  • +///
  • {@link kFIRParameterEndDate} (NSString) (optional)
  • +///
  • {@link kFIRParameterFlightNumber} (NSString) (optional) for travel bookings
  • +///
  • {@link kFIRParameterNumberOfPassengers} (signed 64-bit integer as NSNumber) (optional) +/// for travel bookings
  • +///
  • {@link kFIRParameterNumberOfNights} (signed 64-bit integer as NSNumber) (optional) for +/// travel bookings
  • +///
  • {@link kFIRParameterNumberOfRooms} (signed 64-bit integer as NSNumber) (optional) for +/// travel bookings
  • +///
  • {@link kFIRParameterOrigin} (NSString) (optional)
  • +///
  • {@link kFIRParameterDestination} (NSString) (optional)
  • +///
  • {@link kFIRParameterSearchTerm} (NSString) (optional) for travel bookings
  • +///
  • {@link kFIRParameterTravelClass} (NSString) (optional) for travel bookings
  • +///
+static NSString *const kFIREventViewItem = @"view_item"; + +/// View Item List event. Log this event when the user has been presented with a list of items of a +/// certain category. Params: +/// +///
    +///
  • {@link kFIRParameterItemCategory} (NSString)
  • +///
+static NSString *const kFIREventViewItemList = @"view_item_list"; + +/// View Search Results event. Log this event when the user has been presented with the results of a +/// search. Params: +/// +///
    +///
  • {@link kFIRParameterSearchTerm} (NSString)
  • +///
+static NSString *const kFIREventViewSearchResults = @"view_search_results"; diff --git a/src/ios/Firebase/Analytics/FirebaseAnalytics.framework/Headers/FIROptions.h b/src/ios/Firebase/Analytics/FirebaseAnalytics.framework/Headers/FIROptions.h new file mode 100644 index 000000000..82418f691 --- /dev/null +++ b/src/ios/Firebase/Analytics/FirebaseAnalytics.framework/Headers/FIROptions.h @@ -0,0 +1,77 @@ +#import + +/** + * This class provides constant fields of Google APIs. + */ +@interface FIROptions : NSObject + +/** + * Returns the default options. + */ ++ (FIROptions *)defaultOptions; + +/** + * An iOS API key used for authenticating requests from your app, e.g. + * @"AIzaSyDdVgKwhZl0sTTTLZ7iTmt1r3N2cJLnaDk", used to identify your app to Google servers. + */ +@property(nonatomic, readonly, copy) NSString *APIKey; + +/** + * The OAuth2 client ID for iOS application used to authenticate Google users, for example + * @"12345.apps.googleusercontent.com", used for signing in with Google. + */ +@property(nonatomic, readonly, copy) NSString *clientID; + +/** + * The tracking ID for Google Analytics, e.g. @"UA-12345678-1", used to configure Google Analytics. + */ +@property(nonatomic, readonly, copy) NSString *trackingID; + +/** + * The Project Number from the Google Developer's console, for example @"012345678901", used to + * configure Google Cloud Messaging. + */ +@property(nonatomic, readonly, copy) NSString *GCMSenderID; + +/** + * The Android client ID used in Google AppInvite when an iOS app has its Android version, for + * example @"12345.apps.googleusercontent.com". + */ +@property(nonatomic, readonly, copy) NSString *androidClientID; + +/** + * The Google App ID that is used to uniquely identify an instance of an app. + */ +@property(nonatomic, readonly, copy) NSString *googleAppID; + +/** + * The database root URL, e.g. @"http://abc-xyz-123.firebaseio.com". + */ +@property(nonatomic, readonly, copy) NSString *databaseURL; + +/** + * The URL scheme used to set up Durable Deep Link service. + */ +@property(nonatomic, readwrite, copy) NSString *deepLinkURLScheme; + +/** + * The Google Cloud Storage bucket name, e.g. @"abc-xyz-123.storage.firebase.com". + */ +@property(nonatomic, readonly, copy) NSString *storageBucket; + +/** + * Initializes a customized instance of FIROptions with keys. googleAppID, bundleID and GCMSenderID + * are required. Other keys may required for configuring specific services. + */ +- (instancetype)initWithGoogleAppID:(NSString *)googleAppID + bundleID:(NSString *)bundleID + GCMSenderID:(NSString *)GCMSenderID + APIKey:(NSString *)APIKey + clientID:(NSString *)clientID + trackingID:(NSString *)trackingID + androidClientID:(NSString *)androidClientID + databaseURL:(NSString *)databaseURL + storageBucket:(NSString *)storageBucket + deepLinkURLScheme:(NSString *)deepLinkURLScheme; + +@end diff --git a/src/ios/Firebase/Analytics/FirebaseAnalytics.framework/Headers/FIRParameterNames.h b/src/ios/Firebase/Analytics/FirebaseAnalytics.framework/Headers/FIRParameterNames.h new file mode 100644 index 000000000..42c0c5e21 --- /dev/null +++ b/src/ios/Firebase/Analytics/FirebaseAnalytics.framework/Headers/FIRParameterNames.h @@ -0,0 +1,304 @@ +/// @file FIRParameterNames.h +/// +/// Predefined event parameter names. +/// +/// Params supply information that contextualize Events. You can associate up to 25 unique Params +/// with each Event type. Some Params are suggested below for certain common Events, but you are +/// not limited to these. You may supply extra Params for suggested Events or custom Params for +/// Custom events. Param names can be up to 24 characters long, may only contain alphanumeric +/// characters and underscores ("_"), and must start with an alphabetic character. Param values can +/// be up to 36 characters long. The "firebase_" prefix is reserved and should not be used. + +/// Game achievement ID (NSString). +///
+///     NSDictionary *params = @{
+///       kFIRParameterAchievementID : @"10_matches_won",
+///       // ...
+///     };
+/// 
+static NSString *const kFIRParameterAchievementID = @"achievement_id"; + +/// Character used in game (NSString). +///
+///     NSDictionary *params = @{
+///       kFIRParameterCharacter : @"beat_boss",
+///       // ...
+///     };
+/// 
+static NSString *const kFIRParameterCharacter = @"character"; + +/// Type of content selected (NSString). +///
+///     NSDictionary *params = @{
+///       kFIRParameterContentType : @"news article",
+///       // ...
+///     };
+/// 
+static NSString *const kFIRParameterContentType = @"content_type"; + +/// Coupon code for a purchasable item (NSString). +///
+///     NSDictionary *params = @{
+///       kFIRParameterCoupon : @"zz123",
+///       // ...
+///     };
+/// 
+static NSString *const kFIRParameterCoupon = @"coupon"; + +/// Purchase currency in 3-letter +/// ISO_4217 format (NSString). +///
+///     NSDictionary *params = @{
+///       kFIRParameterCurrency : @"USD",
+///       // ...
+///     };
+/// 
+static NSString *const kFIRParameterCurrency = @"currency"; + +/// Flight or Travel destination (NSString). +///
+///     NSDictionary *params = @{
+///       kFIRParameterDestination : @"Mountain View, CA",
+///       // ...
+///     };
+/// 
+static NSString *const kFIRParameterDestination = @"destination"; + +/// The arrival date, check-out date or rental end date for the item. This should be in +/// YYYY-MM-DD format (NSString). +///
+///     NSDictionary *params = @{
+///       kFIRParameterEndDate : @"2015-09-14",
+///       // ...
+///     };
+/// 
+static NSString *const kFIRParameterEndDate = @"end_date"; + +/// Flight number for travel events (NSString). +///
+///     NSDictionary *params = @{
+///       kFIRParameterFlightNumber : @"ZZ800",
+///       // ...
+///     };
+/// 
+static NSString *const kFIRParameterFlightNumber = @"flight_number"; + +/// Group/clan/guild ID (NSString). +///
+///     NSDictionary *params = @{
+///       kFIRParameterGroupID : @"g1",
+///       // ...
+///     };
+/// 
+static NSString *const kFIRParameterGroupID = @"group_id"; + +/// Item category (NSString). +///
+///     NSDictionary *params = @{
+///       kFIRParameterItemCategory : @"t-shirts",
+///       // ...
+///     };
+/// 
+static NSString *const kFIRParameterItemCategory = @"item_category"; + +/// Item ID (NSString). +///
+///     NSDictionary *params = @{
+///       kFIRParameterItemID : @"p7654",
+///       // ...
+///     };
+/// 
+static NSString *const kFIRParameterItemID = @"item_id"; + +/// The Google Place ID (NSString) that +/// corresponds to the associated item. Alternatively, you can supply your own custom Location ID. +///
+///     NSDictionary *params = @{
+///       kFIRParameterItemLocationID : @"ChIJiyj437sx3YAR9kUWC8QkLzQ",
+///       // ...
+///     };
+/// 
+static NSString *const kFIRParameterItemLocationID = @"item_location_id"; + +/// Item name (NSString). +///
+///     NSDictionary *params = @{
+///       kFIRParameterItemName : @"abc",
+///       // ...
+///     };
+/// 
+static NSString *const kFIRParameterItemName = @"item_name"; + +/// Level in game (signed 64-bit integer as NSNumber). +///
+///     NSDictionary *params = @{
+///       kFIRParameterLevel : @(42),
+///       // ...
+///     };
+/// 
+static NSString *const kFIRParameterLevel = @"level"; + +/// Location (NSString). The Google Place ID +/// that corresponds to the associated event. Alternatively, you can supply your own custom +/// Location ID. +///
+///     NSDictionary *params = @{
+///       kFIRParameterLocation : @"ChIJiyj437sx3YAR9kUWC8QkLzQ",
+///       // ...
+///     };
+/// 
+static NSString *const kFIRParameterLocation = @"location"; + +/// Number of nights staying at hotel (signed 64-bit integer as NSNumber). +///
+///     NSDictionary *params = @{
+///       kFIRParameterNumberOfNights : @(3),
+///       // ...
+///     };
+/// 
+static NSString *const kFIRParameterNumberOfNights = @"number_of_nights"; + +/// Number of passengers traveling (signed 64-bit integer as NSNumber). +///
+///     NSDictionary *params = @{
+///       kFIRParameterNumberOfPassengers : @(11),
+///       // ...
+///     };
+/// 
+static NSString *const kFIRParameterNumberOfPassengers = @"number_of_passengers"; + +/// Number of rooms for travel events (signed 64-bit integer as NSNumber). +///
+///     NSDictionary *params = @{
+///       kFIRParameterNumberOfRooms : @(2),
+///       // ...
+///     };
+/// 
+static NSString *const kFIRParameterNumberOfRooms = @"number_of_rooms"; + +/// Flight or Travel origin (NSString). +///
+///     NSDictionary *params = @{
+///       kFIRParameterOrigin : @"Mountain View, CA",
+///       // ...
+///     };
+/// 
+static NSString *const kFIRParameterOrigin = @"origin"; + +/// Purchase price (double as NSNumber). +///
+///     NSDictionary *params = @{
+///       kFIRParameterPrice : @(1.0),
+///       kFIRParameterCurrency : @"USD",  // e.g. $1.00 USD
+///       // ...
+///     };
+/// 
+static NSString *const kFIRParameterPrice = @"price"; + +/// Purchase quantity (signed 64-bit integer as NSNumber). +///
+///     NSDictionary *params = @{
+///       kFIRParameterQuantity : @(1),
+///       // ...
+///     };
+/// 
+static NSString *const kFIRParameterQuantity = @"quantity"; + +/// Score in game (signed 64-bit integer as NSNumber). +///
+///     NSDictionary *params = @{
+///       kFIRParameterScore : @(4200),
+///       // ...
+///     };
+/// 
+static NSString *const kFIRParameterScore = @"score"; + +/// The search string/keywords used (NSString). +///
+///     NSDictionary *params = @{
+///       kFIRParameterSearchTerm : @"periodic table",
+///       // ...
+///     };
+/// 
+static NSString *const kFIRParameterSearchTerm = @"search_term"; + +/// Shipping cost (double as NSNumber). +///
+///     NSDictionary *params = @{
+///       kFIRParameterShipping : @(9.50),
+///       kFIRParameterCurrency : @"USD",  // e.g. $9.50 USD
+///       // ...
+///     };
+/// 
+static NSString *const kFIRParameterShipping = @"shipping"; + +/// Sign up method (NSString). +///
+///     NSDictionary *params = @{
+///       kFIRParameterSignUpMethod : @"google",
+///       // ...
+///     };
+/// 
+static NSString *const kFIRParameterSignUpMethod = @"sign_up_method"; + +/// The departure date, check-in date or rental start date for the item. This should be in +/// YYYY-MM-DD format (NSString). +///
+///     NSDictionary *params = @{
+///       kFIRParameterStartDate : @"2015-09-14",
+///       // ...
+///     };
+/// 
+static NSString *const kFIRParameterStartDate = @"start_date"; + +/// Tax amount (double as NSNumber). +///
+///     NSDictionary *params = @{
+///       kFIRParameterTax : @(1.0),
+///       kFIRParameterCurrency : @"USD",  // e.g. $1.00 USD
+///       // ...
+///     };
+/// 
+static NSString *const kFIRParameterTax = @"tax"; + +/// A single ID for a ecommerce group transaction (NSString). +///
+///     NSDictionary *params = @{
+///       kFIRParameterTransactionID : @"ab7236dd9823",
+///       // ...
+///     };
+/// 
+static NSString *const kFIRParameterTransactionID = @"transaction_id"; + +/// Travel class (NSString). +///
+///     NSDictionary *params = @{
+///       kFIRParameterTravelClass : @"business",
+///       // ...
+///     };
+/// 
+static NSString *const kFIRParameterTravelClass = @"travel_class"; + +/// A context-specific numeric value which is accumulated automatically for each event type. This is +/// a general purpose parameter that is useful for accumulating a key metric that pertains to an +/// event. Examples include revenue, distance, time and points. Value should be specified as signed +/// 64-bit integer or double as NSNumber. Notes: Currency-related values should be supplied using +/// double as NSNumber and must be accompanied by a {@link kFIRParameterCurrency} parameter. The +/// valid range of accumulated values is [-9,223,372,036,854.77, 9,223,372,036,854.77]. +///
+///     NSDictionary *params = @{
+///       kFIRParameterValue : @(3.99),
+///       kFIRParameterCurrency : @"USD",  // e.g. $3.99 USD
+///       // ...
+///     };
+/// 
+static NSString *const kFIRParameterValue = @"value"; + +/// Name of virtual currency type (NSString). +///
+///     NSDictionary *params = @{
+///       kFIRParameterVirtualCurrencyName : @"virtual_currency_name",
+///       // ...
+///     };
+/// 
+static NSString *const kFIRParameterVirtualCurrencyName = @"virtual_currency_name"; diff --git a/src/ios/Firebase/Analytics/FirebaseAnalytics.framework/Headers/FIRUserPropertyNames.h b/src/ios/Firebase/Analytics/FirebaseAnalytics.framework/Headers/FIRUserPropertyNames.h new file mode 100644 index 000000000..54cf1c201 --- /dev/null +++ b/src/ios/Firebase/Analytics/FirebaseAnalytics.framework/Headers/FIRUserPropertyNames.h @@ -0,0 +1,13 @@ +/// @file FIRUserPropertyNames.h +/// +/// Predefined user property names. +/// +/// A UserProperty is an attribute that describes the app-user. By supplying UserProperties, you can +/// later analyze different behaviors of various segments of your userbase. You may supply up to 25 +/// unique UserProperties per app, and you can use the name and value of your choosing for each one. +/// UserProperty names can be up to 24 characters long, may only contain alphanumeric characters and +/// underscores ("_"), and must start with an alphabetic character. UserProperty values can be up to +/// 36 characters long. The "firebase_" prefix is reserved and should not be used. + +/// The method used to sign in. For example, "google", "facebook" or "twitter". +static NSString *const kFIRUserPropertySignUpMethod = @"sign_up_method"; diff --git a/src/ios/Firebase/Analytics/FirebaseAnalytics.framework/Headers/FirebaseAnalytics.h b/src/ios/Firebase/Analytics/FirebaseAnalytics.framework/Headers/FirebaseAnalytics.h new file mode 100644 index 000000000..02667b303 --- /dev/null +++ b/src/ios/Firebase/Analytics/FirebaseAnalytics.framework/Headers/FirebaseAnalytics.h @@ -0,0 +1,11 @@ +// Generated umbrella header for FirebaseAnalytics. + +#import "FIRAnalytics+AppDelegate.h" +#import "FIRAnalytics.h" +#import "FIRAnalyticsConfiguration.h" +#import "FIRApp.h" +#import "FIRConfiguration.h" +#import "FIREventNames.h" +#import "FIROptions.h" +#import "FIRParameterNames.h" +#import "FIRUserPropertyNames.h" diff --git a/src/ios/Firebase/Analytics/FirebaseAnalytics.framework/Modules/module.modulemap b/src/ios/Firebase/Analytics/FirebaseAnalytics.framework/Modules/module.modulemap new file mode 100644 index 000000000..65f7ed9b0 --- /dev/null +++ b/src/ios/Firebase/Analytics/FirebaseAnalytics.framework/Modules/module.modulemap @@ -0,0 +1,26 @@ +framework module FirebaseAnalytics { + + export * + + umbrella header "FirebaseAnalytics.h" + + header "FIRAnalytics+AppDelegate.h" + header "FIRAnalytics.h" + header "FIRAnalyticsConfiguration.h" + header "FIRApp.h" + header "FIRConfiguration.h" + header "FIREventNames.h" + header "FIROptions.h" + header "FIRParameterNames.h" + header "FIRUserPropertyNames.h" + + link framework "AddressBook" + link framework "AdSupport" + link framework "SafariServices" + link framework "StoreKit" + link framework "SystemConfiguration" + + link "c++" + link "sqlite3" + link "z" +} diff --git a/src/ios/Firebase/Analytics/FirebaseInstanceID.framework/FirebaseInstanceID b/src/ios/Firebase/Analytics/FirebaseInstanceID.framework/FirebaseInstanceID new file mode 100755 index 000000000..9e1a63a52 Binary files /dev/null and b/src/ios/Firebase/Analytics/FirebaseInstanceID.framework/FirebaseInstanceID differ diff --git a/src/ios/Firebase/Analytics/FirebaseInstanceID.framework/Headers/FIRInstanceID.h b/src/ios/Firebase/Analytics/FirebaseInstanceID.framework/Headers/FIRInstanceID.h new file mode 100644 index 000000000..717e290aa --- /dev/null +++ b/src/ios/Firebase/Analytics/FirebaseInstanceID.framework/Headers/FIRInstanceID.h @@ -0,0 +1,245 @@ +#import + +/** + * @memberof FIRInstanceID + * + * The scope to be used when fetching/deleting a token for Firebase Messaging. + */ +FOUNDATION_EXPORT NSString * __nonnull const kFIRInstanceIDScopeFirebaseMessaging; + +/** + * Called when the system determines that tokens need to be refreshed. + * This method is also called if Instance ID has been reset in which + * case, tokens and FCM topic subscriptions also need to be refreshed. + * + * Instance ID service will throttle the refresh event across all devices + * to control the rate of token updates on application servers. + */ +FOUNDATION_EXPORT NSString * __nonnull const kFIRInstanceIDTokenRefreshNotification; + +/** + * @related FIRInstanceID + * + * The completion handler invoked when the InstanceID token returns. If + * the call fails we return the appropriate `error code` as described below. + * + * @param token The valid token as returned by InstanceID backend. + * + * @param error The error describing why generating a new token + * failed. See the error codes below for a more detailed + * description. + */ +typedef void(^FIRInstanceIDTokenHandler)( NSString * __nullable token, NSError * __nullable error); + + +/** + * @related FIRInstanceID + * + * The completion handler invoked when the InstanceID `deleteToken` returns. If + * the call fails we return the appropriate `error code` as described below + * + * @param error The error describing why deleting the token failed. + * See the error codes below for a more detailed description. + */ +typedef void(^FIRInstanceIDDeleteTokenHandler)(NSError * __nullable error); + +/** + * @related FIRInstanceID + * + * The completion handler invoked when the app identity is created. If the + * identity wasn't created for some reason we return the appropriate error code. + * + * @param identity A valid identity for the app instance, nil if there was an error + * while creating an identity. + * @param error The error if fetching the identity fails else nil. + */ +typedef void(^FIRInstanceIDHandler)(NSString * __nullable identity, NSError * __nullable error); + +/** + * @related FIRInstanceID + * + * The completion handler invoked when the app identity and all the tokens associated + * with it are deleted. Returns a valid error object in case of failure else nil. + * + * @param error The error if deleting the identity and all the tokens associated with + * it fails else nil. + */ +typedef void(^FIRInstanceIDDeleteHandler)(NSError * __nullable error); + +/** + * @enum FIRInstanceIDError + */ +typedef NS_ENUM(NSUInteger, FIRInstanceIDError) { + // Http related errors. + + /// Unknown error. + FIRInstanceIDErrorUnknown = 0, + + /// Auth Error -- GCM couldn't validate request from this client. + FIRInstanceIDErrorAuthentication = 1, + + /// NoAccess -- InstanceID service cannot be accessed. + FIRInstanceIDErrorNoAccess = 2, + + /// Timeout -- Request to InstanceID backend timed out. + FIRInstanceIDErrorTimeout = 3, + + /// Network -- No network available to reach the servers. + FIRInstanceIDErrorNetwork = 4, + + /// OperationInProgress -- Another similar operation in progress, + /// bailing this one. + FIRInstanceIDErrorOperationInProgress = 5, + + /// InvalidRequest -- Some parameters of the request were invalid. + FIRInstanceIDErrorInvalidRequest = 7, +}; + +/** + * The APNS token type for the app. If the token type is set to `UNKNOWN` + * InstanceID will implicitly try to figure out what the actual token type + * is from the provisioning profile. + */ +typedef NS_ENUM(NSInteger, FIRInstanceIDAPNSTokenType) { + /// Unknown token type. + FIRInstanceIDAPNSTokenTypeUnknown, + /// Sandbox token type. + FIRInstanceIDAPNSTokenTypeSandbox, + /// Production token type. + FIRInstanceIDAPNSTokenTypeProd, +}; + +/** + * Instance ID provides a unique identifier for each app instance and a mechanism + * to authenticate and authorize actions (for example, sending a GCM message). + * + * Instance ID is long lived but, may be reset if the device is not used for + * a long time or the Instance ID service detects a problem. + * If Instance ID is reset, the app will be notified with a `com.firebase.iid.token-refresh` + * notification. + * + * If the Instance ID has become invalid, the app can request a new one and + * send it to the app server. + * To prove ownership of Instance ID and to allow servers to access data or + * services associated with the app, call + * `[FIRInstanceID tokenWithAuthorizedEntity:scope:options:handler]`. + */ +@interface FIRInstanceID : NSObject + +/** + * FIRInstanceID. + * + * @return A shared instance of FIRInstanceID. + */ ++ (nonnull instancetype)instanceID NS_SWIFT_NAME(instanceID()); + +/** + * Unavailable. Use +instanceID instead. + */ +- (nonnull instancetype)init __attribute__((unavailable("Use +instanceID instead."))); + +/** + * Set APNS token for the application. This APNS token will be used to register + * with Firebase Messaging using `token` or + * `tokenWithAuthorizedEntity:scope:options:handler`. If the token type is set to + * `FIRInstanceIDAPNSTokenTypeUnknown` InstanceID will read the provisioning profile + * to find out the token type. + * + * @param token The APNS token for the application. + * @param type The APNS token type for the above token. + */ +- (void)setAPNSToken:(nonnull NSData *)token + type:(FIRInstanceIDAPNSTokenType)type; + +#pragma mark - Tokens + +/** + * Returns a Firebase Messaging scoped token for the firebase app. + * + * @return Null Returns null if the device has not yet been registerd with + * Firebase Message else returns a valid token. + */ +- (nullable NSString *)token; + +/** + * Returns a token that authorizes an Entity (example: cloud service) to perform + * an action on behalf of the application identified by Instance ID. + * + * This is similar to an OAuth2 token except, it applies to the + * application instance instead of a user. + * + * This is an asynchronous call. If the token fetching fails for some reason + * we invoke the completion callback with nil `token` and the appropriate + * error. + * + * Note, you can only have one `token` or `deleteToken` call for a given + * authorizedEntity and scope at any point of time. Making another such call with the + * same authorizedEntity and scope before the last one finishes will result in an + * error with code `OperationInProgress`. + * + * @see FIRInstanceID deleteTokenWithAuthorizedEntity:scope:handler: + * + * @param authorizedEntity Entity authorized by the token. + * @param scope Action authorized for authorizedEntity. + * @param options The extra options to be sent with your token request. The + * value for the `apns_token` should be the NSData object + * passed to UIApplication's + * `didRegisterForRemoteNotificationsWithDeviceToken` method. + * All other keys and values in the options dict need to be + * instances of NSString or else they will be discarded. Bundle + * keys starting with 'GCM.' and 'GOOGLE.' are reserved. + * @param handler The callback handler which is invoked when the token is + * successfully fetched. In case of success a valid `token` and + * `nil` error are returned. In case of any error the `token` + * is nil and a valid `error` is returned. The valid error + * codes have been documented above. + */ +- (void)tokenWithAuthorizedEntity:(nonnull NSString *)authorizedEntity + scope:(nonnull NSString *)scope + options:(nullable NSDictionary *)options + handler:(nonnull FIRInstanceIDTokenHandler)handler; + +/** + * Revokes access to a scope (action) for an entity previously + * authorized by `[FIRInstanceID tokenWithAuthorizedEntity:scope:options:handler]`. + * + * This is an asynchronous call. Call this on the main thread since InstanceID lib + * is not thread safe. In case token deletion fails for some reason we invoke the + * `handler` callback passed in with the appropriate error code. + * + * Note, you can only have one `token` or `deleteToken` call for a given + * authorizedEntity and scope at a point of time. Making another such call with the + * same authorizedEntity and scope before the last one finishes will result in an error + * with code `OperationInProgress`. + * + * @param authorizedEntity Entity that must no longer have access. + * @param scope Action that entity is no longer authorized to perform. + * @param handler The handler that is invoked once the unsubscribe call ends. + * In case of error an appropriate error object is returned + * else error is nil. + */ +- (void)deleteTokenWithAuthorizedEntity:(nonnull NSString *)authorizedEntity + scope:(nonnull NSString *)scope + handler:(nonnull FIRInstanceIDDeleteTokenHandler)handler; + +#pragma mark - Identity + +/** + * Asynchronously fetch a stable identifier that uniquely identifies the app + * instance. If the identifier has been revoked or has expired, this method will + * return a new identifier. + * + * + * @param handler The handler to invoke once the identifier has been fetched. + * In case of error an appropriate error object is returned else + * a valid identifier is returned and a valid identifier for the + * application instance. + */ +- (void)getIDWithHandler:(nonnull FIRInstanceIDHandler)handler; + +/** + * Resets Instance ID and revokes all tokens. + */ +- (void)deleteIDWithHandler:(nonnull FIRInstanceIDDeleteHandler)handler; + +@end diff --git a/src/ios/Firebase/Analytics/FirebaseInstanceID.framework/Headers/FirebaseInstanceID.h b/src/ios/Firebase/Analytics/FirebaseInstanceID.framework/Headers/FirebaseInstanceID.h new file mode 100644 index 000000000..053ec2b1c --- /dev/null +++ b/src/ios/Firebase/Analytics/FirebaseInstanceID.framework/Headers/FirebaseInstanceID.h @@ -0,0 +1 @@ +#import "FIRInstanceID.h" diff --git a/src/ios/Firebase/Analytics/FirebaseInstanceID.framework/Modules/module.modulemap b/src/ios/Firebase/Analytics/FirebaseInstanceID.framework/Modules/module.modulemap new file mode 100644 index 000000000..b4a5b5e39 --- /dev/null +++ b/src/ios/Firebase/Analytics/FirebaseInstanceID.framework/Modules/module.modulemap @@ -0,0 +1,8 @@ +framework module FirebaseInstanceID { + + export * + + umbrella header "FirebaseInstanceID.h" + + header "FIRInstanceID.h" +} diff --git a/src/ios/Firebase/Analytics/GoogleInterchangeUtilities.framework/GoogleInterchangeUtilities b/src/ios/Firebase/Analytics/GoogleInterchangeUtilities.framework/GoogleInterchangeUtilities new file mode 100644 index 000000000..dc653b309 Binary files /dev/null and b/src/ios/Firebase/Analytics/GoogleInterchangeUtilities.framework/GoogleInterchangeUtilities differ diff --git a/src/ios/Firebase/Analytics/GoogleSymbolUtilities.framework/GoogleSymbolUtilities b/src/ios/Firebase/Analytics/GoogleSymbolUtilities.framework/GoogleSymbolUtilities new file mode 100644 index 000000000..016a5249e Binary files /dev/null and b/src/ios/Firebase/Analytics/GoogleSymbolUtilities.framework/GoogleSymbolUtilities differ diff --git a/src/ios/Firebase/Analytics/GoogleUtilities.framework/GoogleUtilities b/src/ios/Firebase/Analytics/GoogleUtilities.framework/GoogleUtilities new file mode 100644 index 000000000..31efbac44 Binary files /dev/null and b/src/ios/Firebase/Analytics/GoogleUtilities.framework/GoogleUtilities differ diff --git a/src/ios/Firebase/Headers/Firebase.h b/src/ios/Firebase/Headers/Firebase.h new file mode 100644 index 000000000..025a5f98e --- /dev/null +++ b/src/ios/Firebase/Headers/Firebase.h @@ -0,0 +1,51 @@ +#import + +#if !defined(__has_include) + #error "Firebase.h won't import anything if your compiler doesn't support __has_include. Please \ + import the headers individually." +#else + #if __has_include() + #import + #endif + + #if __has_include() + #import + #endif + + #if __has_include() + #import + #endif + + #if __has_include() + #import + #endif + + #if __has_include() + #import + #endif + + #if __has_include() + #import + #endif + + #if __has_include() + #import + #endif + + #if __has_include() + #import + #endif + + #if __has_include() + #import + #endif + + #if __has_include() + #import + #endif + + #if __has_include() + #import + #endif + +#endif // defined(__has_include) diff --git a/src/ios/Firebase/Messaging/FirebaseMessaging.framework/FirebaseMessaging b/src/ios/Firebase/Messaging/FirebaseMessaging.framework/FirebaseMessaging new file mode 100755 index 000000000..b949b8b53 Binary files /dev/null and b/src/ios/Firebase/Messaging/FirebaseMessaging.framework/FirebaseMessaging differ diff --git a/src/ios/Firebase/Messaging/FirebaseMessaging.framework/Headers/FIRMessaging.h b/src/ios/Firebase/Messaging/FirebaseMessaging.framework/Headers/FIRMessaging.h new file mode 100644 index 000000000..b8164c4a9 --- /dev/null +++ b/src/ios/Firebase/Messaging/FirebaseMessaging.framework/Headers/FIRMessaging.h @@ -0,0 +1,205 @@ +#import + +/** + * The completion handler invoked once the data connection with FIRMessaging is + * established. The data connection is used to send a continous stream of + * data and all the FIRMessaging data notifications arrive through this connection. + * Once the connection is established we invoke the callback with `nil` error. + * Correspondingly if we get an error while trying to establish a connection + * we invoke the handler with an appropriate error object and do an + * exponential backoff to try and connect again unless successful. + * + * @param error The error object if any describing why the data connection + * to FIRMessaging failed. + */ +typedef void(^FIRMessagingConnectCompletion)(NSError * __nullable error); + +/** + * Notification sent when the upstream message has been delivered + * successfully to the server. The notification object will be the messageID + * of the successfully delivered message. + */ +FOUNDATION_EXPORT NSString * __nonnull const FIRMessagingSendSuccessNotification; + +/** + * Notification sent when the upstream message was failed to be sent to the + * server. The notification object will be the messageID of the failed + * message. The userInfo dictionary will contain the relevant error + * information for the failure. + */ +FOUNDATION_EXPORT NSString * __nonnull const FIRMessagingSendErrorNotification; + +/** + * Notification sent when the Firebase messaging server deletes pending + * messages due to exceeded storage limits. This may occur, for example, when + * the device cannot be reached for an extended period of time. + * + * It is recommended to retrieve any missing messages directly from the + * server. + */ +FOUNDATION_EXPORT NSString * __nonnull const FIRMessagingMessagesDeletedNotification; + +/** + * @enum FIRMessagingError + */ +typedef NS_ENUM(NSUInteger, FIRMessagingError) { + // Unknown error. + FIRMessagingErrorUnknown = 0, + + // Auth Error -- FIRMessaging couldn't validate request from this client. + FIRMessagingErrorAuthentication = 1, + + // NoAccess -- InstanceID service cannot be accessed. + FIRMessagingErrorNoAccess = 2, + + // Timeout -- Request to InstanceID backend timed out. + FIRMessagingErrorTimeout = 3, + + // Network -- No network available to reach the servers. + FIRMessagingErrorNetwork = 4, + + // OperationInProgress -- Another similar operation in progress, + // bailing this one. + FIRMessagingErrorOperationInProgress = 5, + + // InvalidRequest -- Some parameters of the request were invalid. + FIRMessagingErrorInvalidRequest = 7, +}; + +/// Status for the downstream message received by the app. +typedef NS_ENUM(NSInteger, FIRMessagingMessageStatus) { + FIRMessagingMessageStatusUnknown, + /// New downstream message received by the app. + FIRMessagingMessageStatusNew, +}; + +/// Information about a downstream message received by the app. +@interface FIRMessagingMessageInfo : NSObject + +@property(nonatomic, readonly, assign) FIRMessagingMessageStatus status; + +@end + +/** + * Firebase Messaging enables apps to communicate with their app servers + * using simple messages. + * + * To send or receive messages, the app must get a + * registration token from GGLInstanceID, which authorizes an + * app server to send messages to an app instance. Pass your sender ID and + * `kGGLInstanceIDScopeFIRMessaging` as parameters to the method. + * + * A sender ID is a project number created when you configure your API project. + * It is labeled "Project Number" in the Google Developers Console. + * + * In order to receive FIRMessaging messages, declare application:didReceiveRemoteNotification: + * + * Client apps can send upstream messages back to the app server using the XMPP-based + * Cloud Connection Server, + * + */ +@interface FIRMessaging : NSObject + +/** + * FIRMessaging + * + * @return An instance of FIRMessaging. + */ ++ (nonnull instancetype)messaging NS_SWIFT_NAME(messaging()); + +/** + * Unavailable. Use +messaging instead. + */ +- (nonnull instancetype)init __attribute__((unavailable("Use +messaging instead."))); + +#pragma mark - Connect + +/** + * Create a FIRMessaging data connection which will be used to send the data notifications + * send by your server. It will also be used to send ACKS and other messages based + * on the FIRMessaging ACKS and other messages based on the FIRMessaging protocol. + * + * Use the `disconnect` method to disconnect the connection. + * + * @see FIRMessagingService disconnect + * + * @param handler The handler to be invoked once the connection is established. + * If the connection fails we invoke the handler with an + * appropriate error code letting you know why it failed. At + * the same time, FIRMessaging performs exponential backoff to retry + * establishing a connection and invoke the handler when successful. + */ +- (void)connectWithCompletion:(nonnull FIRMessagingConnectCompletion)handler; + +/** + * Disconnect the current FIRMessaging data connection. This stops any attempts to + * connect to FIRMessaging. Calling this on an already disconnected client is a no-op. + * + * Call this before `teardown` when your app is going to the background. + * Since the FIRMessaging connection won't be allowed to live when in background it is + * prudent to close the connection. + */ +- (void)disconnect; + +#pragma mark - Topics + +/** + * Asynchronously subscribes to a topic. + * + * @param topic The name of the topic, for example @"sports". + */ +- (void)subscribeToTopic:(nonnull NSString *)topic; + +/** + * Asynchronously unsubscribe to a topic. + * + * @param topic The name of the topic, for example @"sports". + */ +- (void)unsubscribeFromTopic:(nonnull NSString *)topic; + +#pragma mark - Upstream + +/** + * Sends an upstream ("device to cloud") message. + * + * The message will be queued if we don't have an active connection. + * You can only use the upstream feature if your GCM implementation + * uses the XMPP-based Cloud Connection Server. + * + * @param message Key/Value pairs to be sent. Values must be String, any + * other type will be ignored. + * @param to A string identifying the receiver of the message. For GCM + * project IDs the value is `SENDER_ID@gcm.googleapis.com`. + * @param messageID The ID of the message. This is generated by the application. It + * must be unique for each message generated by this application. + * It allows error callbacks and debugging, to uniquely identify + * each message. + * @param ttl The time to live for the message. In case we aren't able to + * send the message before the TTL expires we will send you a + * callback. If 0, we'll attempt to send immediately and return + * an error if we're not connected. Otherwise, the message will + * be queued. As for server-side messages, we don't return an error + * if the message has been dropped because of TTL; this can happen + * on the server side, and it would require extra communication. + */ +- (void)sendMessage:(nonnull NSDictionary *)message + to:(nonnull NSString *)receiver + withMessageID:(nonnull NSString *)messageID + timeToLive:(int64_t)ttl; + +#pragma mark - Analytics + +/** + * Call this when the app received a downstream message. Used to track message + * delivery and analytics for messages. You don't need to call this if you + * don't set the `FIRMessagingAutoSetupEnabled` flag in your Info.plist. In the + * latter case the library will call this implicitly to track relevant + * messages. + * + * @param message The downstream message received by the application. + * + * @return Information about the downstream message. + */ +- (nonnull FIRMessagingMessageInfo *)appDidReceiveMessage:(nonnull NSDictionary *)message; + +@end diff --git a/src/ios/Firebase/Messaging/FirebaseMessaging.framework/Headers/FirebaseMessaging.h b/src/ios/Firebase/Messaging/FirebaseMessaging.framework/Headers/FirebaseMessaging.h new file mode 100644 index 000000000..ef49e7ff7 --- /dev/null +++ b/src/ios/Firebase/Messaging/FirebaseMessaging.framework/Headers/FirebaseMessaging.h @@ -0,0 +1 @@ +#import "FIRMessaging.h" diff --git a/src/ios/Firebase/Messaging/FirebaseMessaging.framework/Modules/module.modulemap b/src/ios/Firebase/Messaging/FirebaseMessaging.framework/Modules/module.modulemap new file mode 100644 index 000000000..a390f119d --- /dev/null +++ b/src/ios/Firebase/Messaging/FirebaseMessaging.framework/Modules/module.modulemap @@ -0,0 +1,13 @@ +framework module FirebaseMessaging { + + export * + + umbrella header "FirebaseMessaging.h" + + header "FIRMessaging.h" + + link framework "AddressBook" + link framework "SystemConfiguration" + + link "sqlite3" +} diff --git a/src/ios/Firebase/Messaging/GoogleIPhoneUtilities.framework/GoogleIPhoneUtilities b/src/ios/Firebase/Messaging/GoogleIPhoneUtilities.framework/GoogleIPhoneUtilities new file mode 100644 index 000000000..7ab2cf260 Binary files /dev/null and b/src/ios/Firebase/Messaging/GoogleIPhoneUtilities.framework/GoogleIPhoneUtilities differ