Xcode的默认初始页面找不到

本文介绍了如何在 Xcode 中设置初始页面以便每次启动时都能看到。通过使用快捷键 command+shift+1 并勾选特定选项即可实现。

有的时候发现,每次打开Xcode都没有初始页面,想要找Xcode的初始页面(如下图所示):

这里写图片描述

解决方法

  • 按command+shift+1
  • 将下图对号处打对号,以后都会出现初始页面
    这里写图片描述
在 Unity iOS 项目中,若需在 `UnityAppController.h` 或自定义的 `AppDelegate` 中实现 `GIDSignInDelegate` 协议时提示“协议不到”或“protocol not found”,通常是由于以下几个原因导致的: ### 1. 缺少 Google Sign-In SDK 的头文件导入 如果未正确导入 Google Sign-In 的头文件,则编译器无法识别 `GIDSignInDelegate` 协议。需要确保在相应的 `.h` 或 `.mm` 文件中添加以下导入语句: ```objective-c #import <GoogleSignIn/GoogleSignIn.h> ``` 该头文件是 Google Sign-In SDK 的核心接口之一,必须在声明使用 `GIDSignInDelegate` 的类之前被包含 [^5]。 ### 2. 使用错误的文件扩展名导致 Objective-C++ 未启用 在 Unity 导出的 Xcode 工程中,`UnityAppController` 默认是 `.m` 文件,而 Objective-C++ 特性(如与 C++ 混合调用)需要 `.mm` 扩展名。如果尝试在 `.m` 文件中使用 C++ 类型(如 `CallUnityFunction`),可能导致编译失败,并间接影响协议识别。 应将 `UnityAppController.m` 重命名为 `UnityAppController.mm`,以启用 Objective-C++ 支持 [^1]。 ### 3. 未正确链接 Google Sign-In Framework 即使代码中正确导入了头文件,如果没有将 `GoogleSignIn.framework` 和相关依赖项正确添加到 Xcode 项目中,也会出现协议无法识别的问题。应在 Xcode 的“General”标签页下的“Frameworks, Libraries, and Embedded Content”部分确认是否已包含 Google Sign-In 的 framework 并设置为“Embed & Sign” [^5]。 此外,在 Build Settings 中确保 `OTHER_LDFLAGS` 包含 `-ObjC` 标志,否则可能无法正确加载类别和协议 [^5]。 ### 4. 自定义 AppDelegate 未继承正确的接口 若使用的是自定义的 `AppDelegate` 替代 `UnityAppController`,则必须确保其接口声明如下: ```objective-c @interface CustomAppDelegate : NSObject <UIApplicationDelegate, GIDSignInDelegate> ``` 并且在 `application:didFinishLaunchingWithOptions:` 方法中设置 `GIDSignIn` 的 `clientID` 和 `delegate` 属性 [^1]。 ### 5. Xcode 配置问题:SceneDelegate 干扰 UI 生命周期处理 从 iOS 13 开始,Xcode 引入了 `SceneDelegate` 来接管 UI 生命周期事件,`AppDelegate` 不再直接负责创建和管理 `UIWindow` [^3]。虽然这通常不影响 `GIDSignInDelegate` 的实现,但如果在 `SceneDelegate` 中未正确配置初始视图控制器,可能导致回调无法触发或初始化失败,从而引发误判为协议缺失的问题。 应确保 `SceneDelegate` 中的 `scene:willConnectToSession:options:` 正确设置了 `UIWindow` 和根视图控制器 [^2]。 ### 示例修复后的 UnityAppController.h 声明 ```objective-c // UnityAppController.h #import <GoogleSignIn/GoogleSignIn.h> @interface UnityAppController : NSObject <UIApplicationDelegate, GIDSignInDelegate> @end ``` ### 示例修复后的 UnityAppController.mm 实现 ```objective-c // UnityAppController.mm #import "UnityAppController.h" #import <GoogleSignIn/GoogleSignIn.h> @implementation UnityAppController - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { [super application:application didFinishLaunchingWithOptions:launchOptions]; [GIDSignIn sharedInstance].clientID = @"YOUR_WEB_CLIENT_ID"; [GIDSignIn sharedInstance].delegate = self; return YES; } - (void)signIn:(GIDSignIn *)signIn didSignInForUser:(GIDGoogleUser *)user withError:(NSError *)error { if (error) { NSLog(@"Sign-in error: %@", error.localizedDescription); return; } NSString *json = [NSString stringWithFormat:@"{\"email\":\"%@\", \"idToken\":\"%@\"}", user.profile.email, user.authentication.idToken]; CallUnityFunction("GoogleLoginHandler", "OnGoogleLoginSuccess", json.UTF8String); } - (BOOL)application:(UIApplication *)app openURL:(NSURL *)url sourceApplication:(NSString *)sourceAnnotation annotation:(id)annotation { return [[GIDSignIn sharedInstance] handleURL:url sourceApplication:sourceAnnotation annotation:annotation]; } @end ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Laura_Wangzx

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值