diff --git a/Examples/simple-fcm-client/ios/Firebase.h b/Examples/simple-fcm-client/ios/Firebase.h new file mode 100644 index 0000000000000000000000000000000000000000..90798a6a73aaac2bc4084f6fcffc476d2e26d726 --- /dev/null +++ b/Examples/simple-fcm-client/ios/Firebase.h @@ -0,0 +1,52 @@ +#import +#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/Examples/simple-fcm-client/ios/FirebaseAnalytics.framework/FirebaseAnalytics b/Examples/simple-fcm-client/ios/FirebaseAnalytics.framework/FirebaseAnalytics new file mode 100755 index 0000000000000000000000000000000000000000..048c8d1234ded99a7443635e9b7f81993e037496 Binary files /dev/null and b/Examples/simple-fcm-client/ios/FirebaseAnalytics.framework/FirebaseAnalytics differ diff --git a/Examples/simple-fcm-client/ios/FirebaseAnalytics.framework/Headers/FIRAnalytics+AppDelegate.h b/Examples/simple-fcm-client/ios/FirebaseAnalytics.framework/Headers/FIRAnalytics+AppDelegate.h new file mode 100755 index 0000000000000000000000000000000000000000..e3ff4c1252148ede2cd072ceaf4b6777a277a9b6 --- /dev/null +++ b/Examples/simple-fcm-client/ios/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 app's 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/Examples/simple-fcm-client/ios/FirebaseAnalytics.framework/Headers/FIRAnalytics.h b/Examples/simple-fcm-client/ios/FirebaseAnalytics.framework/Headers/FIRAnalytics.h new file mode 100755 index 0000000000000000000000000000000000000000..43ee86e746066d385857635c557193e53ed1b0cd --- /dev/null +++ b/Examples/simple-fcm-client/ios/FirebaseAnalytics.framework/Headers/FIRAnalytics.h @@ -0,0 +1,71 @@ +#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_remove
  • +///
  • 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. Once set, +/// user property values persist throughout the app lifecycle and across sessions. +/// +/// 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/Examples/simple-fcm-client/ios/FirebaseAnalytics.framework/Headers/FIRAnalyticsConfiguration.h b/Examples/simple-fcm-client/ios/FirebaseAnalytics.framework/Headers/FIRAnalyticsConfiguration.h new file mode 100755 index 0000000000000000000000000000000000000000..dc227a4c3b30afc75a98ec8cd42577b84c0692e8 --- /dev/null +++ b/Examples/simple-fcm-client/ios/FirebaseAnalytics.framework/Headers/FIRAnalyticsConfiguration.h @@ -0,0 +1 @@ +#import diff --git a/Examples/simple-fcm-client/ios/FirebaseAnalytics.framework/Headers/FIRApp.h b/Examples/simple-fcm-client/ios/FirebaseAnalytics.framework/Headers/FIRApp.h new file mode 100755 index 0000000000000000000000000000000000000000..de24da17d171075e268e52d34337179c460ecb87 --- /dev/null +++ b/Examples/simple-fcm-client/ios/FirebaseAnalytics.framework/Headers/FIRApp.h @@ -0,0 +1 @@ +#import diff --git a/Examples/simple-fcm-client/ios/FirebaseAnalytics.framework/Headers/FIRConfiguration.h b/Examples/simple-fcm-client/ios/FirebaseAnalytics.framework/Headers/FIRConfiguration.h new file mode 100755 index 0000000000000000000000000000000000000000..be2ff7bfffc464b051b90ae37d103a6175a46811 --- /dev/null +++ b/Examples/simple-fcm-client/ios/FirebaseAnalytics.framework/Headers/FIRConfiguration.h @@ -0,0 +1 @@ +#import diff --git a/Examples/simple-fcm-client/ios/FirebaseAnalytics.framework/Headers/FIREventNames.h b/Examples/simple-fcm-client/ios/FirebaseAnalytics.framework/Headers/FIREventNames.h new file mode 100755 index 0000000000000000000000000000000000000000..f68967b739713c189c5ccf18df9fc3082850094c --- /dev/null +++ b/Examples/simple-fcm-client/ios/FirebaseAnalytics.framework/Headers/FIREventNames.h @@ -0,0 +1,321 @@ +/// @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"; + +/// Earn Virtual Currency event. This event tracks the awarding of virtual currency in your app. Log +/// this along with {@link kFIREventSpendVirtualCurrency} to better understand your virtual economy. +/// Params: +/// +///
    +///
  • {@link kFIRParameterVirtualCurrencyName} (NSString)
  • +///
  • {@link kFIRParameterValue} (signed 64-bit integer or double as NSNumber)
  • +///
+static NSString *const kFIREventEarnVirtualCurrency = @"earn_virtual_currency"; + +/// 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/Examples/simple-fcm-client/ios/FirebaseAnalytics.framework/Headers/FIROptions.h b/Examples/simple-fcm-client/ios/FirebaseAnalytics.framework/Headers/FIROptions.h new file mode 100755 index 0000000000000000000000000000000000000000..126824b02c9f6d5548646dd8b531e549309e26f6 --- /dev/null +++ b/Examples/simple-fcm-client/ios/FirebaseAnalytics.framework/Headers/FIROptions.h @@ -0,0 +1 @@ +#import diff --git a/Examples/simple-fcm-client/ios/FirebaseAnalytics.framework/Headers/FIRParameterNames.h b/Examples/simple-fcm-client/ios/FirebaseAnalytics.framework/Headers/FIRParameterNames.h new file mode 100755 index 0000000000000000000000000000000000000000..42c0c5e213a116e13ef05387c2e4ec001adf06c1 --- /dev/null +++ b/Examples/simple-fcm-client/ios/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/Examples/simple-fcm-client/ios/FirebaseAnalytics.framework/Headers/FIRUserPropertyNames.h b/Examples/simple-fcm-client/ios/FirebaseAnalytics.framework/Headers/FIRUserPropertyNames.h new file mode 100755 index 0000000000000000000000000000000000000000..54cf1c2016bb92d2f863b67eeeb453d979a64ac3 --- /dev/null +++ b/Examples/simple-fcm-client/ios/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/Examples/simple-fcm-client/ios/FirebaseAnalytics.framework/Headers/FirebaseAnalytics.h b/Examples/simple-fcm-client/ios/FirebaseAnalytics.framework/Headers/FirebaseAnalytics.h new file mode 100755 index 0000000000000000000000000000000000000000..02667b3036c062275d8e799c9d8f412c3fd3b7be --- /dev/null +++ b/Examples/simple-fcm-client/ios/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/Examples/simple-fcm-client/ios/FirebaseAnalytics.framework/Modules/module.modulemap b/Examples/simple-fcm-client/ios/FirebaseAnalytics.framework/Modules/module.modulemap new file mode 100755 index 0000000000000000000000000000000000000000..e54b5eaae487863c5a18afab0f1a45ba9cf7f843 --- /dev/null +++ b/Examples/simple-fcm-client/ios/FirebaseAnalytics.framework/Modules/module.modulemap @@ -0,0 +1,23 @@ +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 "StoreKit" + + link "c++" + link "sqlite3" + link "z" +} diff --git a/Examples/simple-fcm-client/ios/FirebaseCore.framework/FirebaseCore b/Examples/simple-fcm-client/ios/FirebaseCore.framework/FirebaseCore new file mode 100755 index 0000000000000000000000000000000000000000..5f3dcecffda6e9cdebf2d7017c63c4246363d42f Binary files /dev/null and b/Examples/simple-fcm-client/ios/FirebaseCore.framework/FirebaseCore differ diff --git a/Examples/simple-fcm-client/ios/FirebaseCore.framework/Headers/FIRAnalyticsConfiguration.h b/Examples/simple-fcm-client/ios/FirebaseCore.framework/Headers/FIRAnalyticsConfiguration.h new file mode 100755 index 0000000000000000000000000000000000000000..667d5a4be93aed16a4ea615113f8172164008155 --- /dev/null +++ b/Examples/simple-fcm-client/ios/FirebaseCore.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/Examples/simple-fcm-client/ios/FirebaseCore.framework/Headers/FIRApp.h b/Examples/simple-fcm-client/ios/FirebaseCore.framework/Headers/FIRApp.h new file mode 100755 index 0000000000000000000000000000000000000000..45b2388980cad9dc5ce6ca92ccdd4309d0e7083a --- /dev/null +++ b/Examples/simple-fcm-client/ios/FirebaseCore.framework/Headers/FIRApp.h @@ -0,0 +1,94 @@ +#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. + * + * The logging system has two modes: default mode and debug mode. In default mode, only logs with + * log level Notice, Warning and Error will be sent to device. In debug mode, all logs will be sent + * to device. The log levels that Firebase uses are consistent with the ASL log levels. + * + * Enable debug mode by passing the -FIRDebugEnabled argument to the application. You can add this + * argument in the application's Xcode scheme. When debug mode is enabled via -FIRDebugEnabled, + * further executions of the application will also be in debug mode. In order to return to default + * mode, you must explicitly disable the debug mode with the application argument -FIRDebugDisabled. + */ +@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/Examples/simple-fcm-client/ios/FirebaseCore.framework/Headers/FIRConfiguration.h b/Examples/simple-fcm-client/ios/FirebaseCore.framework/Headers/FIRConfiguration.h new file mode 100755 index 0000000000000000000000000000000000000000..e85ea8bc835162c4f2f5cb56d96034d436c3752f --- /dev/null +++ b/Examples/simple-fcm-client/ios/FirebaseCore.framework/Headers/FIRConfiguration.h @@ -0,0 +1,33 @@ +#import + +#import "FIRAnalyticsConfiguration.h" + +/** + * The log levels used by FIRConfiguration. + */ +typedef NS_ENUM(NSInteger, FIRLogLevel) { + kFIRLogLevelError __deprecated = 0, + kFIRLogLevelWarning __deprecated, + kFIRLogLevelInfo __deprecated, + kFIRLogLevelDebug __deprecated, + kFIRLogLevelAssert __deprecated, + kFIRLogLevelMax __deprecated = kFIRLogLevelAssert +} DEPRECATED_MSG_ATTRIBUTE( + "Use -FIRDebugEnabled and -FIRDebugDisabled. See FIRApp.h for more details."); + +/** + * This interface provides global level properties that the developer can tweak, and the singleton + * of the Firebase Analytics 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 DEPRECATED_MSG_ATTRIBUTE( + "Use -FIRDebugEnabled and -FIRDebugDisabled. See FIRApp.h for more details."); + +@end diff --git a/Examples/simple-fcm-client/ios/FirebaseCore.framework/Headers/FIROptions.h b/Examples/simple-fcm-client/ios/FirebaseCore.framework/Headers/FIROptions.h new file mode 100755 index 0000000000000000000000000000000000000000..5ab20c69bef654df70f05c7db7448c9328b41302 --- /dev/null +++ b/Examples/simple-fcm-client/ios/FirebaseCore.framework/Headers/FIROptions.h @@ -0,0 +1,87 @@ +#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; + +/** + * Initializes a customized instance of FIROptions from the file at the given plist file path. + * For example, + * NSString *filePath = + * [[NSBundle mainBundle] pathForResource:@"GoogleService-Info" ofType:@"plist"]; + * FIROptions *options = [[FIROptions alloc] initWithContentsOfFile:filePath]; + * Returns nil if the plist file does not exist or is invalid. + */ +- (instancetype)initWithContentsOfFile:(NSString *)plistPath; + +@end diff --git a/Examples/simple-fcm-client/ios/FirebaseCore.framework/Headers/FirebaseCore.h b/Examples/simple-fcm-client/ios/FirebaseCore.framework/Headers/FirebaseCore.h new file mode 100755 index 0000000000000000000000000000000000000000..d144758d70e3690eaad5f7a4bca1a7ea361d44e6 --- /dev/null +++ b/Examples/simple-fcm-client/ios/FirebaseCore.framework/Headers/FirebaseCore.h @@ -0,0 +1,6 @@ +// Generated umbrella header for FirebaseCore. + +#import "FIRAnalyticsConfiguration.h" +#import "FIRApp.h" +#import "FIRConfiguration.h" +#import "FIROptions.h" diff --git a/Examples/simple-fcm-client/ios/FirebaseCore.framework/Modules/module.modulemap b/Examples/simple-fcm-client/ios/FirebaseCore.framework/Modules/module.modulemap new file mode 100755 index 0000000000000000000000000000000000000000..82d14eb6d9f283d3633a9bc5a9d69caeacb7b8d2 --- /dev/null +++ b/Examples/simple-fcm-client/ios/FirebaseCore.framework/Modules/module.modulemap @@ -0,0 +1,15 @@ +framework module FirebaseCore { + + export * + + umbrella header "FirebaseCore.h" + + header "FIRAnalyticsConfiguration.h" + header "FIRApp.h" + header "FIRConfiguration.h" + header "FIROptions.h" + + link framework "SystemConfiguration" + + link "c++" +} diff --git a/Examples/simple-fcm-client/ios/FirebaseInstanceID.framework/FirebaseInstanceID b/Examples/simple-fcm-client/ios/FirebaseInstanceID.framework/FirebaseInstanceID new file mode 100755 index 0000000000000000000000000000000000000000..5d67d055ef38e9f8b4f0b19a6fadfbb59e464b67 Binary files /dev/null and b/Examples/simple-fcm-client/ios/FirebaseInstanceID.framework/FirebaseInstanceID differ diff --git a/Examples/simple-fcm-client/ios/FirebaseInstanceID.framework/Headers/FIRInstanceID.h b/Examples/simple-fcm-client/ios/FirebaseInstanceID.framework/Headers/FIRInstanceID.h new file mode 100755 index 0000000000000000000000000000000000000000..717e290aa56e4acf246294868b42d52a3d7834c0 --- /dev/null +++ b/Examples/simple-fcm-client/ios/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/Examples/simple-fcm-client/ios/FirebaseInstanceID.framework/Headers/FirebaseInstanceID.h b/Examples/simple-fcm-client/ios/FirebaseInstanceID.framework/Headers/FirebaseInstanceID.h new file mode 100755 index 0000000000000000000000000000000000000000..053ec2b1cf31a9a15a1216b0c97ccf361d7476ad --- /dev/null +++ b/Examples/simple-fcm-client/ios/FirebaseInstanceID.framework/Headers/FirebaseInstanceID.h @@ -0,0 +1 @@ +#import "FIRInstanceID.h" diff --git a/Examples/simple-fcm-client/ios/FirebaseInstanceID.framework/Modules/module.modulemap b/Examples/simple-fcm-client/ios/FirebaseInstanceID.framework/Modules/module.modulemap new file mode 100755 index 0000000000000000000000000000000000000000..b4a5b5e39728565f306f8c49c5f889698a774655 --- /dev/null +++ b/Examples/simple-fcm-client/ios/FirebaseInstanceID.framework/Modules/module.modulemap @@ -0,0 +1,8 @@ +framework module FirebaseInstanceID { + + export * + + umbrella header "FirebaseInstanceID.h" + + header "FIRInstanceID.h" +} diff --git a/Examples/simple-fcm-client/ios/FirebaseMessaging.framework/FirebaseMessaging b/Examples/simple-fcm-client/ios/FirebaseMessaging.framework/FirebaseMessaging new file mode 100755 index 0000000000000000000000000000000000000000..de753660ea3a3e3c8c48e9d07fffe5ab09cfc68e Binary files /dev/null and b/Examples/simple-fcm-client/ios/FirebaseMessaging.framework/FirebaseMessaging differ diff --git a/Examples/simple-fcm-client/ios/FirebaseMessaging.framework/Headers/FIRMessaging.h b/Examples/simple-fcm-client/ios/FirebaseMessaging.framework/Headers/FIRMessaging.h new file mode 100755 index 0000000000000000000000000000000000000000..04ea927ff19b1e7d28f315f9e0c908eb3b28ad6d --- /dev/null +++ b/Examples/simple-fcm-client/ios/FirebaseMessaging.framework/Headers/FIRMessaging.h @@ -0,0 +1,236 @@ +#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 + +/** + * A remote data message received by the app via FCM (not just the APNs interface). + * + * This is only for devices running iOS 10 or above. To support devices running iOS 9 or below, use + * the local and remote notifications handlers defined in UIApplicationDelegate protocol. + */ +@interface FIRMessagingRemoteMessage : NSObject + +/// The downstream message received by the application. +@property(nonatomic, readonly, strong, nonnull) NSDictionary *appData; + +@end + +/** + * A protocol to receive data message via FCM for devices running iOS 10 or above. + * + * To support devices running iOS 9 or below, use the local and remote notifications handlers + * defined in UIApplicationDelegate protocol. + */ +@protocol FIRMessagingDelegate + +/// The callback to handle data message received via FCM for devices running iOS 10 or above. +- (void)applicationReceivedRemoteMessage:(nonnull FIRMessagingRemoteMessage *)remoteMessage; + +@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 + +/** + * Delegate to handle remote data messages received via FCM for devices running iOS 10 or above. + */ +@property(nonatomic, weak, nullable) id remoteMessageDelegate; + +/** + * 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/Examples/simple-fcm-client/ios/FirebaseMessaging.framework/Headers/FirebaseMessaging.h b/Examples/simple-fcm-client/ios/FirebaseMessaging.framework/Headers/FirebaseMessaging.h new file mode 100755 index 0000000000000000000000000000000000000000..ef49e7ff7a8354ca0e053a9fc930b51da96ac9d2 --- /dev/null +++ b/Examples/simple-fcm-client/ios/FirebaseMessaging.framework/Headers/FirebaseMessaging.h @@ -0,0 +1 @@ +#import "FIRMessaging.h" diff --git a/Examples/simple-fcm-client/ios/FirebaseMessaging.framework/Modules/module.modulemap b/Examples/simple-fcm-client/ios/FirebaseMessaging.framework/Modules/module.modulemap new file mode 100755 index 0000000000000000000000000000000000000000..a390f119dae5dd8252d198c182ec8b0a42b987d0 --- /dev/null +++ b/Examples/simple-fcm-client/ios/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/Examples/simple-fcm-client/ios/GoogleIPhoneUtilities.framework/GoogleIPhoneUtilities b/Examples/simple-fcm-client/ios/GoogleIPhoneUtilities.framework/GoogleIPhoneUtilities new file mode 100644 index 0000000000000000000000000000000000000000..7ab2cf260ac516895154929b9df96bc4904867f8 Binary files /dev/null and b/Examples/simple-fcm-client/ios/GoogleIPhoneUtilities.framework/GoogleIPhoneUtilities differ diff --git a/Examples/simple-fcm-client/ios/GoogleInterchangeUtilities.framework/GoogleInterchangeUtilities b/Examples/simple-fcm-client/ios/GoogleInterchangeUtilities.framework/GoogleInterchangeUtilities new file mode 100755 index 0000000000000000000000000000000000000000..de4042474c3875b9cd0b42718540368f8263e054 Binary files /dev/null and b/Examples/simple-fcm-client/ios/GoogleInterchangeUtilities.framework/GoogleInterchangeUtilities differ diff --git a/Examples/simple-fcm-client/ios/GoogleSymbolUtilities.framework/GoogleSymbolUtilities b/Examples/simple-fcm-client/ios/GoogleSymbolUtilities.framework/GoogleSymbolUtilities new file mode 100755 index 0000000000000000000000000000000000000000..408a00262af030aaf2d17bf6718b2b5e8dac5cdb Binary files /dev/null and b/Examples/simple-fcm-client/ios/GoogleSymbolUtilities.framework/GoogleSymbolUtilities differ diff --git a/Examples/simple-fcm-client/ios/GoogleUtilities.framework/GoogleUtilities b/Examples/simple-fcm-client/ios/GoogleUtilities.framework/GoogleUtilities new file mode 100755 index 0000000000000000000000000000000000000000..0fd17b65bad2627f968c4c19306be8fcbe6432d4 Binary files /dev/null and b/Examples/simple-fcm-client/ios/GoogleUtilities.framework/GoogleUtilities differ diff --git a/Examples/simple-fcm-client/ios/SimpleFcmClient.xcodeproj/project.pbxproj b/Examples/simple-fcm-client/ios/SimpleFcmClient.xcodeproj/project.pbxproj index 48bd8da8fcf1fb988514b5855e1a8b931dfd72e8..d2418e431f3b0e30b18cccabafd10237c0a2c8f4 100644 --- a/Examples/simple-fcm-client/ios/SimpleFcmClient.xcodeproj/project.pbxproj +++ b/Examples/simple-fcm-client/ios/SimpleFcmClient.xcodeproj/project.pbxproj @@ -5,6 +5,7 @@ }; objectVersion = 46; objects = { + /* Begin PBXBuildFile section */ 00C302E51ABCBA2D00DB3ED1 /* libRCTActionSheet.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 00C302AC1ABCB8CE00DB3ED1 /* libRCTActionSheet.a */; }; 00C302E71ABCBA2D00DB3ED1 /* libRCTGeolocation.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 00C302BA1ABCB90400DB3ED1 /* libRCTGeolocation.a */; }; @@ -21,6 +22,14 @@ 13B07FC11A68108700A75B9A /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 13B07FB71A68108700A75B9A /* main.m */; }; 140ED2AC1D01E1AD002B40FF /* libReact.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 146834041AC3E56700842450 /* libReact.a */; }; 146834051AC3E58100842450 /* libReact.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 146834041AC3E56700842450 /* libReact.a */; }; + 4339BFD81DAEBA7300F53B62 /* FirebaseAnalytics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 4339BFD21DAEBA7300F53B62 /* FirebaseAnalytics.framework */; }; + 4339BFD91DAEBA7300F53B62 /* FirebaseCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 4339BFD31DAEBA7300F53B62 /* FirebaseCore.framework */; }; + 4339BFDA1DAEBA7300F53B62 /* FirebaseInstanceID.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 4339BFD41DAEBA7300F53B62 /* FirebaseInstanceID.framework */; }; + 4339BFDB1DAEBA7300F53B62 /* GoogleInterchangeUtilities.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 4339BFD51DAEBA7300F53B62 /* GoogleInterchangeUtilities.framework */; }; + 4339BFDC1DAEBA7300F53B62 /* GoogleSymbolUtilities.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 4339BFD61DAEBA7300F53B62 /* GoogleSymbolUtilities.framework */; }; + 4339BFDD1DAEBA7300F53B62 /* GoogleUtilities.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 4339BFD71DAEBA7300F53B62 /* GoogleUtilities.framework */; }; + 4339BFE01DAEBA7F00F53B62 /* FirebaseMessaging.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 4339BFDE1DAEBA7F00F53B62 /* FirebaseMessaging.framework */; }; + 4339BFE11DAEBA7F00F53B62 /* GoogleIPhoneUtilities.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 4339BFDF1DAEBA7F00F53B62 /* GoogleIPhoneUtilities.framework */; }; 832341BD1AAA6AB300B99B32 /* libRCTText.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 832341B51AAA6A8300B99B32 /* libRCTText.a */; }; FAE94A218EB64E38BF8D8E9B /* libRNFIRMessaging.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 692E216422234A4CB6A7A838 /* libRNFIRMessaging.a */; }; /* End PBXBuildFile section */ @@ -89,6 +98,13 @@ remoteGlobalIDString = 83CBBA2E1A601D0E00E9B192; remoteInfo = React; }; + 4339BFCF1DAEBA3900F53B62 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = C7DEB70C413E484CBFA6AC45 /* RNFIRMessaging.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 134814201AA4EA6300B7C361; + remoteInfo = RNFIRMessaging; + }; 78C398B81ACF4ADC00677621 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = 78C398B01ACF4ADC00677621 /* RCTLinking.xcodeproj */; @@ -106,17 +122,17 @@ /* End PBXContainerItemProxy section */ /* Begin PBXFileReference section */ - 008F07F21AC5B25A0029DE68 /* main.jsbundle */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = main.jsbundle; path = main.jsbundle; sourceTree = ""; }; - 00C302A71ABCB8CE00DB3ED1 /* RCTActionSheet.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RCTActionSheet.xcodeproj; path = ../node_modules/react-native/Libraries/ActionSheetIOS/RCTActionSheet.xcodeproj; sourceTree = ""; }; - 00C302B51ABCB90400DB3ED1 /* RCTGeolocation.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RCTGeolocation.xcodeproj; path = ../node_modules/react-native/Libraries/Geolocation/RCTGeolocation.xcodeproj; sourceTree = ""; }; - 00C302BB1ABCB91800DB3ED1 /* RCTImage.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RCTImage.xcodeproj; path = ../node_modules/react-native/Libraries/Image/RCTImage.xcodeproj; sourceTree = ""; }; - 00C302D31ABCB9D200DB3ED1 /* RCTNetwork.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RCTNetwork.xcodeproj; path = ../node_modules/react-native/Libraries/Network/RCTNetwork.xcodeproj; sourceTree = ""; }; - 00C302DF1ABCB9EE00DB3ED1 /* RCTVibration.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RCTVibration.xcodeproj; path = ../node_modules/react-native/Libraries/Vibration/RCTVibration.xcodeproj; sourceTree = ""; }; + 008F07F21AC5B25A0029DE68 /* main.jsbundle */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = main.jsbundle; sourceTree = ""; }; + 00C302A71ABCB8CE00DB3ED1 /* RCTActionSheet.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RCTActionSheet.xcodeproj; path = "../node_modules/react-native/Libraries/ActionSheetIOS/RCTActionSheet.xcodeproj"; sourceTree = ""; }; + 00C302B51ABCB90400DB3ED1 /* RCTGeolocation.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RCTGeolocation.xcodeproj; path = "../node_modules/react-native/Libraries/Geolocation/RCTGeolocation.xcodeproj"; sourceTree = ""; }; + 00C302BB1ABCB91800DB3ED1 /* RCTImage.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RCTImage.xcodeproj; path = "../node_modules/react-native/Libraries/Image/RCTImage.xcodeproj"; sourceTree = ""; }; + 00C302D31ABCB9D200DB3ED1 /* RCTNetwork.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RCTNetwork.xcodeproj; path = "../node_modules/react-native/Libraries/Network/RCTNetwork.xcodeproj"; sourceTree = ""; }; + 00C302DF1ABCB9EE00DB3ED1 /* RCTVibration.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RCTVibration.xcodeproj; path = "../node_modules/react-native/Libraries/Vibration/RCTVibration.xcodeproj"; sourceTree = ""; }; 00E356EE1AD99517003FC87E /* SimpleFcmClientTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = SimpleFcmClientTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; 00E356F11AD99517003FC87E /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; 00E356F21AD99517003FC87E /* SimpleFcmClientTests.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SimpleFcmClientTests.m; sourceTree = ""; }; - 139105B61AF99BAD00B5F7CC /* RCTSettings.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RCTSettings.xcodeproj; path = ../node_modules/react-native/Libraries/Settings/RCTSettings.xcodeproj; sourceTree = ""; }; - 139FDEE61B06529A00C62182 /* RCTWebSocket.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RCTWebSocket.xcodeproj; path = ../node_modules/react-native/Libraries/WebSocket/RCTWebSocket.xcodeproj; sourceTree = ""; }; + 139105B61AF99BAD00B5F7CC /* RCTSettings.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RCTSettings.xcodeproj; path = "../node_modules/react-native/Libraries/Settings/RCTSettings.xcodeproj"; sourceTree = ""; }; + 139FDEE61B06529A00C62182 /* RCTWebSocket.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RCTWebSocket.xcodeproj; path = "../node_modules/react-native/Libraries/WebSocket/RCTWebSocket.xcodeproj"; sourceTree = ""; }; 13B07F961A680F5B00A75B9A /* SimpleFcmClient.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = SimpleFcmClient.app; sourceTree = BUILT_PRODUCTS_DIR; }; 13B07FAF1A68108700A75B9A /* AppDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = AppDelegate.h; path = SimpleFcmClient/AppDelegate.h; sourceTree = ""; }; 13B07FB01A68108700A75B9A /* AppDelegate.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = AppDelegate.m; path = SimpleFcmClient/AppDelegate.m; sourceTree = ""; }; @@ -124,11 +140,21 @@ 13B07FB51A68108700A75B9A /* Images.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; name = Images.xcassets; path = SimpleFcmClient/Images.xcassets; sourceTree = ""; }; 13B07FB61A68108700A75B9A /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = Info.plist; path = SimpleFcmClient/Info.plist; sourceTree = ""; }; 13B07FB71A68108700A75B9A /* main.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = main.m; path = SimpleFcmClient/main.m; sourceTree = ""; }; - 146833FF1AC3E56700842450 /* React.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = React.xcodeproj; path = ../node_modules/react-native/React/React.xcodeproj; sourceTree = ""; }; - 78C398B01ACF4ADC00677621 /* RCTLinking.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RCTLinking.xcodeproj; path = ../node_modules/react-native/Libraries/LinkingIOS/RCTLinking.xcodeproj; sourceTree = ""; }; - 832341B01AAA6A8300B99B32 /* RCTText.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RCTText.xcodeproj; path = ../node_modules/react-native/Libraries/Text/RCTText.xcodeproj; sourceTree = ""; }; - C7DEB70C413E484CBFA6AC45 /* RNFIRMessaging.xcodeproj */ = {isa = PBXFileReference; name = "RNFIRMessaging.xcodeproj"; path = "../node_modules/react-native-fcm/ios/RNFIRMessaging.xcodeproj"; sourceTree = ""; fileEncoding = undefined; lastKnownFileType = wrapper.pb-project; explicitFileType = undefined; includeInIndex = 0; }; - 692E216422234A4CB6A7A838 /* libRNFIRMessaging.a */ = {isa = PBXFileReference; name = "libRNFIRMessaging.a"; path = "libRNFIRMessaging.a"; sourceTree = ""; fileEncoding = undefined; lastKnownFileType = archive.ar; explicitFileType = undefined; includeInIndex = 0; }; + 146833FF1AC3E56700842450 /* React.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = React.xcodeproj; path = "../node_modules/react-native/React/React.xcodeproj"; sourceTree = ""; }; + 4339BFD21DAEBA7300F53B62 /* FirebaseAnalytics.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; path = FirebaseAnalytics.framework; sourceTree = ""; }; + 4339BFD31DAEBA7300F53B62 /* FirebaseCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; path = FirebaseCore.framework; sourceTree = ""; }; + 4339BFD41DAEBA7300F53B62 /* FirebaseInstanceID.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; path = FirebaseInstanceID.framework; sourceTree = ""; }; + 4339BFD51DAEBA7300F53B62 /* GoogleInterchangeUtilities.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; path = GoogleInterchangeUtilities.framework; sourceTree = ""; }; + 4339BFD61DAEBA7300F53B62 /* GoogleSymbolUtilities.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; path = GoogleSymbolUtilities.framework; sourceTree = ""; }; + 4339BFD71DAEBA7300F53B62 /* GoogleUtilities.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; path = GoogleUtilities.framework; sourceTree = ""; }; + 4339BFDE1DAEBA7F00F53B62 /* FirebaseMessaging.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; path = FirebaseMessaging.framework; sourceTree = ""; }; + 4339BFDF1DAEBA7F00F53B62 /* GoogleIPhoneUtilities.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; path = GoogleIPhoneUtilities.framework; sourceTree = ""; }; + 4339BFE21DAEBB3500F53B62 /* Firebase.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Firebase.h; sourceTree = ""; }; + 4339BFE31DAEBB4800F53B62 /* module.modulemap */ = {isa = PBXFileReference; lastKnownFileType = "sourcecode.module-map"; path = module.modulemap; sourceTree = ""; }; + 692E216422234A4CB6A7A838 /* libRNFIRMessaging.a */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = archive.ar; path = libRNFIRMessaging.a; sourceTree = ""; }; + 78C398B01ACF4ADC00677621 /* RCTLinking.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RCTLinking.xcodeproj; path = "../node_modules/react-native/Libraries/LinkingIOS/RCTLinking.xcodeproj"; sourceTree = ""; }; + 832341B01AAA6A8300B99B32 /* RCTText.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RCTText.xcodeproj; path = "../node_modules/react-native/Libraries/Text/RCTText.xcodeproj"; sourceTree = ""; }; + C7DEB70C413E484CBFA6AC45 /* RNFIRMessaging.xcodeproj */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = "wrapper.pb-project"; name = RNFIRMessaging.xcodeproj; path = "../node_modules/react-native-fcm/ios/RNFIRMessaging.xcodeproj"; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -145,14 +171,22 @@ buildActionMask = 2147483647; files = ( 146834051AC3E58100842450 /* libReact.a in Frameworks */, + 4339BFD91DAEBA7300F53B62 /* FirebaseCore.framework in Frameworks */, 00C302E51ABCBA2D00DB3ED1 /* libRCTActionSheet.a in Frameworks */, 00C302E71ABCBA2D00DB3ED1 /* libRCTGeolocation.a in Frameworks */, 00C302E81ABCBA2D00DB3ED1 /* libRCTImage.a in Frameworks */, 133E29F31AD74F7200F7D852 /* libRCTLinking.a in Frameworks */, + 4339BFE01DAEBA7F00F53B62 /* FirebaseMessaging.framework in Frameworks */, 00C302E91ABCBA2D00DB3ED1 /* libRCTNetwork.a in Frameworks */, 139105C61AF99C1200B5F7CC /* libRCTSettings.a in Frameworks */, 832341BD1AAA6AB300B99B32 /* libRCTText.a in Frameworks */, + 4339BFDB1DAEBA7300F53B62 /* GoogleInterchangeUtilities.framework in Frameworks */, + 4339BFE11DAEBA7F00F53B62 /* GoogleIPhoneUtilities.framework in Frameworks */, + 4339BFDC1DAEBA7300F53B62 /* GoogleSymbolUtilities.framework in Frameworks */, + 4339BFD81DAEBA7300F53B62 /* FirebaseAnalytics.framework in Frameworks */, 00C302EA1ABCBA2D00DB3ED1 /* libRCTVibration.a in Frameworks */, + 4339BFDD1DAEBA7300F53B62 /* GoogleUtilities.framework in Frameworks */, + 4339BFDA1DAEBA7300F53B62 /* FirebaseInstanceID.framework in Frameworks */, 139FDEF61B0652A700C62182 /* libRCTWebSocket.a in Frameworks */, FAE94A218EB64E38BF8D8E9B /* libRNFIRMessaging.a in Frameworks */, ); @@ -237,6 +271,8 @@ 13B07FAE1A68108700A75B9A /* SimpleFcmClient */ = { isa = PBXGroup; children = ( + 4339BFE31DAEBB4800F53B62 /* module.modulemap */, + 4339BFE21DAEBB3500F53B62 /* Firebase.h */, 008F07F21AC5B25A0029DE68 /* main.jsbundle */, 13B07FAF1A68108700A75B9A /* AppDelegate.h */, 13B07FB01A68108700A75B9A /* AppDelegate.m */, @@ -256,6 +292,29 @@ name = Products; sourceTree = ""; }; + 4339BFC21DAEBA3900F53B62 /* Products */ = { + isa = PBXGroup; + children = ( + 4339BFD01DAEBA3900F53B62 /* libRNFIRMessaging.a */, + ); + name = Products; + sourceTree = ""; + }; + 4339BFD11DAEBA4B00F53B62 /* Frameworks */ = { + isa = PBXGroup; + children = ( + 4339BFDE1DAEBA7F00F53B62 /* FirebaseMessaging.framework */, + 4339BFDF1DAEBA7F00F53B62 /* GoogleIPhoneUtilities.framework */, + 4339BFD21DAEBA7300F53B62 /* FirebaseAnalytics.framework */, + 4339BFD31DAEBA7300F53B62 /* FirebaseCore.framework */, + 4339BFD41DAEBA7300F53B62 /* FirebaseInstanceID.framework */, + 4339BFD51DAEBA7300F53B62 /* GoogleInterchangeUtilities.framework */, + 4339BFD61DAEBA7300F53B62 /* GoogleSymbolUtilities.framework */, + 4339BFD71DAEBA7300F53B62 /* GoogleUtilities.framework */, + ); + name = Frameworks; + sourceTree = ""; + }; 78C398B11ACF4ADC00677621 /* Products */ = { isa = PBXGroup; children = ( @@ -294,6 +353,7 @@ isa = PBXGroup; children = ( 13B07FAE1A68108700A75B9A /* SimpleFcmClient */, + 4339BFD11DAEBA4B00F53B62 /* Frameworks */, 832341AE1AAA6A7D00B99B32 /* Libraries */, 00E356EF1AD99517003FC87E /* SimpleFcmClientTests */, 83CBBA001A601CBA00E9B192 /* Products */, @@ -417,6 +477,10 @@ ProductGroup = 146834001AC3E56700842450 /* Products */; ProjectRef = 146833FF1AC3E56700842450 /* React.xcodeproj */; }, + { + ProductGroup = 4339BFC21DAEBA3900F53B62 /* Products */; + ProjectRef = C7DEB70C413E484CBFA6AC45 /* RNFIRMessaging.xcodeproj */; + }, ); projectRoot = ""; targets = ( @@ -483,6 +547,13 @@ remoteRef = 146834031AC3E56700842450 /* PBXContainerItemProxy */; sourceTree = BUILT_PRODUCTS_DIR; }; + 4339BFD01DAEBA3900F53B62 /* libRNFIRMessaging.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = libRNFIRMessaging.a; + remoteRef = 4339BFCF1DAEBA3900F53B62 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; 78C398B91ACF4ADC00677621 /* libRCTLinking.a */ = { isa = PBXReferenceProxy; fileType = archive.ar; @@ -532,7 +603,6 @@ runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; shellScript = "export NODE_BINARY=node\n../node_modules/react-native/packager/react-native-xcode.sh"; - showEnvVarsInLog = 1; }; /* End PBXShellScriptBuildPhase section */ @@ -588,12 +658,12 @@ INFOPLIST_FILE = SimpleFcmClientTests/Info.plist; IPHONEOS_DEPLOYMENT_TARGET = 8.0; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; - PRODUCT_NAME = "$(TARGET_NAME)"; - TEST_HOST = "$(BUILT_PRODUCTS_DIR)/SimpleFcmClient.app/SimpleFcmClient"; LIBRARY_SEARCH_PATHS = ( "$(inherited)", "\"$(SRCROOT)/$(TARGET_NAME)\"", ); + PRODUCT_NAME = "$(TARGET_NAME)"; + TEST_HOST = "$(BUILT_PRODUCTS_DIR)/SimpleFcmClient.app/SimpleFcmClient"; }; name = Debug; }; @@ -605,12 +675,12 @@ INFOPLIST_FILE = SimpleFcmClientTests/Info.plist; IPHONEOS_DEPLOYMENT_TARGET = 8.0; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; - PRODUCT_NAME = "$(TARGET_NAME)"; - TEST_HOST = "$(BUILT_PRODUCTS_DIR)/SimpleFcmClient.app/SimpleFcmClient"; LIBRARY_SEARCH_PATHS = ( "$(inherited)", "\"$(SRCROOT)/$(TARGET_NAME)\"", ); + PRODUCT_NAME = "$(TARGET_NAME)"; + TEST_HOST = "$(BUILT_PRODUCTS_DIR)/SimpleFcmClient.app/SimpleFcmClient"; }; name = Release; }; @@ -620,13 +690,17 @@ ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; CURRENT_PROJECT_VERSION = 1; DEAD_CODE_STRIPPING = NO; + FRAMEWORK_SEARCH_PATHS = ( + "$(inherited)", + "$(PROJECT_DIR)", + ); HEADER_SEARCH_PATHS = ( "$(inherited)", /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include, "$(SRCROOT)/../node_modules/react-native/React/**", "$(SRCROOT)/../node_modules/react-native-fcm/ios", ); - INFOPLIST_FILE = "SimpleFcmClient/Info.plist"; + INFOPLIST_FILE = SimpleFcmClient/Info.plist; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; OTHER_LDFLAGS = ( "$(inherited)", @@ -634,6 +708,7 @@ "-lc++", ); PRODUCT_NAME = SimpleFcmClient; + USER_HEADER_SEARCH_PATHS = ./SimpleFcmClient/; VERSIONING_SYSTEM = "apple-generic"; }; name = Debug; @@ -643,13 +718,17 @@ buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; CURRENT_PROJECT_VERSION = 1; + FRAMEWORK_SEARCH_PATHS = ( + "$(inherited)", + "$(PROJECT_DIR)", + ); HEADER_SEARCH_PATHS = ( "$(inherited)", /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include, "$(SRCROOT)/../node_modules/react-native/React/**", "$(SRCROOT)/../node_modules/react-native-fcm/ios", ); - INFOPLIST_FILE = "SimpleFcmClient/Info.plist"; + INFOPLIST_FILE = SimpleFcmClient/Info.plist; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; OTHER_LDFLAGS = ( "$(inherited)", @@ -657,6 +736,7 @@ "-lc++", ); PRODUCT_NAME = SimpleFcmClient; + USER_HEADER_SEARCH_PATHS = ./SimpleFcmClient/; VERSIONING_SYSTEM = "apple-generic"; }; name = Release; diff --git a/Examples/simple-fcm-client/ios/SimpleFcmClient/AppDelegate.h b/Examples/simple-fcm-client/ios/SimpleFcmClient/AppDelegate.h index a9654d5e01b18c52fc334bdec2a796ce7e055dbf..36bbf1865354722eff66dcde27452912ad21f350 100644 --- a/Examples/simple-fcm-client/ios/SimpleFcmClient/AppDelegate.h +++ b/Examples/simple-fcm-client/ios/SimpleFcmClient/AppDelegate.h @@ -9,7 +9,9 @@ #import -@interface AppDelegate : UIResponder +@import UserNotifications; + +@interface AppDelegate : UIResponder @property (nonatomic, strong) UIWindow *window; diff --git a/Examples/simple-fcm-client/ios/SimpleFcmClient/AppDelegate.m b/Examples/simple-fcm-client/ios/SimpleFcmClient/AppDelegate.m index 89d63d0090b8af0956392bc94de23efd98e03ac5..59c5605936dffda7ebf7e2c4bdd1be8b2de33202 100644 --- a/Examples/simple-fcm-client/ios/SimpleFcmClient/AppDelegate.m +++ b/Examples/simple-fcm-client/ios/SimpleFcmClient/AppDelegate.m @@ -12,6 +12,8 @@ #import "RCTBundleURLProvider.h" #import "RCTRootView.h" +#import "RNFIRMessaging.h" + @implementation AppDelegate - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions @@ -31,7 +33,40 @@ rootViewController.view = rootView; self.window.rootViewController = rootViewController; [self.window makeKeyAndVisible]; + + [FIRApp configure]; + #if defined(__IPHONE_10_0) && __IPHONE_OS_VERSION_MAX_ALLOWED >= __IPHONE_10_0 + [[UNUserNotificationCenter currentNotificationCenter] setDelegate:self]; + #endif + return YES; } +#if defined(__IPHONE_10_0) && __IPHONE_OS_VERSION_MAX_ALLOWED >= __IPHONE_10_0 +- (void)userNotificationCenter:(UNUserNotificationCenter *)center willPresentNotification:(UNNotification *)notification withCompletionHandler:(void (^)(UNNotificationPresentationOptions))completionHandler { + [[NSNotificationCenter defaultCenter] postNotificationName:FCMNotificationReceived object:self userInfo:notification.request.content.userInfo]; + if([[notification.request.content.userInfo valueForKey:@"show_in_foreground"] isEqual:@YES]) { + completionHandler(UNNotificationPresentationOptionAlert | UNNotificationPresentationOptionBadge | UNNotificationPresentationOptionSound); + } else { + completionHandler(UNNotificationPresentationOptionNone); + } +} + +- (void)userNotificationCenter:(UNUserNotificationCenter *)center didReceiveNotificationResponse:(UNNotificationResponse *)response withCompletionHandler:(void (^)())completionHandler { + NSDictionary* userInfo = [[NSMutableDictionary alloc] initWithDictionary: response.notification.request.content.userInfo]; + [userInfo setValue:@YES forKey:@"opened_from_tray"]; + [[NSNotificationCenter defaultCenter] postNotificationName:FCMNotificationReceived object:self userInfo:userInfo]; +} +#else +//You can skip this method if you don't want to use local notification +- (void)application:(UIApplication *)application didReceiveLocalNotification:(UILocalNotification *)notification { + [[NSNotificationCenter defaultCenter] postNotificationName:FCMNotificationReceived object:self + userInfo:notification.userInfo]; +} +#endif + +- (void)application:(UIApplication *)application didReceiveRemoteNotification:(nonnull NSDictionary *)userInfo fetchCompletionHandler:(nonnull void (^)(UIBackgroundFetchResult))completionHandler{ + [[NSNotificationCenter defaultCenter] postNotificationName:FCMNotificationReceived object:self userInfo:userInfo]; + completionHandler(UIBackgroundFetchResultNoData); +} + @end diff --git a/Examples/simple-fcm-client/ios/module.modulemap b/Examples/simple-fcm-client/ios/module.modulemap new file mode 100644 index 0000000000000000000000000000000000000000..0a48bcbb4992e8c86ca950a87e0fe33f810f0110 --- /dev/null +++ b/Examples/simple-fcm-client/ios/module.modulemap @@ -0,0 +1,4 @@ +module Firebase { + header "Firebase.h" + export * +}