From 7bb5bafbd2c5eb31e08b008cf576129d7dc2db23 Mon Sep 17 00:00:00 2001 From: CaiYanPeng Date: Thu, 20 Jan 2022 14:00:42 +0800 Subject: [PATCH] =?UTF-8?q?ios=E7=AB=AFgoogle=EF=BC=9B=E4=BF=AE=E6=94=B9io?= =?UTF-8?q?s=E6=89=93=E5=8C=85=E6=97=B6pod=E6=95=B0=E6=8D=AE=E6=BA=90?= =?UTF-8?q?=E4=B8=BA=E6=B8=85=E5=8D=8E?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Assets/Editor/XCodePostProcessBuild.cs | 34 ++++++++++++++++- .../Plugins/Editor/Dependencies.xml | 2 + .../Editor/Google.IOSResolver_v1.2.135.0.dll | Bin 59392 -> 59904 bytes Assets/Plugins/iOS/GoogleService-Info.plist | 36 ++++++++++++++++++ .../iOS/GoogleService-Info.plist.meta} | 3 +- Assets/Plugins/iOS/IOSWechatController.m | 8 ++++ Assets/Plugins/iOS/Podfile | 15 ++++++++ Assets/Plugins/iOS/Podfile.meta | 7 ++++ Assets/Plugins/iOS/SignWithApple.h | 5 ++- Assets/Plugins/iOS/SignWithApple.m | 25 ++++++++++++ Assets/Scripts/App.cs | 2 +- .../Scripts/Mobile/LoginControllerMobile.cs | 4 +- Assets/Scripts/Mobile/WeChatController.cs | 9 +++++ Assets/Scripts/Utils/Utils.cs | 2 +- 14 files changed, 143 insertions(+), 9 deletions(-) create mode 100644 Assets/Plugins/iOS/GoogleService-Info.plist rename Assets/{ExternalDependencyManager/Editor/1.2.168.meta => Plugins/iOS/GoogleService-Info.plist.meta} (67%) create mode 100644 Assets/Plugins/iOS/Podfile create mode 100644 Assets/Plugins/iOS/Podfile.meta diff --git a/Assets/Editor/XCodePostProcessBuild.cs b/Assets/Editor/XCodePostProcessBuild.cs index 6f947a33..42c27f86 100644 --- a/Assets/Editor/XCodePostProcessBuild.cs +++ b/Assets/Editor/XCodePostProcessBuild.cs @@ -5,6 +5,7 @@ using System.IO; using UnityEngine; using UnityEditor.Callbacks; using UnityEditor.iOS.Xcode; +using System; #endif @@ -15,7 +16,7 @@ public static class XCodePostProcessBuild "Security.framework","WebKit.framework", "CoreGraphics.framework" }; - [PostProcessBuild(1)] + [PostProcessBuild(11)] public static void OnPostprocessBuild(BuildTarget buildTarget, string pathToBuiltProject) { if (BuildTarget.iOS != buildTarget) @@ -24,10 +25,27 @@ public static class XCodePostProcessBuild } string projectPath = pathToBuiltProject + "/Unity-iPhone.xcodeproj/project.pbxproj"; SetFrameworksAndBuildSettings(projectPath); + AddGooglePlist(pathToBuiltProject,projectPath); SetInfoList(pathToBuiltProject, "com.ZhiXingPai.PowerFun", "wxe3573a84e7e29902"); SetAssociatedDomains(projectPath, "wx.powerfun.com.cn"); Assets.NativeLocale.AddLocalizedStringsIOS(pathToBuiltProject, Path.Combine(Application.dataPath, "Editor/Locale")); } + + private static void AddGooglePlist(string pathToBuiltProject,string path) + { + PBXProject proj = new PBXProject(); + proj.ReadFromString(File.ReadAllText(path)); + // This is the Xcode target in the generated project + string target = proj.GetUnityMainTargetGuid(); + + // Copy plist from the project folder to the build folder + FileUtil.CopyFileOrDirectory("Assets/Plugins/iOS/GoogleService-Info.plist", pathToBuiltProject + "/GoogleService-Info.plist"); + proj.AddFileToBuild(target, proj.AddFile("GoogleService-Info.plist", "GoogleService-Info.plist")); + + // Write PBXProject object back to the file + proj.WriteToFile(path); + } + private static void SetFrameworksAndBuildSettings(string path) { PBXProject proj = new PBXProject(); @@ -38,6 +56,7 @@ public static class XCodePostProcessBuild proj.AddBuildProperty(target, "Other Linker Flags", "-Objc -all_load"); proj.SetBuildProperty(target, "ENABLE_BITCODE", "NO"); + //根据微信SDK文档的要求,加入相关的Frameworks for (int i = 0; i < csAddFrameworks.Length; ++i) { @@ -48,7 +67,11 @@ public static class XCodePostProcessBuild //苹果登录配置项 //proj.AddCapability(target, PBXCapabilityType.SignInWithApple); proj.AddFrameworkToProject(proj.GetUnityFrameworkTargetGuid(), "AuthenticationServices.framework", false); - + //移除无用配置项 + proj.RemoveFrameworkFromProject(proj.GetUnityFrameworkTargetGuid(), "Chromium Embedded Framework.framework"); + proj.SetBuildProperty(proj.ProjectGuid(), "ENABLE_BITCODE", "NO"); + proj.SetBuildProperty(proj.ProjectGuid(), "CLANG_ENABLE_MODULES", "YES"); + File.WriteAllText(path, proj.WriteToString()); } @@ -65,12 +88,19 @@ public static class XCodePostProcessBuild dict.SetString("CFBundleURLName", wxUrlName); PlistElementArray urlSchemes = dict.CreateArray("CFBundleURLSchemes"); urlSchemes.AddString(wxScheme); + PlistElementDict dictMine = urlArray.AddDict(); dictMine.SetString("CFBundleTypeRole", "Editor"); dictMine.SetString("CFBundleURLName", "powerfunx"); PlistElementArray urlSchemesMine = dictMine.CreateArray("CFBundleURLSchemes"); urlSchemesMine.AddString("powerfunx"); + PlistElementDict dictGG = urlArray.AddDict(); + dictGG.SetString("CFBundleTypeRole", "Editor"); + dictGG.SetString("CFBundleURLName", "google"); + PlistElementArray urlSchemesGG = dictGG.CreateArray("CFBundleURLSchemes"); + urlSchemesGG.AddString("com.googleusercontent.apps.492440200766-spo9287smn7epmlarib2pek9kficsq86"); + // 在 “info”标签栏的“LSApplicationQueriesSchemes“添加weixin wechat和weixinULAPI PlistElementArray wxArray = plist.root.CreateArray("LSApplicationQueriesSchemes"); wxArray.AddString("weixin"); diff --git a/Assets/FacebookSDK/Plugins/Editor/Dependencies.xml b/Assets/FacebookSDK/Plugins/Editor/Dependencies.xml index 0d248b3f..6d05c484 100644 --- a/Assets/FacebookSDK/Plugins/Editor/Dependencies.xml +++ b/Assets/FacebookSDK/Plugins/Editor/Dependencies.xml @@ -14,5 +14,7 @@ + + diff --git a/Assets/PlayServicesResolver/Editor/Google.IOSResolver_v1.2.135.0.dll b/Assets/PlayServicesResolver/Editor/Google.IOSResolver_v1.2.135.0.dll index a9b0b5ae136a56226da591f9f8b109c008f14c7d..5877d86d8bcbf3c991791adfbb361aeb5a59daa9 100644 GIT binary patch literal 59904 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 ZGRzpCLVN#v_XLT>`;lOO{`<^P;6FH9OuhgB literal 59392 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 diff --git a/Assets/Plugins/iOS/GoogleService-Info.plist b/Assets/Plugins/iOS/GoogleService-Info.plist new file mode 100644 index 00000000..f23cc195 --- /dev/null +++ b/Assets/Plugins/iOS/GoogleService-Info.plist @@ -0,0 +1,36 @@ + + + + + CLIENT_ID + 492440200766-spo9287smn7epmlarib2pek9kficsq86.apps.googleusercontent.com + REVERSED_CLIENT_ID + com.googleusercontent.apps.492440200766-spo9287smn7epmlarib2pek9kficsq86 + ANDROID_CLIENT_ID + 492440200766-0fqskhb6ebtag1hlqpo7fo93cuaarsl6.apps.googleusercontent.com + API_KEY + AIzaSyCapHL0ck1BuzfS2Drbup4VRO0jf_9fp_U + GCM_SENDER_ID + 492440200766 + PLIST_VERSION + 1 + BUNDLE_ID + com.ZhiXingPai.PowerFun + PROJECT_ID + powerfun-c1019 + STORAGE_BUCKET + powerfun-c1019.appspot.com + IS_ADS_ENABLED + + IS_ANALYTICS_ENABLED + + IS_APPINVITE_ENABLED + + IS_GCM_ENABLED + + IS_SIGNIN_ENABLED + + GOOGLE_APP_ID + 1:492440200766:ios:87037cb11ad738c0e4d36f + + \ No newline at end of file diff --git a/Assets/ExternalDependencyManager/Editor/1.2.168.meta b/Assets/Plugins/iOS/GoogleService-Info.plist.meta similarity index 67% rename from Assets/ExternalDependencyManager/Editor/1.2.168.meta rename to Assets/Plugins/iOS/GoogleService-Info.plist.meta index e7304b70..02fac433 100644 --- a/Assets/ExternalDependencyManager/Editor/1.2.168.meta +++ b/Assets/Plugins/iOS/GoogleService-Info.plist.meta @@ -1,6 +1,5 @@ fileFormatVersion: 2 -guid: ccd268c2c2c420741bbf29cb19e4aada -folderAsset: yes +guid: 8f722ab35ffa939418fdbda7f0793bc7 DefaultImporter: externalObjects: {} userData: diff --git a/Assets/Plugins/iOS/IOSWechatController.m b/Assets/Plugins/iOS/IOSWechatController.m index 119a1d8b..1c1d6bae 100644 --- a/Assets/Plugins/iOS/IOSWechatController.m +++ b/Assets/Plugins/iOS/IOSWechatController.m @@ -14,6 +14,8 @@ #import #import #import +@import Firebase; +@import GoogleSignIn; extern void UnitySendMessage(const char *,const char *,const char *); @interface IOSWechatController : UnityAppController @@ -49,6 +51,12 @@ options:(NSDictionary *)options return [WXApi handleOpenURL:url delegate:self]; } +- (BOOL)application:(UIApplication *)application willFinishLaunchingWithOptions:(NSDictionary *)launchOptions +{ + //google登录 + [FIRApp configure]; +} + - (void)onResp:(BaseResp *)resp { NSLog(@"47"); diff --git a/Assets/Plugins/iOS/Podfile b/Assets/Plugins/iOS/Podfile new file mode 100644 index 00000000..218fb1be --- /dev/null +++ b/Assets/Plugins/iOS/Podfile @@ -0,0 +1,15 @@ +source 'https://mirrors.tuna.tsinghua.edu.cn/git/CocoaPods/Specs.git' +platform :ios, '10.0' + +target 'UnityFramework' do + pod 'FBSDKCoreKit', '~> 11.0' + pod 'FBSDKCoreKit_Basics', '~> 11.0' + pod 'FBSDKGamingServicesKit', '~> 11.0' + pod 'FBSDKLoginKit', '~> 11.0' + pod 'FBSDKShareKit', '~> 11.0' + pod 'Firebase/Auth' + pod 'GoogleSignIn' +end +target 'Unity-iPhone' do +end +use_frameworks! diff --git a/Assets/Plugins/iOS/Podfile.meta b/Assets/Plugins/iOS/Podfile.meta new file mode 100644 index 00000000..c083b5ca --- /dev/null +++ b/Assets/Plugins/iOS/Podfile.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: f168de8faf0b96c4f8bf9708edb05015 +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/iOS/SignWithApple.h b/Assets/Plugins/iOS/SignWithApple.h index ddc284c6..0c9fb01f 100644 --- a/Assets/Plugins/iOS/SignWithApple.h +++ b/Assets/Plugins/iOS/SignWithApple.h @@ -1,4 +1,7 @@ -# import +#import +@import Firebase; +@import GoogleSignIn; +#import "UnityAppController.h" @interface AppleAuth: NSObject - (void)authorizationAppleID; diff --git a/Assets/Plugins/iOS/SignWithApple.m b/Assets/Plugins/iOS/SignWithApple.m index 8481e6ed..15f2a76d 100644 --- a/Assets/Plugins/iOS/SignWithApple.m +++ b/Assets/Plugins/iOS/SignWithApple.m @@ -40,7 +40,27 @@ static AppleAuth * _appleAuth; [authorizationController performRequests]; } } +- (void) authorizationGoogleID{ + NSLog(@"cypgoogle"); + GIDConfiguration *config = [[GIDConfiguration alloc] initWithClientID:[FIRApp defaultApp].options.clientID]; + __weak __auto_type weakSelf = self; + UnityAppController * root = (UnityAppController*)[UIApplication sharedApplication].delegate; + [GIDSignIn.sharedInstance signInWithConfiguration:config presentingViewController:root.rootViewController callback:^(GIDGoogleUser * _Nullable user, NSError * _Nullable error) { + __auto_type strongSelf = weakSelf; + if (strongSelf == nil) { return; } + if (error == nil) { + GIDAuthentication *authentication = user.authentication; + UnitySendMessage("LoginPanel", "OnMobileGoogleLoginResp", [NSString stringWithFormat:@"true;%@|%@",user.userID,authentication.idToken ].UTF8String); + // FIRAuthCredential *credential = + // [FIRGoogleAuthProvider credentialWithIDToken:authentication.idToken + // accessToken:authentication.accessToken]; + // ... + } else { + // ... + } + }]; +} #pragma mark- ASAuthorizationControllerDelegate // 授权成功 - (void)authorizationController:(ASAuthorizationController *)controller didCompleteWithAuthorization:(ASAuthorization *)authorization API_AVAILABLE(ios(13.0)) { @@ -121,4 +141,9 @@ static AppleAuth * _appleAuth; void authorizationAppleID(){ AppleAuth * a = [AppleAuth instance]; [a authorizationAppleID]; +} + +void authorizationGoogleID(){ + AppleAuth * a = [AppleAuth instance]; + [a authorizationGoogleID]; } \ No newline at end of file diff --git a/Assets/Scripts/App.cs b/Assets/Scripts/App.cs index a9a021f8..b718fc82 100644 --- a/Assets/Scripts/App.cs +++ b/Assets/Scripts/App.cs @@ -19,7 +19,7 @@ public delegate void ChangeLanguageDelegate(); public static class App { - public static string Host = "http://192.168.0.101:5084/"; + public static string Host = "http://192.168.0.101:5087/"; public static string AppVersion = Application.version; diff --git a/Assets/Scripts/Mobile/LoginControllerMobile.cs b/Assets/Scripts/Mobile/LoginControllerMobile.cs index 8cd531d4..e996aa6c 100644 --- a/Assets/Scripts/Mobile/LoginControllerMobile.cs +++ b/Assets/Scripts/Mobile/LoginControllerMobile.cs @@ -70,6 +70,8 @@ public class LoginControllerMobile : MonoBehaviour, INativeOnMobileWxLoginResp { #if UNITY_EDITOR OnMobileGoogleLoginResp("true;105370187704207825625|eyJhbGciOiJSUzI1NiIsImtpZCI6ImNhMDA2MjBjNWFhN2JlOGNkMDNhNmYzYzY4NDA2ZTQ1ZTkzYjNjYWIiLCJ0eXAiOiJKV1QifQ.eyJpc3MiOiJodHRwczovL2FjY291bnRzLmdvb2dsZS5jb20iLCJhenAiOiI0OTI0NDAyMDA3NjYtMGZxc2toYjZlYnRhZzFobHFwbzdmbzkzY3VhYXJzbDYuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20iLCJhdWQiOiI0OTI0NDAyMDA3NjYtZjE0Yjl0OXRtcmF1bGg2N2dxb2JhYTlpc3EzN2cwbmMuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20iLCJzdWIiOiIxMDUzNzAxODc3MDQyMDc4MjU2MjUiLCJlbWFpbCI6ImNhaXlhbnBlbmcwNjE5QGdtYWlsLmNvbSIsImVtYWlsX3ZlcmlmaWVkIjp0cnVlLCJuYW1lIjoi6JSh5Lil6bmPIiwicGljdHVyZSI6Imh0dHBzOi8vbGgzLmdvb2dsZXVzZXJjb250ZW50LmNvbS9hL0FBVFhBSnhjeWVkS05iZkcwZ3lIbkRhMXpWemVZRGVpdXI3OHUtNWZfbnVWPXM5Ni1jIiwiZ2l2ZW5fbmFtZSI6IuS4pem5jyIsImZhbWlseV9uYW1lIjoi6JShIiwibG9jYWxlIjoiemgtQ04iLCJpYXQiOjE2NDI0ODUxNzEsImV4cCI6MTY0MjQ4ODc3MX0.ZX-9jmB9GaWQEgcv8jbd4Ojy33DiVvl7m_PQZudJEQaLC1S5C6QJOaZRJEHNQ44mWmfSPlHPEhgsEoP-Qn7lKx7r609OuzMYGUE266bdbYer2KzztMtZIUKrI3i0UGLlybQm8YVGJh4vTvtaLZ3Fi2h2aKlDjx4MvFDaQKIwTDsOXzkCmhidYJ4KOhCToZsGIWmR8OhtwhL531p1oV3kOW28nXSbPhl0GalEbu-n970TtpxxQRvJeK61V8R3F29U71pn9PI863xQQ4itWsvQaFNz03pC8RRBGEKN8dvrmTqbKMuoo44fV4pLiY66EqUUoKYST7dOl15zUGfC-ckq5g"); +#elif UNITY_IOS + App.weChatController.SignWithGoogle(); #else Utils.CallAndroidMethod("signInWithGoogle"); #endif @@ -208,7 +210,6 @@ public class LoginControllerMobile : MonoBehaviour, INativeOnMobileWxLoginResp public void OnMobileGoogleLoginResp(string res) { Debug.Log(res); -#if UNITY_ANDROID var sp = res.Replace("true;", "").Split('|'); if (sp.Length == 2) { @@ -218,7 +219,6 @@ public class LoginControllerMobile : MonoBehaviour, INativeOnMobileWxLoginResp { Utils.showToast(null, res.Replace("false;","")); } -#endif } public void OnAppleResp(string res) diff --git a/Assets/Scripts/Mobile/WeChatController.cs b/Assets/Scripts/Mobile/WeChatController.cs index c76a3eb6..40b01a1f 100644 --- a/Assets/Scripts/Mobile/WeChatController.cs +++ b/Assets/Scripts/Mobile/WeChatController.cs @@ -36,6 +36,8 @@ public class WeChatController [DllImport("__Internal")] private static extern void authorizationAppleID(); + [DllImport("__Internal")] + private static extern void authorizationGoogleID(); #endif #endregion ///

@@ -83,6 +85,13 @@ public class WeChatController #endif } + public void SignWithGoogle() + { +#if UNITY_IOS + authorizationGoogleID(); +#endif + } + /// /// 判断是否是否安装了微信 /// diff --git a/Assets/Scripts/Utils/Utils.cs b/Assets/Scripts/Utils/Utils.cs index 91a2af76..7917d36c 100644 --- a/Assets/Scripts/Utils/Utils.cs +++ b/Assets/Scripts/Utils/Utils.cs @@ -280,7 +280,7 @@ namespace Assets.Scripts AndroidJavaClass jc = new AndroidJavaClass("com.unity3d.player.UnityPlayer"); var activity = jc.GetStatic("currentActivity"); return activity.Call("CheckGooglePlayServices"); -#elif UNITY_EDITOR +#elif UNITY_EDITOR || UNITY_IOS return true; #else return false;