From a95036128e9e3f3eb40479fcf2af4b5a3ee59f22 Mon Sep 17 00:00:00 2001 From: Takehiro Iyatomi Date: Fri, 6 Sep 2019 12:40:06 +0900 Subject: [PATCH 1/2] - various fix for running this project with recent version of Unity and google signin libraries - removes Unity.Tasks.dll because recent Unity has built in support for it - removes missing symbols of GIDSignin (function, error code) - swap preStartUnity instead of application:didFinishLaunchingWithOptions: because recent GIDSignin required to set presentingViewController to work, and correct UIViewController cannot be retrieved application:didFinishLaunchingWithOptions timing. - add general PostProcessor to generated Unity Xcode project can run with OAuth credentials settings --- .gitignore | 7 +++ .../Editor/UnityEditorPostProcessor.cs | 49 ++++++++++++++++++ .../Editor/UnityEditorPostProcessor.cs.meta | 11 ++++ .../Assets/Parse/Plugins/Unity.Tasks.dll | Bin 26624 -> 0 bytes .../Assets/Parse/Plugins/Unity.Tasks.dll.meta | 36 ------------- .../Plugins/iOS/GoogleSignIn/GoogleSignIn.h | 2 +- .../Plugins/iOS/GoogleSignIn/GoogleSignIn.mm | 5 +- .../GoogleSignIn/GoogleSignInAppController.mm | 25 +++------ 8 files changed, 76 insertions(+), 59 deletions(-) create mode 100644 GoogleSignInPlugin/Assets/GoogleSignIn/Editor/UnityEditorPostProcessor.cs create mode 100644 GoogleSignInPlugin/Assets/GoogleSignIn/Editor/UnityEditorPostProcessor.cs.meta delete mode 100644 GoogleSignInPlugin/Assets/Parse/Plugins/Unity.Tasks.dll delete mode 100644 GoogleSignInPlugin/Assets/Parse/Plugins/Unity.Tasks.dll.meta diff --git a/.gitignore b/.gitignore index 20168e73..3856f369 100644 --- a/.gitignore +++ b/.gitignore @@ -15,12 +15,16 @@ Library/ ProjectSettings/ Temp/ obj/ +Logs/ +Packages/ # Don't check in the resolver GoogleSignInPlugin/Assets/PlayServicesResolver/ +PlayServicesResolver.meta # don't checkin client plists GoogleSignInPlugin/Assets/Plugins/iOS/client*.plist* +GoogleService-Info.plist* Assembly-CSharp-Editor.csproj Assembly-CSharp.csproj @@ -31,3 +35,6 @@ staging/native/google-signin-cpp # don't check in iOS pod generated content contents.xcworkspacedata staging/native/testapp/testapp.xcodeproj/project.xcworkspace/xcuserdata + +# osx +.DS_Store diff --git a/GoogleSignInPlugin/Assets/GoogleSignIn/Editor/UnityEditorPostProcessor.cs b/GoogleSignInPlugin/Assets/GoogleSignIn/Editor/UnityEditorPostProcessor.cs new file mode 100644 index 00000000..ac402fa1 --- /dev/null +++ b/GoogleSignInPlugin/Assets/GoogleSignIn/Editor/UnityEditorPostProcessor.cs @@ -0,0 +1,49 @@ +using System.IO; + +using UnityEditor; +using UnityEditor.Callbacks; +using UnityEditor.iOS.Xcode; + +namespace Google { + public static class UnityEditorPostProessorForSignin { + const string PLIST_FILE_NAME= "GoogleService-Info.plist"; + [PostProcessBuild] + public static void OnPostProcessBuild(BuildTarget buildTarget, string path) + { + // Go get pbxproj file + string projPath = path + "/Unity-iPhone.xcodeproj/project.pbxproj"; + + // PBXProject class represents a project build settings file, + // here is how to read that in. + PBXProject proj = new PBXProject (); + proj.ReadFromFile (projPath); + + // This is the Xcode target in the generated project + string target = proj.TargetGuidByName ("Unity-iPhone"); + + string[] files = Directory.GetFiles("Assets", PLIST_FILE_NAME, SearchOption.AllDirectories); + if (files.Length > 0) { + // Copy plist from the project folder to the build folder + FileUtil.CopyFileOrDirectory (files[0], Path.Combine(path, PLIST_FILE_NAME)); + proj.AddFileToBuild (target, proj.AddFile(PLIST_FILE_NAME, PLIST_FILE_NAME)); + + // add URLType + var plistPath = Path.Combine(path, "Info.plist"); + var plistCred = new PlistDocument(); + plistCred.ReadFromFile(files[0]); + var plistInfo = new PlistDocument(); + plistInfo.ReadFromFile(plistPath); + var urlentry = plistInfo.root.CreateArray("CFBundleURLTypes") + .AddDict(); + urlentry.SetString("CFBundleTypeRole", "Editor"); + urlentry.CreateArray("CFBundleURLSchemes").AddString( + plistCred.root["REVERSED_CLIENT_ID"].AsString() + ); + plistInfo.WriteToFile(plistPath); + + // Write PBXProject object back to the file + proj.WriteToFile (projPath); + } + } + } +} diff --git a/GoogleSignInPlugin/Assets/GoogleSignIn/Editor/UnityEditorPostProcessor.cs.meta b/GoogleSignInPlugin/Assets/GoogleSignIn/Editor/UnityEditorPostProcessor.cs.meta new file mode 100644 index 00000000..41166df1 --- /dev/null +++ b/GoogleSignInPlugin/Assets/GoogleSignIn/Editor/UnityEditorPostProcessor.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: e2e7d3fdaa15642f795db208da6b0581 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/GoogleSignInPlugin/Assets/Parse/Plugins/Unity.Tasks.dll b/GoogleSignInPlugin/Assets/Parse/Plugins/Unity.Tasks.dll deleted file mode 100644 index a3a564f3153b2805067965ee53314c28a5c551e9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 26624 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 bhPKO&Q_8LC?;9P @interface GoogleSignInHandler - : NSObject + : NSObject @end diff --git a/GoogleSignInPlugin/Assets/Plugins/iOS/GoogleSignIn/GoogleSignIn.mm b/GoogleSignInPlugin/Assets/Plugins/iOS/GoogleSignIn/GoogleSignIn.mm index 9b82a370..c93c2fb0 100644 --- a/GoogleSignInPlugin/Assets/Plugins/iOS/GoogleSignIn/GoogleSignIn.mm +++ b/GoogleSignInPlugin/Assets/Plugins/iOS/GoogleSignIn/GoogleSignIn.mm @@ -105,9 +105,6 @@ - (void)signIn:(GIDSignIn *)signIn case kGIDSignInErrorCodeKeychain: currentResult_->result_code = kStatusCodeInternalError; break; - case kGIDSignInErrorCodeNoSignInHandlersInstalled: - currentResult_->result_code = kStatusCodeDeveloperError; - break; case kGIDSignInErrorCodeHasNoAuthInKeychain: currentResult_->result_code = kStatusCodeError; break; @@ -239,7 +236,7 @@ bool GoogleSignIn_Configure(void *unused, bool useGameSignIn, void *GoogleSignIn_SignInSilently() { SignInResult *result = startSignIn(); if (!result) { - [[GIDSignIn sharedInstance] signInSilently]; + [[GIDSignIn sharedInstance] signIn]; result = currentResult_.get(); } return result; diff --git a/GoogleSignInPlugin/Assets/Plugins/iOS/GoogleSignIn/GoogleSignInAppController.mm b/GoogleSignInPlugin/Assets/Plugins/iOS/GoogleSignIn/GoogleSignInAppController.mm index 33631489..3fa88c18 100644 --- a/GoogleSignInPlugin/Assets/Plugins/iOS/GoogleSignIn/GoogleSignInAppController.mm +++ b/GoogleSignInPlugin/Assets/Plugins/iOS/GoogleSignIn/GoogleSignInAppController.mm @@ -39,10 +39,10 @@ + (void)load { Method swizzled; original = class_getInstanceMethod( - self, @selector(application:didFinishLaunchingWithOptions:)); + self, @selector(preStartUnity)); swizzled = class_getInstanceMethod( self, - @selector(GoogleSignInAppController:didFinishLaunchingWithOptions:)); + @selector(GoogleSignInAppController_preStartUnity)); method_exchangeImplementations(original, swizzled); original = class_getInstanceMethod( @@ -59,8 +59,7 @@ + (void)load { method_exchangeImplementations(original, swizzled); } -- (BOOL)GoogleSignInAppController:(UIApplication *)application - didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { +- (void)GoogleSignInAppController_preStartUnity { // IMPORTANT: IF you are not supplying a GoogleService-Info.plist in your // project that contains the client id, you need to set the client id here. @@ -75,13 +74,12 @@ - (BOOL)GoogleSignInAppController:(UIApplication *)application // Setup the Sign-In instance. GIDSignIn *signIn = [GIDSignIn sharedInstance]; signIn.clientID = clientId; - signIn.uiDelegate = gsiHandler; signIn.delegate = gsiHandler; + signIn.presentingViewController = UnityGetGLViewController(); // looks like it's just calling itself, but the implementations were swapped // so we're actually calling the original once we're done - return [self GoogleSignInAppController:application - didFinishLaunchingWithOptions:launchOptions]; + [self GoogleSignInAppController_preStartUnity]; } /** @@ -96,10 +94,7 @@ - (BOOL)GoogleSignInAppController:(UIApplication *)application sourceApplication:sourceApplication annotation:annotation]; - return [[GIDSignIn sharedInstance] handleURL:url - sourceApplication:sourceApplication - annotation:annotation] || - handled; + return [[GIDSignIn sharedInstance] handleURL:url] || handled; } /** @@ -112,13 +107,7 @@ - (BOOL)GoogleSignInAppController:(UIApplication *)app BOOL handled = [self GoogleSignInAppController:app openURL:url options:options]; - return [[GIDSignIn sharedInstance] - handleURL:url - sourceApplication: - options[UIApplicationOpenURLOptionsSourceApplicationKey] - annotation: - options[UIApplicationOpenURLOptionsAnnotationKey]] || - handled; + return [[GIDSignIn sharedInstance] handleURL:url] || handled; } @end From 56d361bef938b7bc2981a30f01f020cea7c9e722 Mon Sep 17 00:00:00 2001 From: Takehiro Iyatomi Date: Mon, 9 Sep 2019 08:26:09 +0900 Subject: [PATCH 2/2] recover silent signin --- GoogleSignInPlugin/Assets/GoogleSignIn/GoogleSignIn.cs | 5 +++++ .../Assets/GoogleSignIn/Impl/GoogleSignInImpl.cs | 9 +++++++++ .../Assets/Plugins/iOS/GoogleSignIn/GoogleSignIn.mm | 6 +++++- 3 files changed, 19 insertions(+), 1 deletion(-) diff --git a/GoogleSignInPlugin/Assets/GoogleSignIn/GoogleSignIn.cs b/GoogleSignInPlugin/Assets/GoogleSignIn/GoogleSignIn.cs index c59ced72..7a225972 100644 --- a/GoogleSignInPlugin/Assets/GoogleSignIn/GoogleSignIn.cs +++ b/GoogleSignInPlugin/Assets/GoogleSignIn/GoogleSignIn.cs @@ -121,6 +121,10 @@ public Task SignIn() { return tcs.Task; } + public bool SignInCanBeSilent { + get { return impl.SignInCanBeSilent; } + } + /// Starts the silent authentication process. /// /// The authenication process is started and will attempt to sign in without @@ -195,6 +199,7 @@ public GoogleSignInStatusCode Status { internal interface ISignInImpl { Future SignIn(); Future SignInSilently(); + bool SignInCanBeSilent { get; } void EnableDebugLogging(bool flag); void SignOut(); void Disconnect(); diff --git a/GoogleSignInPlugin/Assets/GoogleSignIn/Impl/GoogleSignInImpl.cs b/GoogleSignInPlugin/Assets/GoogleSignIn/Impl/GoogleSignInImpl.cs index 78c8081f..499799c9 100644 --- a/GoogleSignInPlugin/Assets/GoogleSignIn/Impl/GoogleSignInImpl.cs +++ b/GoogleSignInPlugin/Assets/GoogleSignIn/Impl/GoogleSignInImpl.cs @@ -66,6 +66,12 @@ public Future SignIn() { return new Future(new NativeFuture(nativeFuture)); } + public bool SignInCanBeSilent { + get { + return GoogleSignIn_CanBeSilent(SelfPtr()); + } + } + /// /// Starts the authentication process. /// @@ -133,6 +139,9 @@ static extern bool GoogleSignIn_Configure(HandleRef self, [DllImport(DllName)] internal static extern bool GoogleSignIn_Pending(HandleRef self); + [DllImport(DllName)] + internal static extern bool GoogleSignIn_CanBeSilent(HandleRef self); + [DllImport(DllName)] internal static extern IntPtr GoogleSignIn_Result(HandleRef self); diff --git a/GoogleSignInPlugin/Assets/Plugins/iOS/GoogleSignIn/GoogleSignIn.mm b/GoogleSignInPlugin/Assets/Plugins/iOS/GoogleSignIn/GoogleSignIn.mm index c93c2fb0..eba6ed10 100644 --- a/GoogleSignInPlugin/Assets/Plugins/iOS/GoogleSignIn/GoogleSignIn.mm +++ b/GoogleSignInPlugin/Assets/Plugins/iOS/GoogleSignIn/GoogleSignIn.mm @@ -229,6 +229,10 @@ bool GoogleSignIn_Configure(void *unused, bool useGameSignIn, return result; } +bool GoogleSignIn_CanBeSilent() { + return [GIDSignIn sharedInstance].hasPreviousSignIn; +} + /** * Attempt a silent sign-in. Return value is the pointer to the currentResult * object. @@ -236,7 +240,7 @@ bool GoogleSignIn_Configure(void *unused, bool useGameSignIn, void *GoogleSignIn_SignInSilently() { SignInResult *result = startSignIn(); if (!result) { - [[GIDSignIn sharedInstance] signIn]; + [[GIDSignIn sharedInstance] restorePreviousSignIn]; result = currentResult_.get(); } return result;