NOTE react-native-link may add the RNGoogleSignin podspec to your Podfile. If your Podfile looks roughly like the one described here then this is likely what you want, but otherwise you may get stuck with build errors. If your Podfile does not refer to the React podspec, then you probably do not want to use the RNGoogleSignin podspec and we recommend that you rename or delete the RNGoogleSignin.podspec file from node_modules/react-native-google-signin and only then run react-native link react-native-google-signin. This is a one-time operation that you won't need to repeat later. We hope to improve this behavior later on - PRs are welcome.
There are two ways to link the module:
- automatic
react-native link react-native-google-signin
- manual
- In XCode, in the project navigator, right click Libraries ➜ Add Files to [your project's name]
- Go to
node_modules➜react-native-google-signin➜iosand addRNGoogleSignin.xcodeproj - In XCode, in the project navigator, select your project. Add
libRNGoogleSignin.ato your project's Build Phases ➜ Link Binary With Libraries
Again, we offer two ways to do this: with and without Cocoapods. Note that we require Google Sign In SDK version >= 4.3.0!
- install the Google Signin SDK with CocoaPods: add
pod 'GoogleSignIn', '~> 4.4.0'in your Podfile and runpod install
First time using cocoapods ? check this out
At the end, the dependencis should be linked like in this picture (this is with pods).
- download the GoogleSignIn SDK from here and unzip it. Drag and drop the unzipped
.frameworkfiles into theFrameworksgroup in Xcode and copyGoogleSignIn.bundleto your project. During copying, checkcopy items if needed. - make sure
GoogleSignIn.bundleis added in your Xcode project's Copy Bundle Resources build phase.
NOTE according to google sign in docs you may also need to do this: In -> Build Phases -> Link binary with libraries step, add libRNGoogleSignin.a, AddressBook.framework, SafariServices.framework, SystemConfiguration.framework and libz.tbd. We have found it not to be necessary for a successful build, but we recommend to follow Google's installation instructions!
At the end, the dependencis should be linked like in this picture (this is without pods).
-
Follow this guide to get the configuration file.
-
Download the
GoogleService-Info.plistfile at the end of the process
- Configure URL types in the
Infopanel (see screenshot)- add a URL with scheme set to your
REVERSED_CLIENT_ID(found insideGoogleService-Info.plist)
- add a URL with scheme set to your
This is only required if you have multiple listeners for openURL - for instance if you have both Google and Facebook OAuth.
Because only one openURL method can be defined, if you have multiple listeners for openURL, you must combine them into a single function in your AppDelegate.m like so:
- Open
AppDelegate.m - Add an import:
#import <RNGoogleSignin/RNGoogleSignin.h>(if this one will not work try#import "RNGoogleSignin.h"). If this file cannot be found, you need to modify your header search paths so Xcode can find headers ofreact-native-google-signin. For example, when using the non-cocoapods installation, make sure that$(SRCROOT)/../node_modules/react-native-google-signin/iosis included in your target's header search paths. - Add a method to respond to the URL scheme:
// AppDelegate.m
- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url options:(NSDictionary<UIApplicationOpenURLOptionsKey,id> *)options
{
return [[FBSDKApplicationDelegate sharedInstance] application:application openURL:url sourceApplication:options[UIApplicationOpenURLOptionsSourceApplicationKey] annotation:options[UIApplicationOpenURLOptionsAnnotationKey]]
|| [RNGoogleSignin application:application openURL:url sourceApplication:options[UIApplicationOpenURLOptionsSourceApplicationKey] annotation:options[UIApplicationOpenURLOptionsAnnotationKey]];
}If you're targeting iOS 9 or newer, you'll want to use the application:openURL:options: method as shown in the following snippet:
- (BOOL)application:(UIApplication *)application openURL:(nonnull NSURL *)url options:(nonnull NSDictionary<NSString *,id> *)options {
return [RNGoogleSignin application:application
openURL:url
sourceApplication:options[UIApplicationOpenURLOptionsSourceApplicationKey]
annotation:options[UIApplicationOpenURLOptionsAnnotationKey]];
}You may also use the deprecated application:openURL:sourceApplication:annotation: method:
- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url
sourceApplication:(NSString *)sourceApplication annotation:(id)annotation {
return [RNGoogleSignin application:application
openURL:url
sourceApplication:sourceApplication
annotation:annotation
];
}

