diff --git a/android/app/src/main/AndroidManifest.xml b/android/app/src/main/AndroidManifest.xml
index c23d9bf5df..335c7dfd57 100644
--- a/android/app/src/main/AndroidManifest.xml
+++ b/android/app/src/main/AndroidManifest.xml
@@ -36,6 +36,7 @@
android:theme="@style/AppTheme"
android:name=".MainApplication"
android:largeHeap="true">
+
+
+#import "FIRCoreSwiftNameSupport.h"
+
+NS_ASSUME_NONNULL_BEGIN
+
+/**
+ * This class provides configuration fields for Firebase Analytics.
+ */
+FIR_SWIFT_NAME(AnalyticsConfiguration)
+@interface FIRAnalyticsConfiguration : NSObject
+
+/**
+ * Returns the shared instance of FIRAnalyticsConfiguration.
+ */
++ (FIRAnalyticsConfiguration *)sharedInstance FIR_SWIFT_NAME(shared());
+
+/**
+ * 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;
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/ios/FirebaseCore.framework/Headers/FIRApp.h b/ios/FirebaseCore.framework/Headers/FIRApp.h
new file mode 100755
index 0000000000..dbec0ac30d
--- /dev/null
+++ b/ios/FirebaseCore.framework/Headers/FIRApp.h
@@ -0,0 +1,132 @@
+/*
+ * Copyright 2017 Google
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#import
+
+#if TARGET_OS_IOS
+// TODO: Remove UIKit import on next breaking change release
+#import
+#endif
+
+#import "FIRCoreSwiftNameSupport.h"
+
+@class FIROptions;
+
+NS_ASSUME_NONNULL_BEGIN
+
+/** A block that takes a BOOL and has no return value. */
+typedef void (^FIRAppVoidBoolCallback)(BOOL success) FIR_SWIFT_NAME(FirebaseAppVoidBoolCallback);
+
+/**
+ * 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.
+ *
+ * It is also possible to change the default logging level in code by calling setLoggerLevel: on
+ * the FIRConfiguration interface.
+ */
+FIR_SWIFT_NAME(FirebaseApp)
+@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 FIR_SWIFT_NAME(configure(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.
+ */
+// clang-format off
++ (void)configureWithName:(NSString *)name
+ options:(FIROptions *)options FIR_SWIFT_NAME(configure(name:options:));
+// clang-format on
+
+/**
+ * Returns the default app, or nil if the default app does not exist.
+ */
++ (nullable FIRApp *)defaultApp FIR_SWIFT_NAME(app());
+
+/**
+ * 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 FIR_SWIFT_NAME(app(name:));
+
+#if defined(__IPHONE_10_0) && __IPHONE_OS_VERSION_MAX_ALLOWED >= __IPHONE_10_0
+/**
+ * Returns the set of all extant FIRApp instances, or nil if there are no FIRApp instances. This
+ * method is thread safe.
+ */
+@property(class, readonly, nullable) NSDictionary *allApps;
+#else
+/**
+ * Returns the set of all extant FIRApp instances, or nil if there are no FIRApp instances. This
+ * method is thread safe.
+ */
++ (nullable NSDictionary *)allApps FIR_SWIFT_NAME(allApps());
+#endif // defined(__IPHONE_10_0) && __IPHONE_OS_VERSION_MAX_ALLOWED >= __IPHONE_10_0
+
+/**
+ * Cleans up the current FIRApp, freeing associated data and returning its name to the pool for
+ * future use. This method is thread safe.
+ */
+- (void)deleteApp:(FIRAppVoidBoolCallback)completion;
+
+/**
+ * FIRApp instances should not be initialized directly. Call +[FIRApp configure],
+ * +[FIRApp configureWithOptions:], or +[FIRApp configureWithNames:options:] directly.
+ */
+- (instancetype)init NS_UNAVAILABLE;
+
+/**
+ * Gets the name of this app.
+ */
+@property(nonatomic, copy, readonly) NSString *name;
+
+/**
+ * Gets a copy of the options for this app. These are non-modifiable.
+ */
+@property(nonatomic, copy, readonly) FIROptions *options;
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/ios/FirebaseCore.framework/Headers/FIRConfiguration.h b/ios/FirebaseCore.framework/Headers/FIRConfiguration.h
new file mode 100755
index 0000000000..e2c85e5a1d
--- /dev/null
+++ b/ios/FirebaseCore.framework/Headers/FIRConfiguration.h
@@ -0,0 +1,79 @@
+/*
+ * Copyright 2017 Google
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#import
+
+#import "FIRAnalyticsConfiguration.h"
+#import "FIRCoreSwiftNameSupport.h"
+#import "FIRLoggerLevel.h"
+
+/**
+ * The log levels used by FIRConfiguration.
+ */
+typedef NS_ENUM(NSInteger, FIRLogLevel) {
+ /** Error */
+ kFIRLogLevelError __deprecated = 0,
+ /** Warning */
+ kFIRLogLevelWarning __deprecated,
+ /** Info */
+ kFIRLogLevelInfo __deprecated,
+ /** Debug */
+ kFIRLogLevelDebug __deprecated,
+ /** Assert */
+ kFIRLogLevelAssert __deprecated,
+ /** Max */
+ kFIRLogLevelMax __deprecated = kFIRLogLevelAssert
+} DEPRECATED_MSG_ATTRIBUTE(
+ "Use -FIRDebugEnabled and -FIRDebugDisabled or setLoggerLevel. See FIRApp.h for more details.");
+
+NS_ASSUME_NONNULL_BEGIN
+
+/**
+ * This interface provides global level properties that the developer can tweak, and the singleton
+ * of the Firebase Analytics configuration class.
+ */
+FIR_SWIFT_NAME(FirebaseConfiguration)
+@interface FIRConfiguration : NSObject
+
+#if defined(__IPHONE_10_0) && __IPHONE_OS_VERSION_MAX_ALLOWED >= __IPHONE_10_0
+/** Returns the shared configuration object. */
+@property(class, nonatomic, readonly) FIRConfiguration *sharedInstance FIR_SWIFT_NAME(shared);
+#else
+/** Returns the shared configuration object. */
++ (FIRConfiguration *)sharedInstance FIR_SWIFT_NAME(shared());
+#endif // defined(__IPHONE_10_0) && __IPHONE_OS_VERSION_MAX_ALLOWED >= __IPHONE_10_0
+
+/** 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 or setLoggerLevel. See FIRApp.h for more details.");
+
+/**
+ * Sets the logging level for internal Firebase logging. Firebase will only log messages
+ * that are logged at or below loggerLevel. The messages are logged both to the Xcode
+ * console and to the device's log. Note that if an app is running from AppStore, it will
+ * never log above FIRLoggerLevelNotice even if loggerLevel is set to a higher (more verbose)
+ * setting.
+ *
+ * @param loggerLevel The maximum logging level. The default level is set to FIRLoggerLevelNotice.
+ */
+- (void)setLoggerLevel:(FIRLoggerLevel)loggerLevel;
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/ios/FirebaseCore.framework/Headers/FIRCoreSwiftNameSupport.h b/ios/FirebaseCore.framework/Headers/FIRCoreSwiftNameSupport.h
new file mode 100755
index 0000000000..216c047c0e
--- /dev/null
+++ b/ios/FirebaseCore.framework/Headers/FIRCoreSwiftNameSupport.h
@@ -0,0 +1,29 @@
+/*
+ * Copyright 2017 Google
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef FIR_SWIFT_NAME
+
+#import
+
+// NS_SWIFT_NAME can only translate factory methods before the iOS 9.3 SDK.
+// Wrap it in our own macro if it's a non-compatible SDK.
+#ifdef __IPHONE_9_3
+#define FIR_SWIFT_NAME(X) NS_SWIFT_NAME(X)
+#else
+#define FIR_SWIFT_NAME(X) // Intentionally blank.
+#endif // #ifdef __IPHONE_9_3
+
+#endif // FIR_SWIFT_NAME
diff --git a/ios/FirebaseCore.framework/Headers/FIRLoggerLevel.h b/ios/FirebaseCore.framework/Headers/FIRLoggerLevel.h
new file mode 100755
index 0000000000..70e99eea48
--- /dev/null
+++ b/ios/FirebaseCore.framework/Headers/FIRLoggerLevel.h
@@ -0,0 +1,37 @@
+/*
+ * Copyright 2017 Google
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#import "FIRCoreSwiftNameSupport.h"
+
+/**
+ * The log levels used by internal logging.
+ */
+typedef NS_ENUM(NSInteger, FIRLoggerLevel) {
+ /** Error level, matches ASL_LEVEL_ERR. */
+ FIRLoggerLevelError = 3,
+ /** Warning level, matches ASL_LEVEL_WARNING. */
+ FIRLoggerLevelWarning = 4,
+ /** Notice level, matches ASL_LEVEL_NOTICE. */
+ FIRLoggerLevelNotice = 5,
+ /** Info level, matches ASL_LEVEL_NOTICE. */
+ FIRLoggerLevelInfo = 6,
+ /** Debug level, matches ASL_LEVEL_DEBUG. */
+ FIRLoggerLevelDebug = 7,
+ /** Minimum log level. */
+ FIRLoggerLevelMin = FIRLoggerLevelError,
+ /** Maximum log level. */
+ FIRLoggerLevelMax = FIRLoggerLevelDebug
+} FIR_SWIFT_NAME(FirebaseLoggerLevel);
diff --git a/ios/FirebaseCore.framework/Headers/FIROptions.h b/ios/FirebaseCore.framework/Headers/FIROptions.h
new file mode 100755
index 0000000000..e1d114ae57
--- /dev/null
+++ b/ios/FirebaseCore.framework/Headers/FIROptions.h
@@ -0,0 +1,135 @@
+/*
+ * Copyright 2017 Google
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#import
+
+#import "FIRCoreSwiftNameSupport.h"
+
+NS_ASSUME_NONNULL_BEGIN
+
+/**
+ * This class provides constant fields of Google APIs.
+ */
+FIR_SWIFT_NAME(FirebaseOptions)
+@interface FIROptions : NSObject
+
+/**
+ * Returns the default options.
+ */
++ (nullable FIROptions *)defaultOptions FIR_SWIFT_NAME(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, copy, nullable) NSString *APIKey FIR_SWIFT_NAME(apiKey);
+
+/**
+ * The bundle ID for the application. Defaults to `[[NSBundle mainBundle] bundleID]` when not set
+ * manually or in a plist.
+ */
+@property(nonatomic, copy) NSString *bundleID;
+
+/**
+ * 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, copy, nullable) NSString *clientID;
+
+/**
+ * The tracking ID for Google Analytics, e.g. @"UA-12345678-1", used to configure Google Analytics.
+ */
+@property(nonatomic, copy, nullable) NSString *trackingID;
+
+/**
+ * The Project Number from the Google Developer's console, for example @"012345678901", used to
+ * configure Google Cloud Messaging.
+ */
+@property(nonatomic, copy) NSString *GCMSenderID FIR_SWIFT_NAME(gcmSenderID);
+
+/**
+ * The Project ID from the Firebase console, for example @"abc-xyz-123".
+ */
+@property(nonatomic, copy, nullable) NSString *projectID;
+
+/**
+ * The Android client ID used in Google AppInvite when an iOS app has its Android version, for
+ * example @"12345.apps.googleusercontent.com".
+ */
+@property(nonatomic, copy, nullable) NSString *androidClientID;
+
+/**
+ * The Google App ID that is used to uniquely identify an instance of an app.
+ */
+@property(nonatomic, copy) NSString *googleAppID;
+
+/**
+ * The database root URL, e.g. @"http://abc-xyz-123.firebaseio.com".
+ */
+@property(nonatomic, copy, nullable) NSString *databaseURL;
+
+/**
+ * The URL scheme used to set up Durable Deep Link service.
+ */
+@property(nonatomic, copy, nullable) NSString *deepLinkURLScheme;
+
+/**
+ * The Google Cloud Storage bucket name, e.g. @"abc-xyz-123.storage.firebase.com".
+ */
+@property(nonatomic, copy, nullable) 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
+ DEPRECATED_MSG_ATTRIBUTE(
+ "Use `-[[FIROptions alloc] initWithGoogleAppID:GCMSenderID:]` "
+ "(`FirebaseOptions(googleAppID:gcmSenderID:)` in Swift)` and property "
+ "setters instead.");
+
+/**
+ * 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.
+ */
+- (nullable instancetype)initWithContentsOfFile:(NSString *)plistPath;
+
+/**
+ * Initializes a customized instance of FIROptions with required fields. Use the mutable properties
+ * to modify fields for configuring specific services.
+ */
+// clang-format off
+- (instancetype)initWithGoogleAppID:(NSString *)googleAppID
+ GCMSenderID:(NSString *)GCMSenderID
+ FIR_SWIFT_NAME(init(googleAppID:gcmSenderID:));
+// clang-format on
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/ios/FirebaseCore.framework/Headers/FirebaseCore.h b/ios/FirebaseCore.framework/Headers/FirebaseCore.h
new file mode 100755
index 0000000000..20816292eb
--- /dev/null
+++ b/ios/FirebaseCore.framework/Headers/FirebaseCore.h
@@ -0,0 +1,6 @@
+#import "FIRAnalyticsConfiguration.h"
+#import "FIRApp.h"
+#import "FIRConfiguration.h"
+#import "FIRCoreSwiftNameSupport.h"
+#import "FIRLoggerLevel.h"
+#import "FIROptions.h"
diff --git a/ios/FirebaseCore.framework/Modules/module.modulemap b/ios/FirebaseCore.framework/Modules/module.modulemap
new file mode 100755
index 0000000000..2f85309a9a
--- /dev/null
+++ b/ios/FirebaseCore.framework/Modules/module.modulemap
@@ -0,0 +1,5 @@
+framework module FirebaseCore {
+ umbrella header "FirebaseCore.h"
+ export *
+ module * { export *}
+ link "z"}
diff --git a/ios/FirebaseCoreDiagnostics.framework/FirebaseCoreDiagnostics b/ios/FirebaseCoreDiagnostics.framework/FirebaseCoreDiagnostics
new file mode 100755
index 0000000000..c51fd37f51
Binary files /dev/null and b/ios/FirebaseCoreDiagnostics.framework/FirebaseCoreDiagnostics differ
diff --git a/ios/FirebaseCoreDiagnostics.framework/Modules/module.modulemap b/ios/FirebaseCoreDiagnostics.framework/Modules/module.modulemap
new file mode 100644
index 0000000000..5bd208fe7a
--- /dev/null
+++ b/ios/FirebaseCoreDiagnostics.framework/Modules/module.modulemap
@@ -0,0 +1,4 @@
+framework module FirebaseCoreDiagnostics {
+ export *
+ module * { export *}
+ link "z"}
diff --git a/ios/FirebaseInstanceID.framework/FirebaseInstanceID b/ios/FirebaseInstanceID.framework/FirebaseInstanceID
new file mode 100755
index 0000000000..14e65bea07
Binary files /dev/null and b/ios/FirebaseInstanceID.framework/FirebaseInstanceID differ
diff --git a/ios/FirebaseInstanceID.framework/Headers/FIRInstanceID.h b/ios/FirebaseInstanceID.framework/Headers/FIRInstanceID.h
new file mode 100755
index 0000000000..680125df4a
--- /dev/null
+++ b/ios/FirebaseInstanceID.framework/Headers/FIRInstanceID.h
@@ -0,0 +1,281 @@
+#import
+
+// NS_SWIFT_NAME can only translate factory methods before the iOS 9.3 SDK.
+// Wrap it in our own macro if it's a non-compatible SDK.
+#ifndef FIR_SWIFT_NAME
+#ifdef __IPHONE_9_3
+#define FIR_SWIFT_NAME(X) NS_SWIFT_NAME(X)
+#else
+#define FIR_SWIFT_NAME(X) // Intentionally blank.
+#endif // #ifdef __IPHONE_9_3
+#endif // #ifndef FIR_SWIFT_NAME
+
+/**
+ * @memberof FIRInstanceID
+ *
+ * The scope to be used when fetching/deleting a token for Firebase Messaging.
+ */
+FOUNDATION_EXPORT NSString * __nonnull const kFIRInstanceIDScopeFirebaseMessaging
+ FIR_SWIFT_NAME(InstanceIDScopeFirebaseMessaging);
+
+#if defined(__IPHONE_10_0) && __IPHONE_OS_VERSION_MAX_ALLOWED >= __IPHONE_10_0
+/**
+ * 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 const NSNotificationName __nonnull kFIRInstanceIDTokenRefreshNotification
+ FIR_SWIFT_NAME(InstanceIDTokenRefresh);
+#else
+/**
+ * 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
+ FIR_SWIFT_NAME(InstanceIDTokenRefreshNotification);
+#endif // defined(__IPHONE_10_0) && __IPHONE_OS_VERSION_MAX_ALLOWED >= __IPHONE_10_0
+
+/**
+ * @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)
+ FIR_SWIFT_NAME(InstanceIDTokenHandler);
+
+
+/**
+ * @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)
+ FIR_SWIFT_NAME(InstanceIDDeleteTokenHandler);
+
+/**
+ * @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)
+ FIR_SWIFT_NAME(InstanceIDHandler);
+
+/**
+ * @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)
+ FIR_SWIFT_NAME(InstanceIDDeleteHandler);
+
+/**
+ * @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,
+} FIR_SWIFT_NAME(InstanceIDError);
+
+/**
+ * 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,
+} FIR_SWIFT_NAME(InstanceIDAPNSTokenType)
+ __deprecated_enum_msg("Use FIRMessaging's APNSToken property instead.");
+
+/**
+ * Instance ID provides a unique identifier for each app instance and a mechanism
+ * to authenticate and authorize actions (for example, sending an FCM 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 via
+ * `kFIRInstanceIDTokenRefreshNotification`.
+ *
+ * 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]`.
+ */
+FIR_SWIFT_NAME(InstanceID)
+@interface FIRInstanceID : NSObject
+
+/**
+ * FIRInstanceID.
+ *
+ * @return A shared instance of FIRInstanceID.
+ */
++ (nonnull instancetype)instanceID FIR_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
+ __deprecated_msg("Use FIRMessaging's APNSToken property instead.");
+
+#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 the UIApplicationDelegate's
+ * `didRegisterForRemoteNotificationsWithDeviceToken` method.
+ * The value for `apns_sandbox` should be a boolean (or an
+ * NSNumber representing a BOOL in Objective C) set to true if
+ * your app is a debug build, which means that the APNs
+ * device token is for the sandbox environment. It should be
+ * set to false otherwise.
+ * @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
+ FIR_SWIFT_NAME(getID(handler:));
+
+/**
+ * Resets Instance ID and revokes all tokens.
+ */
+- (void)deleteIDWithHandler:(nonnull FIRInstanceIDDeleteHandler)handler
+ FIR_SWIFT_NAME(deleteID(handler:));
+
+@end
diff --git a/ios/FirebaseInstanceID.framework/Headers/FirebaseInstanceID.h b/ios/FirebaseInstanceID.framework/Headers/FirebaseInstanceID.h
new file mode 100755
index 0000000000..053ec2b1cf
--- /dev/null
+++ b/ios/FirebaseInstanceID.framework/Headers/FirebaseInstanceID.h
@@ -0,0 +1 @@
+#import "FIRInstanceID.h"
diff --git a/ios/FirebaseInstanceID.framework/Modules/module.modulemap b/ios/FirebaseInstanceID.framework/Modules/module.modulemap
new file mode 100755
index 0000000000..7344d9bdd8
--- /dev/null
+++ b/ios/FirebaseInstanceID.framework/Modules/module.modulemap
@@ -0,0 +1,5 @@
+framework module FirebaseInstanceID {
+ umbrella header "FirebaseInstanceID.h"
+ export *
+ module * { export *}
+ link "z"}
diff --git a/ios/FirebaseMessaging.framework/FirebaseMessaging b/ios/FirebaseMessaging.framework/FirebaseMessaging
new file mode 100755
index 0000000000..44c6424deb
Binary files /dev/null and b/ios/FirebaseMessaging.framework/FirebaseMessaging differ
diff --git a/ios/FirebaseMessaging.framework/Headers/FIRMessaging.h b/ios/FirebaseMessaging.framework/Headers/FIRMessaging.h
new file mode 100755
index 0000000000..7313f2339a
--- /dev/null
+++ b/ios/FirebaseMessaging.framework/Headers/FIRMessaging.h
@@ -0,0 +1,492 @@
+/*
+ * Copyright 2017 Google
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#import
+
+
+// NS_SWIFT_NAME can only translate factory methods before the iOS 9.3 SDK.
+// Wrap it in our own macro if it's a non-compatible SDK.
+#ifndef FIR_SWIFT_NAME
+#ifdef __IPHONE_9_3
+#define FIR_SWIFT_NAME(X) NS_SWIFT_NAME(X)
+#else
+#define FIR_SWIFT_NAME(X) // Intentionally blank.
+#endif // #ifdef __IPHONE_9_3
+#endif // #ifndef FIR_SWIFT_NAME
+
+/**
+ * @related FIRMessaging
+ *
+ * The completion handler invoked when the registration token returns.
+ * If the call fails we return the appropriate `error code`, described by
+ * `FIRMessagingError`.
+ *
+ * @param FCMToken The valid registration token returned by FCM.
+ * @param error The error describing why a token request failed. The error code
+ * will match a value from the FIRMessagingError enumeration.
+ */
+typedef void(^FIRMessagingFCMTokenFetchCompletion)(NSString * _Nullable FCMToken,
+ NSError * _Nullable error)
+ FIR_SWIFT_NAME(MessagingFCMTokenFetchCompletion);
+
+
+/**
+ * @related FIRMessaging
+ *
+ * The completion handler invoked when the registration token deletion request is
+ * completed. If the call fails we return the appropriate `error code`, described
+ * by `FIRMessagingError`.
+ *
+ * @param error The error describing why a token deletion failed. The error code
+ * will match a value from the FIRMessagingError enumeration.
+ */
+typedef void(^FIRMessagingDeleteFCMTokenCompletion)(NSError * _Nullable error)
+ FIR_SWIFT_NAME(MessagingDeleteFCMTokenCompletion);
+
+/**
+ * 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)
+ FIR_SWIFT_NAME(MessagingConnectCompletion)
+ __deprecated_msg("Please listen for the FIRMessagingConnectionStateChangedNotification "
+ "NSNotification instead.");
+
+#if defined(__IPHONE_10_0) && __IPHONE_OS_VERSION_MAX_ALLOWED >= __IPHONE_10_0
+/**
+ * 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 const NSNotificationName __nonnull FIRMessagingSendSuccessNotification
+ FIR_SWIFT_NAME(MessagingSendSuccess);
+
+/**
+ * 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 const NSNotificationName __nonnull FIRMessagingSendErrorNotification
+ FIR_SWIFT_NAME(MessagingSendError);
+
+/**
+ * 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 const NSNotificationName __nonnull FIRMessagingMessagesDeletedNotification
+ FIR_SWIFT_NAME(MessagingMessagesDeleted);
+
+/**
+ * Notification sent when Firebase Messaging establishes or disconnects from
+ * an FCM socket connection. You can query the connection state in this
+ * notification by checking the `isDirectChannelEstablished` property of FIRMessaging.
+ */
+FOUNDATION_EXPORT const NSNotificationName __nonnull FIRMessagingConnectionStateChangedNotification
+ FIR_SWIFT_NAME(MessagingConnectionStateChanged);
+
+/**
+ * Notification sent when the FCM registration token has been refreshed. You can also
+ * receive the FCM token via the FIRMessagingDelegate method
+ * `-messaging:didRefreshRegistrationToken:`
+ */
+FOUNDATION_EXPORT const NSNotificationName __nonnull
+ FIRMessagingRegistrationTokenRefreshedNotification
+ FIR_SWIFT_NAME(MessagingRegistrationTokenRefreshed);
+#else
+/**
+ * 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
+ FIR_SWIFT_NAME(MessagingSendSuccessNotification);
+
+/**
+ * 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
+ FIR_SWIFT_NAME(MessagingSendErrorNotification);
+
+/**
+ * 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
+ FIR_SWIFT_NAME(MessagingMessagesDeletedNotification);
+
+/**
+ * Notification sent when Firebase Messaging establishes or disconnects from
+ * an FCM socket connection. You can query the connection state in this
+ * notification by checking the `isDirectChannelEstablished` property of FIRMessaging.
+ */
+FOUNDATION_EXPORT NSString * __nonnull const FIRMessagingConnectionStateChangedNotification
+ FIR_SWIFT_NAME(MessagingConnectionStateChangedNotification);
+
+/**
+ * Notification sent when the FCM registration token has been refreshed. You can also
+ * receive the FCM token via the FIRMessagingDelegate method
+ * `-messaging:didRefreshRegistrationToken:`
+ */
+FOUNDATION_EXPORT NSString * __nonnull const FIRMessagingRegistrationTokenRefreshedNotification
+ FIR_SWIFT_NAME(MessagingRegistrationTokenRefreshedNotification);
+#endif // defined(__IPHONE_10_0) && __IPHONE_OS_VERSION_MAX_ALLOWED >= __IPHONE_10_0
+
+/**
+ * @enum FIRMessagingError
+ */
+typedef NS_ENUM(NSUInteger, FIRMessagingError) {
+ /// Unknown error.
+ FIRMessagingErrorUnknown = 0,
+
+ /// FIRMessaging couldn't validate request from this client.
+ FIRMessagingErrorAuthentication = 1,
+
+ /// InstanceID service cannot be accessed.
+ FIRMessagingErrorNoAccess = 2,
+
+ /// Request to InstanceID backend timed out.
+ FIRMessagingErrorTimeout = 3,
+
+ /// No network available to reach the servers.
+ FIRMessagingErrorNetwork = 4,
+
+ /// Another similar operation in progress, bailing this one.
+ FIRMessagingErrorOperationInProgress = 5,
+
+ /// Some parameters of the request were invalid.
+ FIRMessagingErrorInvalidRequest = 7,
+} FIR_SWIFT_NAME(MessagingError);
+
+/// Status for the downstream message received by the app.
+typedef NS_ENUM(NSInteger, FIRMessagingMessageStatus) {
+ /// Unknown status.
+ FIRMessagingMessageStatusUnknown,
+ /// New downstream message received by the app.
+ FIRMessagingMessageStatusNew,
+} FIR_SWIFT_NAME(MessagingMessageStatus);
+
+/**
+ * The APNS token type for the app. If the token type is set to `UNKNOWN`
+ * Firebase Messaging will implicitly try to figure out what the actual token type
+ * is from the provisioning profile.
+ * Unless you really need to specify the type, you should use the `APNSToken`
+ * property instead.
+ */
+typedef NS_ENUM(NSInteger, FIRMessagingAPNSTokenType) {
+ /// Unknown token type.
+ FIRMessagingAPNSTokenTypeUnknown,
+ /// Sandbox token type.
+ FIRMessagingAPNSTokenTypeSandbox,
+ /// Production token type.
+ FIRMessagingAPNSTokenTypeProd,
+} FIR_SWIFT_NAME(MessagingAPNSTokenType);
+
+/// Information about a downstream message received by the app.
+FIR_SWIFT_NAME(MessagingMessageInfo)
+@interface FIRMessagingMessageInfo : NSObject
+
+/// The status of the downstream message
+@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.
+ */
+FIR_SWIFT_NAME(MessagingRemoteMessage)
+@interface FIRMessagingRemoteMessage : NSObject
+
+/// The downstream message received by the application.
+@property(nonatomic, readonly, strong, nonnull) NSDictionary *appData;
+@end
+
+@class FIRMessaging;
+/**
+ * A protocol to handle events from 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.
+ */
+FIR_SWIFT_NAME(MessagingDelegate)
+@protocol FIRMessagingDelegate
+
+/// This method will be called whenever FCM receives a new, default FCM token for your
+/// Firebase project's Sender ID.
+/// You can send this token to your application server to send notifications to this device.
+- (void)messaging:(nonnull FIRMessaging *)messaging
+ didRefreshRegistrationToken:(nonnull NSString *)fcmToken
+ FIR_SWIFT_NAME(messaging(_:didRefreshRegistrationToken:));
+
+@optional
+/// This method is called on iOS 10 devices to handle data messages received via FCM through its
+/// direct channel (not via APNS). For iOS 9 and below, the FCM data message is delivered via the
+/// UIApplicationDelegate's -application:didReceiveRemoteNotification: method.
+- (void)messaging:(nonnull FIRMessaging *)messaging
+ didReceiveMessage:(nonnull FIRMessagingRemoteMessage *)remoteMessage
+ FIR_SWIFT_NAME(messaging(_:didReceive:))
+ __IOS_AVAILABLE(10.0);
+
+/// The callback to handle data message received via FCM for devices running iOS 10 or above.
+- (void)applicationReceivedRemoteMessage:(nonnull FIRMessagingRemoteMessage *)remoteMessage
+ FIR_SWIFT_NAME(application(received:))
+ __deprecated_msg("Use FIRMessagingDelegate’s -messaging:didReceiveMessage:");
+
+@end
+
+/**
+ * Firebase Messaging lets you reliably deliver messages at no cost.
+ *
+ * To send or receive messages, the app must get a
+ * registration token from FIRInstanceID. This token authorizes an
+ * app server to send messages to an app instance.
+ *
+ * In order to receive FIRMessaging messages, declare `application:didReceiveRemoteNotification:`.
+ */
+FIR_SWIFT_NAME(Messaging)
+@interface FIRMessaging : NSObject
+
+/**
+ * Delegate to handle FCM token refreshes, and remote data messages received via FCM for devices
+ * running iOS 10 or above.
+ */
+@property(nonatomic, weak, nullable) id delegate;
+
+
+/**
+ * Delegate to handle remote data messages received via FCM for devices running iOS 10 or above.
+ */
+@property(nonatomic, weak, nullable) id remoteMessageDelegate
+ __deprecated_msg("Use 'delegate' property");
+
+/**
+ * When set to `YES`, Firebase Messaging will automatically establish a socket-based, direct
+ * channel to the FCM server. Enable this only if you are sending upstream messages or
+ * receiving non-APNS, data-only messages in foregrounded apps.
+ * Default is `NO`.
+ */
+@property(nonatomic) BOOL shouldEstablishDirectChannel;
+
+/**
+ * Returns `YES` if the direct channel to the FCM server is active, and `NO` otherwise.
+ */
+@property(nonatomic, readonly) BOOL isDirectChannelEstablished;
+
+/**
+ * FIRMessaging
+ *
+ * @return An instance of FIRMessaging.
+ */
++ (nonnull instancetype)messaging FIR_SWIFT_NAME(messaging());
+
+/**
+ * Unavailable. Use +messaging instead.
+ */
+- (nonnull instancetype)init __attribute__((unavailable("Use +messaging instead.")));
+
+#pragma mark - APNS
+
+/**
+ * This property is used to set the APNS Token received by the application delegate.
+ *
+ * FIRMessaging uses method swizzling to ensure that the APNS token is set
+ * automatically. However, if you have disabled swizzling by setting
+ * `FirebaseAppDelegateProxyEnabled` to `NO` in your app's
+ * Info.plist, you should manually set the APNS token in your application
+ * delegate's `-application:didRegisterForRemoteNotificationsWithDeviceToken:`
+ * method.
+ *
+ * If you would like to set the type of the APNS token, rather than relying on
+ * automatic detection, see: `-setAPNSToken:type:`.
+ */
+@property(nonatomic, copy, nullable) NSData *APNSToken FIR_SWIFT_NAME(apnsToken);
+
+/**
+ * Set APNS token for the application. This APNS token will be used to register
+ * with Firebase Messaging using `FCMToken` or
+ * `tokenWithAuthorizedEntity:scope:options:handler`.
+ *
+ * @param apnsToken The APNS token for the application.
+ * @param type The type of APNS token. Debug builds should use
+ * FIRMessagingAPNSTokenTypeSandbox. Alternatively, you can supply
+ * FIRMessagingAPNSTokenTypeUnknown to have the type automatically
+ * detected based on your provisioning profile.
+ */
+- (void)setAPNSToken:(nonnull NSData *)apnsToken type:(FIRMessagingAPNSTokenType)type;
+
+#pragma mark - FCM Tokens
+
+/**
+ * The FCM token is used to identify this device so that FCM can send notifications to it.
+ * It is associated with your APNS token when the APNS token is supplied, so that sending
+ * messages to the FCM token will be delivered over APNS.
+ *
+ * The FCM token is sometimes refreshed automatically. You can be notified of these changes
+ * via the FIRMessagingDelegate method `-message:didRefreshRegistrationToken:`, or by
+ * listening for the `FIRMessagingRegistrationTokenRefreshedNotification` notification.
+ *
+ * Once you have an FCM token, you should send it to your application server, so it can use
+ * the FCM token to send notifications to your device.
+ */
+@property(nonatomic, readonly, nullable) NSString *FCMToken FIR_SWIFT_NAME(fcmToken);
+
+
+/**
+ * Retrieves an FCM registration token for a particular Sender ID. This can be used to allow
+ * multiple senders to send notifications to the same device. By providing a different Sender
+ * ID than your default when fetching a token, you can create a new FCM token which you can
+ * give to a different sender. Both tokens will deliver notifications to your device, and you
+ * can revoke a token when you need to.
+ *
+ * This registration token is not cached by FIRMessaging. FIRMessaging should have an APNS
+ * token set before calling this to ensure that notifications can be delivered via APNS using
+ * this FCM token. You may re-retrieve the FCM token once you have the APNS token set, to
+ * associate it with the FCM token. The default FCM token is automatically associated with
+ * the APNS token, if the APNS token data is available.
+ *
+ * @param senderID The Sender ID for a particular Firebase project.
+ * @param completion The completion handler to handle the token request.
+ */
+- (void)retrieveFCMTokenForSenderID:(nonnull NSString *)senderID
+ completion:(nonnull FIRMessagingFCMTokenFetchCompletion)completion
+ FIR_SWIFT_NAME(retrieveFCMToken(forSenderID:completion:));
+
+
+/**
+ * Invalidates an FCM token for a particular Sender ID. That Sender ID cannot no longer send
+ * notifications to that FCM token.
+ *
+ * @param senderID The senderID for a particular Firebase project.
+ * @param completion The completion handler to handle the token deletion.
+ */
+- (void)deleteFCMTokenForSenderID:(nonnull NSString *)senderID
+ completion:(nonnull FIRMessagingDeleteFCMTokenCompletion)completion
+ FIR_SWIFT_NAME(deleteFCMToken(forSenderID:completion:));
+
+
+#pragma mark - Connect
+
+/**
+ * Create a FIRMessaging data connection which will be used to send the data notifications
+ * sent 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.
+ *
+ *
+ * @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
+ FIR_SWIFT_NAME(connect(handler:))
+ __deprecated_msg("Please use the shouldEstablishDirectChannel property instead.");
+
+/**
+ * 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 the background, it is
+ * prudent to close the connection.
+ */
+- (void)disconnect
+ __deprecated_msg("Please use the shouldEstablishDirectChannel property instead.");
+
+#pragma mark - Topics
+
+/**
+ * Asynchronously subscribes to a topic.
+ *
+ * @param topic The name of the topic, for example, @"sports".
+ */
+- (void)subscribeToTopic:(nonnull NSString *)topic FIR_SWIFT_NAME(subscribe(toTopic:));
+
+/**
+ * Asynchronously unsubscribe from a topic.
+ *
+ * @param topic The name of the topic, for example @"sports".
+ */
+- (void)unsubscribeFromTopic:(nonnull NSString *)topic FIR_SWIFT_NAME(unsubscribe(fromTopic:));
+
+#pragma mark - Upstream
+
+/**
+ * Sends an upstream ("device to cloud") message.
+ *
+ * The message is queued if we don't have an active connection.
+ * You can only use the upstream feature if your FCM implementation
+ * uses the XMPP server protocol.
+ *
+ * @param message Key/Value pairs to be sent. Values must be String, any
+ * other type will be ignored.
+ * @param receiver A string identifying the receiver of the message. For FCM
+ * 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
+
+/**
+ * Use this to track message delivery and analytics for messages, typically
+ * when you receive a notification in `application:didReceiveRemoteNotification:`.
+ * However, you only need to call this if you set the `FirebaseAppDelegateProxyEnabled`
+ * flag to `NO` in your Info.plist. If `FirebaseAppDelegateProxyEnabled` is either missing
+ * or set to `YES` in your Info.plist, the library will call this automatically.
+ *
+ * @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/ios/FirebaseMessaging.framework/Headers/FirebaseMessaging.h b/ios/FirebaseMessaging.framework/Headers/FirebaseMessaging.h
new file mode 100755
index 0000000000..ef49e7ff7a
--- /dev/null
+++ b/ios/FirebaseMessaging.framework/Headers/FirebaseMessaging.h
@@ -0,0 +1 @@
+#import "FIRMessaging.h"
diff --git a/ios/FirebaseMessaging.framework/Modules/module.modulemap b/ios/FirebaseMessaging.framework/Modules/module.modulemap
new file mode 100755
index 0000000000..7fd2aab428
--- /dev/null
+++ b/ios/FirebaseMessaging.framework/Modules/module.modulemap
@@ -0,0 +1,6 @@
+framework module FirebaseMessaging {
+ umbrella header "FirebaseMessaging.h"
+ export *
+ module * { export *}
+ link "sqlite3"
+ link "z"}
diff --git a/ios/FirebaseNanoPB.framework/FirebaseNanoPB b/ios/FirebaseNanoPB.framework/FirebaseNanoPB
new file mode 100755
index 0000000000..ff9bef2d0f
Binary files /dev/null and b/ios/FirebaseNanoPB.framework/FirebaseNanoPB differ
diff --git a/ios/GoogleService-Info.plist b/ios/GoogleService-Info.plist
index 41f4728a86..6f67150642 100644
--- a/ios/GoogleService-Info.plist
+++ b/ios/GoogleService-Info.plist
@@ -30,6 +30,8 @@
IS_GCM_ENABLED
+ FIREBASE_ANALYTICS_COLLECTION_DEACTIVATED
+
IS_SIGNIN_ENABLED
GOOGLE_APP_ID
@@ -37,4 +39,4 @@
DATABASE_URL
https://status-react-app.firebaseio.com
-
\ No newline at end of file
+
diff --git a/ios/GoogleToolboxForMac.framework/GoogleToolboxForMac b/ios/GoogleToolboxForMac.framework/GoogleToolboxForMac
new file mode 100644
index 0000000000..e69343e7ef
Binary files /dev/null and b/ios/GoogleToolboxForMac.framework/GoogleToolboxForMac differ
diff --git a/ios/Podfile b/ios/Podfile
index c589ecce4c..6cc6f85dad 100644
--- a/ios/Podfile
+++ b/ios/Podfile
@@ -3,11 +3,11 @@
# Need to explicitly declare this avoid downgrade
# https://github.com/evollu/react-native-fcm/issues/420
-pod 'Firebase/Core', '4.0.0'
+#pod 'Firebase/Core', '4.0.0'
# react-native-fcm should support FB 4, but latest breaks builds, hence older version
# TODO(oskarth): Awaiting RN 0.47 upgrade, and/or PN working on iOS device before deciding which version to use
-pod 'Firebase/Messaging'
+#pod 'Firebase/Messaging'
#pod 'Firebase/Messaging', '3.17.0'
target 'StatusIm' do
diff --git a/ios/Podfile.lock b/ios/Podfile.lock
index 5e10e65d54..2908022843 100644
--- a/ios/Podfile.lock
+++ b/ios/Podfile.lock
@@ -1,47 +1,12 @@
PODS:
- - Firebase/Core (4.0.0):
- - FirebaseAnalytics (= 4.0.0)
- - FirebaseCore (= 4.0.0)
- - Firebase/Messaging (4.0.0):
- - Firebase/Core
- - FirebaseMessaging (= 2.0.0)
- - FirebaseAnalytics (4.0.0):
- - FirebaseCore (~> 4.0)
- - FirebaseInstanceID (~> 2.0)
- - GoogleToolboxForMac/NSData+zlib (~> 2.1)
- - FirebaseCore (4.0.0):
- - GoogleToolboxForMac/NSData+zlib (~> 2.1)
- - FirebaseInstanceID (2.0.0):
- - FirebaseCore (~> 4.0)
- - FirebaseMessaging (2.0.0):
- - FirebaseAnalytics (~> 4.0)
- - FirebaseCore (~> 4.0)
- - FirebaseInstanceID (~> 2.0)
- - GoogleToolboxForMac/Logger (~> 2.1)
- - Protobuf (~> 3.1)
- - GoogleToolboxForMac/Defines (2.1.1)
- - GoogleToolboxForMac/Logger (2.1.1):
- - GoogleToolboxForMac/Defines (= 2.1.1)
- - GoogleToolboxForMac/NSData+zlib (2.1.1):
- - GoogleToolboxForMac/Defines (= 2.1.1)
- Instabug (7.2.6)
- - Protobuf (3.3.0)
DEPENDENCIES:
- - Firebase/Core (= 4.0.0)
- - Firebase/Messaging
- Instabug (~> 7.0)
SPEC CHECKSUMS:
- Firebase: 284eea779b73fdff309791817da7c68bff8dd572
- FirebaseAnalytics: 6f08e746f7d66f5452931bc2e822b5df9c66b64a
- FirebaseCore: 85ad466044c2f013cdb167f85d426d15b128114a
- FirebaseInstanceID: 9fbf536668f4d3f0880e7438456dabd1376e294b
- FirebaseMessaging: 227406c05b0dc9290702d2e9f18ab5528f0c2cf2
- GoogleToolboxForMac: 8e329f1b599f2512c6b10676d45736bcc2cbbeb0
Instabug: 49d4fbf1bf14e2f9074dfb7774ca5611bae993b4
- Protobuf: d582fecf68201eac3d79ed61369ef45734394b9c
-PODFILE CHECKSUM: d05403e3fce258b6985bd3b614ffe02a0e01b9f7
+PODFILE CHECKSUM: c11933657144d38f2d6b795ee22feae483f90823
COCOAPODS: 1.3.1
diff --git a/ios/Protobuf.framework/Protobuf b/ios/Protobuf.framework/Protobuf
new file mode 100644
index 0000000000..b1c8c1bb2d
Binary files /dev/null and b/ios/Protobuf.framework/Protobuf differ
diff --git a/ios/StatusIm.xcodeproj/project.pbxproj b/ios/StatusIm.xcodeproj/project.pbxproj
index 5a3b1474f8..f1654258d8 100644
--- a/ios/StatusIm.xcodeproj/project.pbxproj
+++ b/ios/StatusIm.xcodeproj/project.pbxproj
@@ -44,6 +44,14 @@
82E689BAF9FB43C8AC6FF1CA /* EvilIcons.ttf in Resources */ = {isa = PBXBuildFile; fileRef = CEB0E2659D1A4F5FA842057A /* EvilIcons.ttf */; };
832341BD1AAA6AB300B99B32 /* libRCTText.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 832341B51AAA6A8300B99B32 /* libRCTText.a */; };
8E55E6877F950B81C8D711C5 /* libPods-StatusIm.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 101A4045637A2ADF57D28EF5 /* libPods-StatusIm.a */; };
+ 925C1F471F7B73B20063DFA0 /* FirebaseCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 925C1F401F7B73B20063DFA0 /* FirebaseCore.framework */; };
+ 925C1F481F7B73B20063DFA0 /* FirebaseCoreDiagnostics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 925C1F411F7B73B20063DFA0 /* FirebaseCoreDiagnostics.framework */; };
+ 925C1F491F7B73B20063DFA0 /* FirebaseInstanceID.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 925C1F421F7B73B20063DFA0 /* FirebaseInstanceID.framework */; };
+ 925C1F4A1F7B73B20063DFA0 /* FirebaseNanoPB.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 925C1F431F7B73B20063DFA0 /* FirebaseNanoPB.framework */; };
+ 925C1F4B1F7B73B20063DFA0 /* GoogleToolboxForMac.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 925C1F441F7B73B20063DFA0 /* GoogleToolboxForMac.framework */; };
+ 925C1F4C1F7B73B20063DFA0 /* nanopb.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 925C1F451F7B73B20063DFA0 /* nanopb.framework */; };
+ 925C1F811F7B73C00063DFA0 /* FirebaseMessaging.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 925C1F7F1F7B73C00063DFA0 /* FirebaseMessaging.framework */; };
+ 925C1F821F7B73C00063DFA0 /* Protobuf.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 925C1F801F7B73C00063DFA0 /* Protobuf.framework */; };
92A0DF7D1F4DE3A4002051BC /* GoogleService-Info.plist in Resources */ = {isa = PBXBuildFile; fileRef = 92A0DF491F4DE3A0002051BC /* GoogleService-Info.plist */; };
9E0B01A11DDC5DA7002B0359 /* SF-UI-Text-Light.otf in Resources */ = {isa = PBXBuildFile; fileRef = 9E0B01A01DDC5DA7002B0359 /* SF-UI-Text-Light.otf */; };
9E3AB6D01D87DB2B008846B4 /* libReact-Native-Webview-Bridge.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 9E3AB6C61D87DA2B008846B4 /* libReact-Native-Webview-Bridge.a */; };
@@ -525,6 +533,14 @@
8AE71EE8751F4652B13BFE83 /* RNVectorIcons.xcodeproj */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = "wrapper.pb-project"; name = RNVectorIcons.xcodeproj; path = "../node_modules/react-native-vector-icons/RNVectorIcons.xcodeproj"; sourceTree = ""; };
8B9A886A2CB448B1ABA0EB62 /* libc++.tbd */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = "sourcecode.text-based-dylib-definition"; name = "libc++.tbd"; path = "usr/lib/libc++.tbd"; sourceTree = SDKROOT; };
922C4CA61F4D5F8B0033C753 /* StatusIm.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; name = StatusIm.entitlements; path = StatusIm/StatusIm.entitlements; sourceTree = ""; };
+ 925C1F401F7B73B20063DFA0 /* FirebaseCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; path = FirebaseCore.framework; sourceTree = ""; };
+ 925C1F411F7B73B20063DFA0 /* FirebaseCoreDiagnostics.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; path = FirebaseCoreDiagnostics.framework; sourceTree = ""; };
+ 925C1F421F7B73B20063DFA0 /* FirebaseInstanceID.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; path = FirebaseInstanceID.framework; sourceTree = ""; };
+ 925C1F431F7B73B20063DFA0 /* FirebaseNanoPB.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; path = FirebaseNanoPB.framework; sourceTree = ""; };
+ 925C1F441F7B73B20063DFA0 /* GoogleToolboxForMac.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; path = GoogleToolboxForMac.framework; sourceTree = ""; };
+ 925C1F451F7B73B20063DFA0 /* nanopb.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; path = nanopb.framework; sourceTree = ""; };
+ 925C1F7F1F7B73C00063DFA0 /* FirebaseMessaging.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; path = FirebaseMessaging.framework; sourceTree = ""; };
+ 925C1F801F7B73C00063DFA0 /* Protobuf.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; path = Protobuf.framework; sourceTree = ""; };
92A0DF491F4DE3A0002051BC /* GoogleService-Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = "GoogleService-Info.plist"; sourceTree = ""; };
9E0B01A01DDC5DA7002B0359 /* SF-UI-Text-Light.otf */ = {isa = PBXFileReference; lastKnownFileType = file; path = "SF-UI-Text-Light.otf"; sourceTree = ""; };
9E3AB6B21D87DA2A008846B4 /* React-Native-Webview-Bridge.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = "React-Native-Webview-Bridge.xcodeproj"; path = "../node_modules/react-native-webview-bridge/ios/React-Native-Webview-Bridge.xcodeproj"; sourceTree = ""; };
@@ -576,15 +592,20 @@
buildActionMask = 2147483647;
files = (
B2DEA0D01E49E33300FA28D6 /* libRCTHttpServer.a in Frameworks */,
+ 925C1F481F7B73B20063DFA0 /* FirebaseCoreDiagnostics.framework in Frameworks */,
9EE89E271E03FCB7007D3C25 /* libSplashScreen.a in Frameworks */,
+ 925C1F811F7B73C00063DFA0 /* FirebaseMessaging.framework in Frameworks */,
+ 925C1F4A1F7B73B20063DFA0 /* FirebaseNanoPB.framework in Frameworks */,
B2A5F45C1DEC36BB00174F4D /* libRCTAnimation.a in Frameworks */,
B24FC7FF1DE7195F00D694FF /* MessageUI.framework in Frameworks */,
B24FC7FD1DE7195700D694FF /* Social.framework in Frameworks */,
+ 925C1F4B1F7B73B20063DFA0 /* GoogleToolboxForMac.framework in Frameworks */,
9EE89E2D1E03FD9F007D3C25 /* libimageCropPicker.a in Frameworks */,
9E3AB6D01D87DB2B008846B4 /* libReact-Native-Webview-Bridge.a in Frameworks */,
20B6B6841D92C42600CC5C6A /* RSKImageCropper.framework in Frameworks */,
CE4E31B31D8695250033ED64 /* Statusgo.framework in Frameworks */,
20AB9EC61D47CC0300E7FD9C /* libRCTStatus.a in Frameworks */,
+ 925C1F471F7B73B20063DFA0 /* FirebaseCore.framework in Frameworks */,
20B6B6871D92C42600CC5C6A /* QBImagePicker.framework in Frameworks */,
146834051AC3E58100842450 /* libReact.a in Frameworks */,
00C302E51ABCBA2D00DB3ED1 /* libRCTActionSheet.a in Frameworks */,
@@ -592,6 +613,8 @@
00C302E81ABCBA2D00DB3ED1 /* libRCTImage.a in Frameworks */,
133E29F31AD74F7200F7D852 /* libRCTLinking.a in Frameworks */,
00C302E91ABCBA2D00DB3ED1 /* libRCTNetwork.a in Frameworks */,
+ 925C1F821F7B73C00063DFA0 /* Protobuf.framework in Frameworks */,
+ 925C1F4C1F7B73B20063DFA0 /* nanopb.framework in Frameworks */,
139105C61AF99C1200B5F7CC /* libRCTSettings.a in Frameworks */,
832341BD1AAA6AB300B99B32 /* libRCTText.a in Frameworks */,
00C302EA1ABCBA2D00DB3ED1 /* libRCTVibration.a in Frameworks */,
@@ -612,6 +635,7 @@
9E54D6001F17A5DB009F0C16 /* libTestFairy.a in Frameworks */,
5F8585D411844E5981B94F40 /* libRNInstabug.a in Frameworks */,
8E55E6877F950B81C8D711C5 /* libPods-StatusIm.a in Frameworks */,
+ 925C1F491F7B73B20063DFA0 /* FirebaseInstanceID.framework in Frameworks */,
9EE470511ED0079E0048FD10 /* Mapbox.framework in Frameworks */,
9EE470541ED007E10048FD10 /* libRCTMapboxGL.a in Frameworks */,
9EF0836B1F3B53AB00876A8F /* libReactNativeConfig.a in Frameworks */,
@@ -1030,6 +1054,14 @@
A97BA941B2FB44B4B66EE6D3 /* Frameworks */ = {
isa = PBXGroup;
children = (
+ 925C1F7F1F7B73C00063DFA0 /* FirebaseMessaging.framework */,
+ 925C1F801F7B73C00063DFA0 /* Protobuf.framework */,
+ 925C1F401F7B73B20063DFA0 /* FirebaseCore.framework */,
+ 925C1F411F7B73B20063DFA0 /* FirebaseCoreDiagnostics.framework */,
+ 925C1F421F7B73B20063DFA0 /* FirebaseInstanceID.framework */,
+ 925C1F431F7B73B20063DFA0 /* FirebaseNanoPB.framework */,
+ 925C1F441F7B73B20063DFA0 /* GoogleToolboxForMac.framework */,
+ 925C1F451F7B73B20063DFA0 /* nanopb.framework */,
B24FC7FE1DE7195F00D694FF /* MessageUI.framework */,
B24FC7FC1DE7195700D694FF /* Social.framework */,
20A5C96E1D92716C002C4965 /* QBImagePicker.framework */,
diff --git a/ios/nanopb.framework/nanopb b/ios/nanopb.framework/nanopb
new file mode 100644
index 0000000000..361d227d52
Binary files /dev/null and b/ios/nanopb.framework/nanopb differ