Compare commits

...

13 Commits
main ... iOS

Author SHA1 Message Date
Hazim Bin Ijaz bc0227971d Refactored the google sign in manager 1 month ago
TG9six daaa423b2d Update GoogleSignInManager.cs 1 month ago
TG9six 5be830c1f3 Updated the SDK 1 month ago
Hazim Bin Ijaz a23c6f534b Silent login fix 2 months ago
Hazim Bin Ijaz 4c3c1c7029 PErmisionn asking after osn init 2 months ago
Hazim Bin Ijaz 75b8566426 Requesting user permission before OSn init 2 months ago
Hazim Bin Ijaz 4b73088635 Wait for OSN 2 months ago
Hazim Bin Ijaz 9d3f1e1e26 Update GoogleSignInManager.cs 2 months ago
Hazim Bin Ijaz 1439d53106 Added debug to see auth code 2 months ago
Hazim Bin Ijaz 88b265d6c9 Update GoogleSignInIOSBuildPatch.cs 2 months ago
Hazim Bin Ijaz 0962b33d64 Update GoogleSignInIOSBuildPatch.cs 2 months ago
Hazim Bin Ijaz 2e4278a0cc Added a preprocessor script 2 months ago
Hazim Bin Ijaz 945aac36af Did some changes for iOS 2 months ago

BIN
.DS_Store vendored

Binary file not shown.

BIN
Assets/.DS_Store vendored

Binary file not shown.

@ -0,0 +1,14 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>CLIENT_ID</key>
<string>1021701058525-vp54583d95oknnamu739smqfihhoivnk.apps.googleusercontent.com</string>
<key>REVERSED_CLIENT_ID</key>
<string>com.googleusercontent.apps.1021701058525-vp54583d95oknnamu739smqfihhoivnk</string>
<key>SERVER_CLIENT_ID</key>
<string>1021701058525-72qg4sbvqv3m3q7it4eck2h86ekoflla.apps.googleusercontent.com</string>
<key>BUNDLE_ID</key>
<string>com.rizze.pipuzzle</string>
</dict>
</plist>

@ -1,5 +1,5 @@
fileFormatVersion: 2
guid: a55ee4efaad27d948ba5f03fc6d7bc80
guid: 1b9e8786ff7ad4966bcef466f4935744
DefaultImporter:
externalObjects: {}
userData:

Binary file not shown.

Binary file not shown.

@ -12,7 +12,7 @@
<!-- iOS Cocoapod dependencies can be specified by each iosPod element. -->
<iosPods>
<iosPod name="GoogleSignIn" version="&lt; 5.0.0" bitcodeEnabled="false"
<iosPod name="GoogleSignIn" version="8.0.0" bitcodeEnabled="false"
minTargetSdk="6.0">
</iosPod>
</iosPods>

@ -2,9 +2,9 @@ fileFormatVersion: 2
guid: 938014c9994164100b26d82840a88fbb
labels:
- gvh
- gvh_version-1.0.4
timeCreated: 1507661087
licenseType: Pro
TextScriptImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

@ -1,11 +0,0 @@
<?xml version="1.0" encoding="UTF-8" ?>
<dependencies>
<!-- Internal library dependency generated at build time. -->
<androidPackages>
<androidPackage spec="com.google.signin:google-signin-support:1.0.4">
<repositories>
<repository>Assets/GoogleSignIn/Editor/m2repository</repository>
</repositories>
</androidPackage>
</androidPackages>
</dependencies>

@ -1,10 +0,0 @@
fileFormatVersion: 2
guid: e8689106c65f445c19cec6044d615c19
labels:
- gvh
- gvh_version-1.0.4
TextScriptImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

@ -1,33 +1,27 @@
Assets/PlayServicesResolver/Editor/Google.VersionHandlerImpl_v1.2.89.0.dll
Assets/PlayServicesResolver/Editor/Google.IOSResolver_v1.2.89.0.dll
Assets/PlayServicesResolver/Editor/Google.VersionHandler.dll
Assets/PlayServicesResolver/Editor/Google.JarResolver_v1.2.89.0.dll
Assets/Plugins/iOS/GoogleSignIn/GoogleSignInAppController.mm
Assets/Plugins/iOS/GoogleSignIn/GoogleSignInAppController.h
Assets/Plugins/iOS/GoogleSignIn/GoogleSignIn.h
Assets/Plugins/iOS/GoogleSignIn/GoogleSignIn.mm
Assets/Parse/LICENSE
Assets/Parse/Plugins/Unity.Compat.dll
Assets/Parse/Plugins/Unity.Tasks.dll
Assets/SignInSample/MainScene.unity
Assets/SignInSample/SigninSampleScript.cs
Assets/GoogleSignIn/Impl/GoogleSignInImpl.cs
Assets/GoogleSignIn/Impl/SignInHelperObject.cs
Assets/GoogleSignIn/Impl/NativeFuture.cs
Assets/GoogleSignIn/Impl/BaseObject.cs
Assets/GoogleSignIn/Editor/GoogleSignInDependencies.xml
Assets/GoogleSignIn/Editor/m2repository/com/google/signin/google-signin-support/1.0.1/google-signin-support-1.0.1.aar
Assets/GoogleSignIn/Editor/m2repository/com/google/signin/google-signin-support/1.0.1/google-signin-support-1.0.1.aar.md5
Assets/GoogleSignIn/Editor/m2repository/com/google/signin/google-signin-support/1.0.1/google-signin-support-1.0.1.aar.sha1
Assets/GoogleSignIn/Editor/m2repository/com/google/signin/google-signin-support/1.0.1/google-signin-support-1.0.1.pom
Assets/GoogleSignIn/Editor/m2repository/com/google/signin/google-signin-support/1.0.1/google-signin-support-1.0.1.pom.md5
Assets/GoogleSignIn/Editor/m2repository/com/google/signin/google-signin-support/1.0.1/google-signin-support-1.0.1.pom.sha1
Assets/GoogleSignIn/Future.cs
Assets/GoogleSignIn/GoogleSignIn.cs
Assets/GoogleSignIn/GoogleSignInConfiguration.cs
Assets/GoogleSignIn/Future.cs
Assets/GoogleSignIn/GoogleSignInUser.cs
Assets/GoogleSignIn/GoogleSignInStatusCode.cs
Assets/GoogleSignIn/Editor/GoogleSignInDependencies.xml
Assets/GoogleSignIn/Editor/GoogleSignInSupportDependencies.xml
Assets/GoogleSignIn/Editor/m2repository/com/google/signin/google-signin-support/maven-metadata.xml
Assets/GoogleSignIn/Editor/m2repository/com/google/signin/google-signin-support/maven-metadata.xml.md5
Assets/GoogleSignIn/Editor/m2repository/com/google/signin/google-signin-support/maven-metadata.xml.sha1
Assets/GoogleSignIn/Editor/m2repository/com/google/signin/google-signin-support/1.0.4/google-signin-support-1.0.4.pom.md5
Assets/GoogleSignIn/Editor/m2repository/com/google/signin/google-signin-support/1.0.4/google-signin-support-1.0.4.srcaar.sha1
Assets/GoogleSignIn/Editor/m2repository/com/google/signin/google-signin-support/1.0.4/google-signin-support-1.0.4.pom.sha1
Assets/GoogleSignIn/Editor/m2repository/com/google/signin/google-signin-support/1.0.4/google-signin-support-1.0.4.srcaar
Assets/GoogleSignIn/Editor/m2repository/com/google/signin/google-signin-support/1.0.4/google-signin-support-1.0.4.pom
Assets/GoogleSignIn/Editor/m2repository/com/google/signin/google-signin-support/1.0.4/google-signin-support-1.0.4.srcaar.md5
Assets/GoogleSignIn/GoogleSignInUser.cs
Assets/GoogleSignIn/Impl/BaseObject.cs
Assets/GoogleSignIn/Impl/GoogleSignInImpl.cs
Assets/GoogleSignIn/Impl/NativeFuture.cs
Assets/GoogleSignIn/Impl/SignInHelperObject.cs
Assets/Parse/LICENSE
Assets/Parse/Plugins/Unity.Compat.dll
Assets/Parse/Plugins/Unity.Tasks.dll
Assets/PlayServicesResolver/Editor/Google.IOSResolver_v1.2.54.0.dll
Assets/PlayServicesResolver/Editor/Google.JarResolver_v1.2.54.0.dll
Assets/PlayServicesResolver/Editor/Google.VersionHandler.dll
Assets/PlayServicesResolver/Editor/Google.VersionHandlerImpl_v1.2.54.0.dll
Assets/PlayServicesResolver/Editor/play-services-resolver_v1.2.54.0.txt
Assets/Plugins/Android/native-googlesignin-release.aar
Assets/Plugins/iOS/GoogleSignIn/GoogleSignInAppController.h
Assets/Plugins/iOS/GoogleSignIn/GoogleSignInAppController.mm

@ -1,9 +1,9 @@
fileFormatVersion: 2
guid: a67d5f0cfc09749e6b1ce13e8b8e6e1d
guid: 817a6673340324b8ca85e24466f60953
labels:
- gvh
- gvh_manifest
- gvh_version-1.0.4
- gvh_version-1.0.1
TextScriptImporter:
externalObjects: {}
userData:

@ -1,10 +0,0 @@
fileFormatVersion: 2
guid: 001a15402063b4df983ba8bc4ddb269f
folderAsset: yes
timeCreated: 1537405253
licenseType: Pro
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

@ -1,9 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<modelVersion>4.0.0</modelVersion>
<groupId>com.google.signin</groupId>
<artifactId>google-signin-support</artifactId>
<version>1.0.4</version>
<packaging>srcaar</packaging>
</project>

@ -1,10 +0,0 @@
fileFormatVersion: 2
guid: 907bf7a19cd7848cabf1f641f61343ee
labels:
- gvh
- gvh_version-1.0.4
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

@ -1,10 +0,0 @@
fileFormatVersion: 2
guid: a3f74b3d329a24e81a6c6f9f1d2f46f1
labels:
- gvh
- gvh_version-1.0.4
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

@ -1,10 +0,0 @@
fileFormatVersion: 2
guid: e1a3ff77f802d43818521ff3db2bf944
labels:
- gvh
- gvh_version-1.0.4
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

@ -1,10 +0,0 @@
fileFormatVersion: 2
guid: 79f9d122dd99b483282294f3b1f1bd36
labels:
- gvh
- gvh_version-1.0.4
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

@ -1,10 +0,0 @@
fileFormatVersion: 2
guid: 6eab7a3cbdbf34cffaf951dc9210a32c
labels:
- gvh
- gvh_version-1.0.4
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

@ -1,10 +0,0 @@
fileFormatVersion: 2
guid: d508eb0e16bb14c8a962b343e755ef01
labels:
- gvh
- gvh_version-1.0.4
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

@ -1,12 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<metadata>
<groupId>com.google.signin</groupId>
<artifactId>google-signin-support</artifactId>
<versioning>
<release>1.0.4</release>
<versions>
<version>1.0.4</version>
</versions>
<lastUpdated>20180920010048</lastUpdated>
</versioning>
</metadata>

@ -1,10 +0,0 @@
fileFormatVersion: 2
guid: c020582c1a85d47c7934908f00a0bd37
labels:
- gvh
- gvh_version-1.0.4
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

@ -1,10 +0,0 @@
fileFormatVersion: 2
guid: 16b8065a143bb4277af08381a56157dd
labels:
- gvh
- gvh_version-1.0.4
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

@ -2,9 +2,9 @@ fileFormatVersion: 2
guid: ad3b09fb652fb4ff0a68d1966f13160e
labels:
- gvh
- gvh_version-1.0.4
timeCreated: 1495747145
licenseType: Pro
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0

@ -2,9 +2,9 @@ fileFormatVersion: 2
guid: 138b984208e394be797ce8905a44fd54
labels:
- gvh
- gvh_version-1.0.4
timeCreated: 1490814915
licenseType: Pro
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0

@ -2,9 +2,9 @@ fileFormatVersion: 2
guid: 0c3999c0f68f04ae08f04fb3bf2a2050
labels:
- gvh
- gvh_version-1.0.4
timeCreated: 1495747213
licenseType: Pro
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0

@ -2,9 +2,9 @@ fileFormatVersion: 2
guid: 077933fcaedac412d9762bf3e0a3be68
labels:
- gvh
- gvh_version-1.0.4
timeCreated: 1501271136
licenseType: Pro
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0

@ -2,9 +2,9 @@ fileFormatVersion: 2
guid: c56b92217d0144af5907627d1235e0a5
labels:
- gvh
- gvh_version-1.0.4
timeCreated: 1495747250
licenseType: Pro
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0

@ -2,9 +2,9 @@ fileFormatVersion: 2
guid: fe250cda690a44cb08f8f7d26c9723b4
labels:
- gvh
- gvh_version-1.0.4
timeCreated: 1495748295
licenseType: Pro
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0

@ -2,9 +2,9 @@ fileFormatVersion: 2
guid: 9ae1f008f9f994b9c96c1a14067d7b48
labels:
- gvh
- gvh_version-1.0.4
timeCreated: 1502758941
licenseType: Pro
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0

@ -2,9 +2,9 @@ fileFormatVersion: 2
guid: 5f1aae79b1ca4432d9d8ec382c54bf46
labels:
- gvh
- gvh_version-1.0.4
timeCreated: 1502759707
licenseType: Pro
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0

@ -2,9 +2,9 @@ fileFormatVersion: 2
guid: ad98e5b48888e44eb81dd5884d3a1754
labels:
- gvh
- gvh_version-1.0.4
timeCreated: 1500486239
licenseType: Pro
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0

@ -21,22 +21,14 @@ public class GoogleSignInManager : MonoBehaviour
{
configuration = new GoogleSignInConfiguration
{
WebClientId = "1021701058525-72qg4sbvqv3m3q7it4eck2h86ekoflla.apps.googleusercontent.com",
WebClientId = GameConstants.Web_ClientID,
RequestEmail = true,
RequestAuthCode = true
RequestAuthCode = true,
};
GoogleSignIn.Configuration = configuration;
Application.quitting += SyncPlayerPrefsToPlayFabOnQuit;
string ons_id = "";
#if UNITY_ANDROID
ons_id = GameConstants.OSN_Android;
#elif UNITY_IOS
ons_id = GameConstants.OSN_iOS;
#endif
Debug.Log($"Initializing with appId <b>{ons_id}</b>");
OneSignal.Debug.LogLevel = LogLevel.Debug;
OneSignal.Initialize(ons_id);
}
void Start()
@ -47,7 +39,7 @@ public class GoogleSignInManager : MonoBehaviour
guestLoginButton.onClick.RemoveAllListeners();
guestLoginButton.onClick.AddListener(GuestLogin);
if (PlayerPrefs.HasKey("PlayFabID") && !PlayerPrefs.HasKey("GuestMode"))
if (PlayerPrefs.HasKey("PlayFabID") && PlayerPrefs.HasKey("GoogleAuthCode"))
{
Debug.Log("User previously signed in with Google. Attempting silent login...");
googleSignInButton.gameObject.SetActive(false);
@ -138,6 +130,7 @@ public class GoogleSignInManager : MonoBehaviour
GoogleSignInUser user = task.Result;
string authCode = user.AuthCode;
Console.WriteLine($"[GoogleSignInManager]: authCode: " + authCode);
SafePlayerPrefs.SetString("GoogleAuthCode", authCode);
PlayerPrefs.Save();
@ -148,26 +141,20 @@ public class GoogleSignInManager : MonoBehaviour
{
Debug.Log("Attempting Google Silent Sign-In...");
GoogleSignIn.DefaultInstance.SignInSilently().ContinueWith(task =>
string storedAuthCode = PlayerPrefs.GetString("GoogleAuthCode");
if (string.IsNullOrEmpty(storedAuthCode))
{
if (task.IsFaulted || task.IsCanceled)
{
Debug.LogWarning("Silent Sign-In failed. Showing login buttons.");
googleSignInButton.gameObject.SetActive(true);
googleSignInButton.interactable = true;
guestLoginButton.gameObject.SetActive(true);
guestLoginButton.interactable = true;
return;
}
GoogleSignInUser user = task.Result;
string authCode = user.AuthCode;
SafePlayerPrefs.SetString("GoogleAuthCode", authCode);
PlayerPrefs.Save();
Debug.LogWarning("No stored auth code found. Redirecting to Google Sign-In...");
googleSignInButton.gameObject.SetActive(true);
googleSignInButton.interactable = true;
guestLoginButton.gameObject.SetActive(true);
guestLoginButton.interactable = true;
SignInWithGoogle();
return;
}
LoginToPlayFab(authCode);
});
Debug.Log("[Silent Sign-In] Using stored auth code.");
LoginToPlayFab(storedAuthCode);
}
private void LoginToPlayFab(string authCode)

@ -1,5 +1,6 @@
fileFormatVersion: 2
guid: ed9b95dc6ed6d0647ad7f1a8f305385d
guid: b89b30ed1d3a642f78f85c1740272368
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:

@ -0,0 +1,5 @@
<linker>
<assembly fullname="OneSignal.Core" preserve="all" />
<assembly fullname="OneSignal.Android" preserve="all" />
<assembly fullname="OneSignal.iOS" preserve="all" />
</linker>

@ -1,8 +1,5 @@
fileFormatVersion: 2
guid: f3911d467587242978192a8723c68395
labels:
- gvh
- gvh_version-1.0.4
guid: a0d82b509bc0d45148624fd1203d3d65
TextScriptImporter:
externalObjects: {}
userData:

@ -169,7 +169,7 @@ Transform:
m_Children: []
m_Father: {fileID: 0}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!21 &38116014
--- !u!21 &79986214
Material:
serializedVersion: 8
m_ObjectHideFlags: 0
@ -204,7 +204,7 @@ Material:
m_Floats:
- _Alpha: 0
- _ColorMask: 15
- _Distortion: 0.7683495
- _Distortion: 0.6972395
- _Stencil: 0
- _StencilComp: 8
- _StencilOp: 0
@ -957,6 +957,50 @@ CanvasRenderer:
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 439213423}
m_CullTransparentMesh: 1
--- !u!1 &509783898
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 509783900}
- component: {fileID: 509783899}
m_Layer: 0
m_Name: OSNInit
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!114 &509783899
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 509783898}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: afb77ce3ddce9b34b8539e880cb78cb2, type: 3}
m_Name:
m_EditorClassIdentifier:
--- !u!4 &509783900
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 509783898}
serializedVersion: 2
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children: []
m_Father: {fileID: 0}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!1 &515619138
GameObject:
m_ObjectHideFlags: 0
@ -2756,7 +2800,7 @@ MonoBehaviour:
m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
m_Name:
m_EditorClassIdentifier:
m_Material: {fileID: 38116014}
m_Material: {fileID: 79986214}
m_Color: {r: 1, g: 1, b: 1, a: 1}
m_RaycastTarget: 1
m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
@ -3608,3 +3652,4 @@ SceneRoots:
- {fileID: 1797903893}
- {fileID: 11358293}
- {fileID: 1466205357}
- {fileID: 509783900}

Binary file not shown.

@ -1,20 +0,0 @@
/**
* Copyright 2017 Google Inc.
*
* 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 <GoogleSignIn/GIDSignIn.h>
@interface GoogleSignInHandler
: NSObject <GIDSignInDelegate, GIDSignInUIDelegate>
@end

@ -1,35 +0,0 @@
fileFormatVersion: 2
guid: 62c129704e1ec48179ba285e1af154b8
labels:
- gvh
- gvh_version-1.0.4
PluginImporter:
externalObjects: {}
serializedVersion: 2
iconMap: {}
executionOrder: {}
defineConstraints: []
isPreloaded: 0
isOverridable: 0
isExplicitlyReferenced: 0
validateReferences: 1
platformData:
- first:
Any:
second:
enabled: 0
settings: {}
- first:
Editor: Editor
second:
enabled: 0
settings:
DefaultValueInitialized: true
- first:
iPhone: iOS
second:
enabled: 1
settings: {}
userData:
assetBundleName:
assetBundleVariant:

@ -14,10 +14,11 @@
* limitations under the License.
*/
#import "GoogleSignIn.h"
#import <GoogleSignIn/GIDAuthentication.h>
#import <GoogleSignIn/GIDGoogleUser.h>
#import <GoogleSignIn/GIDProfileData.h>
#import <GoogleSignIn/GIDSignIn.h>
#import <GoogleSignIn/GIDToken.h>
#import <GoogleSignIn/GIDSignInResult.h>
#import <memory>
@ -35,6 +36,9 @@ static const int kStatusCodeInternalError = 7;
static const int kStatusCodeNetworkError = 8;
static const int kStatusCodeError = 9;
static NSString *cachedLoginHint = nil;
static NSArray<NSString *> *cachedAdditionalScopes = nil;
/**
* Helper method to pause the Unity player. This is done when showing any UI.
*/
@ -51,96 +55,14 @@ void UnpauseUnityPlayer() {
struct SignInResult {
int result_code;
bool finished;
GIDGoogleUser *user;
NSString *serverAuthCode;
};
std::unique_ptr<SignInResult> currentResult_;
NSRecursiveLock *resultLock = [NSRecursiveLock alloc];
@implementation GoogleSignInHandler
/**
* Overload the presenting of the UI so we can pause the Unity player.
*/
- (void)signIn:(GIDSignIn *)signIn
presentViewController:(UIViewController *)viewController {
UnityPause(true);
[UnityGetGLViewController() presentViewController:viewController
animated:YES
completion:nil];
}
/**
* Overload the dismissing so we can resume the Unity player.
*/
- (void)signIn:(GIDSignIn *)signIn
dismissViewController:(UIViewController *)viewController {
UnityPause(false);
[UnityGetGLViewController() dismissViewControllerAnimated:YES completion:nil];
}
/**
* The sign-in flow has finished and was successful if |error| is |nil|.
* Map the errors from the iOS SDK back to the Android values for consistency's
* sake in the Unity layer.
*/
- (void)signIn:(GIDSignIn *)signIn
didSignInForUser:(GIDGoogleUser *)user
withError:(NSError *)_error {
if (_error == nil) {
if (currentResult_) {
currentResult_->result_code = kStatusCodeSuccess;
currentResult_->finished = true;
} else {
NSLog(@"No currentResult to set status on!");
}
NSLog(@"didSignInForUser: SUCCESS");
} else {
NSLog(@"didSignInForUser: %@", _error.localizedDescription);
if (currentResult_) {
switch (_error.code) {
case kGIDSignInErrorCodeUnknown:
currentResult_->result_code = kStatusCodeError;
break;
case kGIDSignInErrorCodeKeychain:
currentResult_->result_code = kStatusCodeInternalError;
break;
case kGIDSignInErrorCodeNoSignInHandlersInstalled:
currentResult_->result_code = kStatusCodeDeveloperError;
break;
case kGIDSignInErrorCodeHasNoAuthInKeychain:
currentResult_->result_code = kStatusCodeError;
break;
case kGIDSignInErrorCodeCanceled:
currentResult_->result_code = kStatusCodeCanceled;
break;
default:
NSLog(@"Unmapped error code: %ld, returning Error",
static_cast<long>(_error.code));
currentResult_->result_code = kStatusCodeError;
}
currentResult_->finished = true;
UnpauseUnityPlayer();
} else {
NSLog(@"No currentResult to set status on!");
}
}
}
// Finished disconnecting |user| from the app successfully if |error| is |nil|.
- (void)signIn:(GIDSignIn *)signIn
didDisconnectWithUser:(GIDGoogleUser *)user
withError:(NSError *)_error {
if (_error == nil) {
NSLog(@"didDisconnectWithUser: SUCCESS");
} else {
NSLog(@"didDisconnectWithUser: %@", _error);
}
}
@end
/**
* These are the external "C" methods that are imported by the Unity C# code.
* The parameters are intended to be primative, easy to marshall.
@ -168,12 +90,6 @@ bool GoogleSignIn_Configure(void *unused, bool useGameSignIn,
bool requestIdToken, bool hidePopups,
const char **additionalScopes, int scopeCount,
const char *accountName) {
if (webClientId) {
[GIDSignIn sharedInstance].serverClientID =
[NSString stringWithUTF8String:webClientId];
}
[GIDSignIn sharedInstance].shouldFetchBasicProfile = true;
int scopeSize = scopeCount;
@ -184,12 +100,11 @@ bool GoogleSignIn_Configure(void *unused, bool useGameSignIn,
[tmpary addObject:[NSString stringWithUTF8String:additionalScopes[i]]];
}
[GIDSignIn sharedInstance].scopes = tmpary;
cachedAdditionalScopes = tmpary;
}
if (accountName) {
[GIDSignIn sharedInstance].loginHint =
[NSString stringWithUTF8String:accountName];
cachedLoginHint = [NSString stringWithUTF8String:accountName];
}
return !useGameSignIn;
@ -205,6 +120,8 @@ static SignInResult *startSignIn() {
currentResult_.reset(new SignInResult());
currentResult_->result_code = 0;
currentResult_->finished = false;
currentResult_->user = nil;
currentResult_->serverAuthCode = nil;
} else {
busy = true;
}
@ -220,13 +137,60 @@ static SignInResult *startSignIn() {
return nullptr;
}
/**
* The sign-in flow has finished and was successful if |error| is |nil|.
* Map the errors from the iOS SDK back to the Android values for consistency's
* sake in the Unity layer.
*/
void HandleSignInError(NSError * _Nullable _error) {
NSLog(@"didSignInForUser: %@", _error.localizedDescription);
if (currentResult_) {
switch (_error.code) {
case kGIDSignInErrorCodeUnknown:
currentResult_->result_code = kStatusCodeError;
break;
case kGIDSignInErrorCodeKeychain:
currentResult_->result_code = kStatusCodeInternalError;
break;
case kGIDSignInErrorCodeHasNoAuthInKeychain:
currentResult_->result_code = kStatusCodeError;
break;
case kGIDSignInErrorCodeCanceled:
currentResult_->result_code = kStatusCodeCanceled;
break;
default:
NSLog(@"Unmapped error code: %ld, returning Error", static_cast<long>(_error.code));
currentResult_->result_code = kStatusCodeError;
}
currentResult_->finished = true;
UnpauseUnityPlayer();
} else {
NSLog(@"No currentResult to set status on!");
}
}
/**
* Sign-In. The return value is a pointer to the currentResult object.
*/
void *GoogleSignIn_SignIn() {
SignInResult *result = startSignIn();
if (!result) {
[[GIDSignIn sharedInstance] signIn];
[GIDSignIn.sharedInstance signInWithPresentingViewController:UnityGetGLViewController() hint:cachedLoginHint additionalScopes:cachedAdditionalScopes completion:^(GIDSignInResult * _Nullable _result, NSError * _Nullable _error) {
if (_error == nil) {
if (currentResult_) {
currentResult_->result_code = kStatusCodeSuccess;
currentResult_->finished = true;
currentResult_->user = _result.user;
currentResult_->serverAuthCode = _result.serverAuthCode;
} else {
NSLog(@"No currentResult to set status on!");
}
NSLog(@"didSignInForUser: SUCCESS");
} else {
HandleSignInError(_error);
}
}];
result = currentResult_.get();
}
return result;
@ -239,20 +203,40 @@ void *GoogleSignIn_SignIn() {
void *GoogleSignIn_SignInSilently() {
SignInResult *result = startSignIn();
if (!result) {
[[GIDSignIn sharedInstance] signInSilently];
[GIDSignIn.sharedInstance restorePreviousSignInWithCompletion:^(GIDGoogleUser * _Nullable _user, NSError * _Nullable _error) {
if (_error == nil) {
if (currentResult_) {
currentResult_->result_code = kStatusCodeSuccess;
currentResult_->finished = true;
currentResult_->user = _user;
} else {
NSLog(@"No currentResult to set status on!");
}
NSLog(@"didSignInForUser: SUCCESS");
} else {
HandleSignInError(_error);
}
}];
result = currentResult_.get();
}
return result;
}
void GoogleSignIn_Signout() {
GIDSignIn *signIn = [GIDSignIn sharedInstance];
GIDSignIn *signIn = GIDSignIn.sharedInstance;
[signIn signOut];
}
void GoogleSignIn_Disconnect() {
GIDSignIn *signIn = [GIDSignIn sharedInstance];
[signIn disconnect];
GIDSignIn *signIn = GIDSignIn.sharedInstance;
// Finished disconnecting |user| from the app successfully if |error| is |nil|.
[signIn disconnectWithCompletion:^(NSError *_Nullable _error) {
if (_error == nil) {
NSLog(@"didDisconnectWithUser: SUCCESS");
} else {
NSLog(@"didDisconnectWithUser: %@", _error);
}
}];
}
bool GoogleSignIn_Pending(SignInResult *result) {
@ -263,10 +247,9 @@ bool GoogleSignIn_Pending(SignInResult *result) {
return ret;
}
GIDGoogleUser *GoogleSignIn_Result(SignInResult *result) {
SignInResult *GoogleSignIn_Result(SignInResult *result) {
if (result && result->finished) {
GIDGoogleUser *guser = [GIDSignIn sharedInstance].currentUser;
return guser;
return result;
}
return nullptr;
}
@ -300,46 +283,46 @@ static size_t CopyNSString(NSString *src, char *dest, size_t len) {
return src ? src.length + 1 : 0;
}
size_t GoogleSignIn_GetServerAuthCode(GIDGoogleUser *guser, char *buf,
size_t GoogleSignIn_GetServerAuthCode(SignInResult *gresult, char *buf,
size_t len) {
NSString *val = [guser serverAuthCode];
NSString *val = gresult->serverAuthCode;
return CopyNSString(val, buf, len);
}
size_t GoogleSignIn_GetDisplayName(GIDGoogleUser *guser, char *buf,
size_t GoogleSignIn_GetDisplayName(SignInResult *gresult, char *buf,
size_t len) {
NSString *val = [guser.profile name];
NSString *val = [gresult->user.profile name];
return CopyNSString(val, buf, len);
}
size_t GoogleSignIn_GetEmail(GIDGoogleUser *guser, char *buf, size_t len) {
NSString *val = [guser.profile email];
size_t GoogleSignIn_GetEmail(SignInResult *gresult, char *buf, size_t len) {
NSString *val = [gresult->user.profile email];
return CopyNSString(val, buf, len);
}
size_t GoogleSignIn_GetFamilyName(GIDGoogleUser *guser, char *buf, size_t len) {
NSString *val = [guser.profile familyName];
size_t GoogleSignIn_GetFamilyName(SignInResult *gresult, char *buf, size_t len) {
NSString *val = [gresult->user.profile familyName];
return CopyNSString(val, buf, len);
}
size_t GoogleSignIn_GetGivenName(GIDGoogleUser *guser, char *buf, size_t len) {
NSString *val = [guser.profile givenName];
size_t GoogleSignIn_GetGivenName(SignInResult *gresult, char *buf, size_t len) {
NSString *val = [gresult->user.profile givenName];
return CopyNSString(val, buf, len);
}
size_t GoogleSignIn_GetIdToken(GIDGoogleUser *guser, char *buf, size_t len) {
NSString *val = [guser.authentication idToken];
size_t GoogleSignIn_GetIdToken(SignInResult *gresult, char *buf, size_t len) {
NSString *val = [gresult->user.idToken tokenString];
return CopyNSString(val, buf, len);
}
size_t GoogleSignIn_GetImageUrl(GIDGoogleUser *guser, char *buf, size_t len) {
NSURL *url = [guser.profile imageURLWithDimension:128];
size_t GoogleSignIn_GetImageUrl(SignInResult *gresult, char *buf, size_t len) {
NSURL *url = [gresult->user.profile imageURLWithDimension:128];
NSString *val = url ? [url absoluteString] : nullptr;
return CopyNSString(val, buf, len);
}
size_t GoogleSignIn_GetUserId(GIDGoogleUser *guser, char *buf, size_t len) {
NSString *val = [guser userID];
size_t GoogleSignIn_GetUserId(SignInResult *gresult, char *buf, size_t len) {
NSString *val = [gresult->user userID];
return CopyNSString(val, buf, len);
}
} // extern "C"

@ -2,34 +2,34 @@ fileFormatVersion: 2
guid: 521784ee6b2184e0e947a8fd1508afbc
labels:
- gvh
- gvh_version-1.0.4
timeCreated: 1510357716
licenseType: Pro
PluginImporter:
externalObjects: {}
serializedVersion: 2
iconMap: {}
executionOrder: {}
defineConstraints: []
isPreloaded: 0
isOverridable: 0
isExplicitlyReferenced: 0
validateReferences: 1
platformData:
- first:
Any:
second:
enabled: 0
settings: {}
- first:
Editor: Editor
second:
enabled: 0
settings:
DefaultValueInitialized: true
- first:
iPhone: iOS
second:
enabled: 1
settings: {}
data:
first:
Any:
second:
enabled: 0
settings: {}
data:
first:
Editor: Editor
second:
enabled: 0
settings:
DefaultValueInitialized: true
data:
first:
iPhone: iOS
second:
enabled: 1
settings: {}
userData:
assetBundleName:
assetBundleVariant:

@ -2,32 +2,23 @@ fileFormatVersion: 2
guid: ce40e3e7b37a54617a4683dfc0479c71
labels:
- gvh
- gvh_version-1.0.4
timeCreated: 1490998272
licenseType: Pro
PluginImporter:
externalObjects: {}
serializedVersion: 2
serializedVersion: 1
iconMap: {}
executionOrder: {}
defineConstraints: []
isPreloaded: 0
isOverridable: 0
isExplicitlyReferenced: 0
validateReferences: 1
platformData:
- first:
Any:
second:
Any:
enabled: 0
settings: {}
- first:
Editor: Editor
second:
Editor:
enabled: 0
settings:
DefaultValueInitialized: true
- first:
iPhone: iOS
second:
iOS:
enabled: 1
settings: {}
userData:

@ -15,11 +15,10 @@
*/
#import "GoogleSignInAppController.h"
#import <GoogleSignIn/GoogleSignIn.h>
#import <GoogleSignIn/GIDSignIn.h>
#import <objc/runtime.h>
// Handles Google SignIn UI and events.
GoogleSignInHandler *gsiHandler;
/*
* Create a category to customize the application. When this is loaded the
* method for the existing application and GoogleSignIn are swizzled into the
@ -69,14 +68,11 @@ GoogleSignInHandler *gsiHandler;
ofType:@"plist"];
NSDictionary *dict = [NSDictionary dictionaryWithContentsOfFile:path];
NSString *clientId = [dict objectForKey:@"CLIENT_ID"];
gsiHandler = [GoogleSignInHandler alloc];
NSString *serverClientID = [dict objectForKey:@"SERVER_CLIENT_ID"];
// Setup the Sign-In instance.
GIDSignIn *signIn = [GIDSignIn sharedInstance];
signIn.clientID = clientId;
signIn.uiDelegate = gsiHandler;
signIn.delegate = gsiHandler;
GIDConfiguration *config = [[GIDConfiguration alloc] initWithClientID:clientId serverClientID:serverClientID];
[GIDSignIn.sharedInstance setConfiguration:config];
// looks like it's just calling itself, but the implementations were swapped
// so we're actually calling the original once we're done
@ -96,9 +92,7 @@ GoogleSignInHandler *gsiHandler;
sourceApplication:sourceApplication
annotation:annotation];
return [[GIDSignIn sharedInstance] handleURL:url
sourceApplication:sourceApplication
annotation:annotation] ||
return [GIDSignIn.sharedInstance handleURL:url] ||
handled;
}
@ -112,12 +106,7 @@ GoogleSignInHandler *gsiHandler;
BOOL handled =
[self GoogleSignInAppController:app openURL:url options:options];
return [[GIDSignIn sharedInstance]
handleURL:url
sourceApplication:
options[UIApplicationOpenURLOptionsSourceApplicationKey]
annotation:
options[UIApplicationOpenURLOptionsAnnotationKey]] ||
return [GIDSignIn.sharedInstance handleURL:url] ||
handled;
}

@ -2,32 +2,23 @@ fileFormatVersion: 2
guid: 50b2e1c9319e4446e9dbd9b183790472
labels:
- gvh
- gvh_version-1.0.4
timeCreated: 1490998272
licenseType: Pro
PluginImporter:
externalObjects: {}
serializedVersion: 2
serializedVersion: 1
iconMap: {}
executionOrder: {}
defineConstraints: []
isPreloaded: 0
isOverridable: 0
isExplicitlyReferenced: 0
validateReferences: 1
platformData:
- first:
Any:
second:
Any:
enabled: 0
settings: {}
- first:
Editor: Editor
second:
Editor:
enabled: 0
settings:
DefaultValueInitialized: true
- first:
iPhone: iOS
second:
iOS:
enabled: 1
settings: {}
userData:

@ -14,6 +14,9 @@ public class GameConstants
public static string OSN_Android = "3ee530aa-8613-485b-9cbd-0263727badc5";
public static string OSN_iOS = "aabdcf42-77ef-47c3-83f7-c97a1af87a5f";
public static string iOS_ClientID = "1021701058525-vp54583d95oknnamu739smqfihhoivnk.apps.googleusercontent.com";
public static string iOS_URL_Scheme = "com.googleusercontent.apps.1021701058525-vp54583d95oknnamu739smqfihhoivnk";
public static string Web_ClientID = "1021701058525-72qg4sbvqv3m3q7it4eck2h86ekoflla.apps.googleusercontent.com";
public static string AndroidURL =
"https://play.google.com/store/apps/details?id=com.rizze.pipuzzle&hl=en-US&ah=gfIMAf3ZQA42PzRKpRnkmyC0Sek&pli=1";

@ -0,0 +1,37 @@
#if UNITY_IOS && UNITY_EDITOR
using UnityEditor;
using UnityEditor.Callbacks;
using UnityEditor.iOS.Xcode;
using UnityEngine;
using System.IO;
public class GoogleSignInIOSBuildPatch
{
[PostProcessBuild(100)]
public static void OnPostProcessBuild(BuildTarget buildTarget, string pathToBuiltProject)
{
if (buildTarget != BuildTarget.iOS)
return;
string plistPath = Path.Combine(pathToBuiltProject, "Info.plist");
// === Modify Info.plist ===
PlistDocument plist = new PlistDocument();
plist.ReadFromFile(plistPath);
PlistElementDict rootDict = plist.root;
// Optional: can be removed if not used by your native code
rootDict.SetString("GIDClientID", GameConstants.iOS_ClientID);
PlistElementArray urlTypes = rootDict.CreateArray("CFBundleURLTypes");
PlistElementDict urlDict = urlTypes.AddDict();
PlistElementArray schemes = urlDict.CreateArray("CFBundleURLSchemes");
schemes.AddString(GameConstants.iOS_URL_Scheme);
plist.WriteToFile(plistPath);
Debug.Log("✅ Patched Info.plist with URL scheme.");
// DO NOT PATCH UnityAppController.mm — GIDSignIn.clientID is removed in SDK v6+
}
}
#endif

@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 74a4088da3768004389d6516bc9a559a
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

@ -0,0 +1,43 @@
using System.Collections;
using System.Collections.Generic;
using OneSignalSDK;
using OneSignalSDK.Debug.Models;
using UnityEngine;
public class OSNInitializer : MonoBehaviour
{
// Start is called before the first frame update
void Start()
{
Invoke(nameof(InitializeOSN),2f);
}
private void InitializeOSN()
{
string ons_id = "";
#if UNITY_ANDROID
ons_id = GameConstants.OSN_Android;
#elif UNITY_IOS
ons_id = GameConstants.OSN_iOS;
#endif
Debug.Log($"Initializing with appId <b>{ons_id}</b>");
OneSignal.Debug.LogLevel = LogLevel.Debug;
OneSignal.Initialize(ons_id);
RequestPermissionToAllowNotifications();
}
/// <summary>
/// This function is used to Request permission to Allow Notifications for the app
/// </summary>
private void RequestPermissionToAllowNotifications()
{
Debug.Log("Requesting permission to allow notifications");
OneSignal.Notifications.RequestPermissionAsync(true);
}
}

@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: afb77ce3ddce9b34b8539e880cb78cb2
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:
Loading…
Cancel
Save