首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

在Xcode11.5中从AppDelegate访问ViewController (firebase谷歌登录)

在Xcode11.5中,可以通过以下步骤从AppDelegate访问ViewController,并实现Firebase谷歌登录功能:

  1. 首先,在AppDelegate.swift文件中导入Firebase和GoogleSignIn库:
代码语言:txt
复制
import Firebase
import GoogleSignIn
  1. 在AppDelegate类中,添加以下方法来配置Firebase和GoogleSignIn:
代码语言:txt
复制
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
    FirebaseApp.configure()
    GIDSignIn.sharedInstance().clientID = FirebaseApp.app()?.options.clientID
    return true
}
  1. 在AppDelegate类中,添加以下方法来处理谷歌登录回调:
代码语言:txt
复制
func application(_ app: UIApplication, open url: URL, options: [UIApplication.OpenURLOptionsKey : Any] = [:]) -> Bool {
    return GIDSignIn.sharedInstance().handle(url)
}
  1. 在ViewController类中,导入GoogleSignIn库,并实现谷歌登录按钮的点击事件:
代码语言:txt
复制
import GoogleSignIn

class ViewController: UIViewController, GIDSignInDelegate {
    override func viewDidLoad() {
        super.viewDidLoad()
        
        GIDSignIn.sharedInstance()?.presentingViewController = self
        GIDSignIn.sharedInstance()?.delegate = self
    }
    
    @IBAction func googleSignInButtonTapped(_ sender: UIButton) {
        GIDSignIn.sharedInstance()?.signIn()
    }
    
    // 实现谷歌登录回调方法
    func sign(_ signIn: GIDSignIn!, didSignInFor user: GIDGoogleUser!, withError error: Error?) {
        if let error = error {
            print("谷歌登录出错:\(error.localizedDescription)")
            return
        }
        
        // 用户成功登录,可以在这里处理用户信息
        let userId = user.userID
        let fullName = user.profile.name
        let email = user.profile.email
        
        // 进行其他操作,例如跳转到下一个界面
    }
}

以上代码实现了在Xcode11.5中从AppDelegate访问ViewController,并使用Firebase和GoogleSignIn实现了谷歌登录功能。请注意,这里没有提及任何特定的云计算品牌商,但你可以根据自己的需求选择适合的云计算平台来部署和扩展你的应用程序。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

解决 iOS 15 上 APP 莫名其妙地退出登录 解决 iOS 15 上 APP 莫名其妙地退出登录

iOS 15 公开推出后, 我们开始用户端收到反馈报告:在打开我们的应用程序(Cookpad) 时他们被莫名其妙的反复退出到登录页。...复现反馈的问题 用户报告的具体信息有限,我们唯一知道的是: iOS 15 开始,用户打开程序后会发现自己已经退出登录。...我粗略地看了一下发布说明,谷歌上快速搜索了一下,我找不到任何东西,所以我不得不继续挖掘以更好地了解这个问题。...为了避免我们的AppDelegate上持有一些隐式解包的可选属性,我们init()方法中进行了一些设置,其中一部分涉及Keychain读取访问令牌。...,因此我坚信我应该能够 AppDelegate.init()的Keychain读取数据。

1.5K20

解决 iOS 15 上 APP 莫名其妙地退出登录

iOS 15 公开推出后, 我们开始用户端收到反馈报告:在打开我们的应用程序(Cookpad) 时他们被莫名其妙的反复退出到登录页。...复现反馈的问题 用户报告的具体信息有限,我们唯一知道的是: iOS 15 开始,用户打开程序后会发现自己已经退出登录。...我粗略地看了一下发布说明,谷歌上快速搜索了一下,我找不到任何东西,所以我不得不继续挖掘以更好地了解这个问题。...现在这完全说得通了,但唯一的问题是, Cookpad ,我们只应用启动时Keychain读取信息,而我的假设是,用户一定是点击了应用图标来启动应用,因此设备在这时应该总是解锁的,对吗?...为了避免我们的AppDelegate上持有一些隐式解包的可选属性,我们init()方法中进行了一些设置,其中一部分涉及Keychain读取访问令牌。

86210

iOS开发中点击UITabBarItem弹出一个控制器(如常见未登录用户点击购物车弹出登录页面的效果)

这个效果的实现方式和在用户未登录时点击购物车弹出一个登录页面(看天猫)的实现方式是一样的,我们需要拦截TabBarItem的点击事件。...我AppDelegate中将TabBarController设置了window的rootController,因此AppDelegate设置tabBarController的代理(遵守协议:UITabBarControllerDelegate...),实现协议的方法: #pragma mark --- UITabBarControllerDelegate - (BOOL)tabBarController:(UITabBarController...*)tabBarController shouldSelectViewController:(UIViewController *)viewController{ UINavigationController...* nav = (UINavigationController *)viewController; UIViewController * vc = nav.childViewControllers

1.5K10

iOS开发--一步步教你彻底学会『iOS应用间相互跳转』

下面来看看我们开发过程遇到的应用场景。 2. 应用间相互跳转应用场景 使用第三方用户登录,跳转到需授权的App。如QQ登录,微信登录等。...之前我们应用App-B通过AppDelegate执行不同页面的跳转。在对应方法我们可以拿到完整的URL,主控制器ViewController设定一个属性,将该URL保存在主控制器。...添加Page1和Page2的页面控制器Page1ViewController和Page2ViewController 2. 实现步骤 App-A修改传递的URL。 分别修改为:@"AppB://?...AppA" App-B的主控制器ViewController增加一条属性@property (nonatomic, copy) NSString *urlString;,并在App-B通过AppDelegate...将要跳转的页面控制器Page1ViewController和Page2ViewController定义一个属性@property (nonatomic, copy) NSString *urlString

1.2K30

Google Assistant 添加 Light Action

可以看到的  Firebase -> Functions ->Dashboard 可以看到your-cloud-functions-url, 而fulfillment...指的就是smarthome Firebase 部署的函数主要是调用AWS IOT实现和第三方设备的控制,协议主要是MQTT。...然后进行firebase部署,必须进行路由器访问外国网站才可以部署成功 firebase init // 初始化,一般不需要 firebase login // 账号登录 firebase...Action 的相关设置已经完成,每修改一些设置需要重新TEST ,完成之后Google Assistant -> Home control -> Devices 添加刚刚设置的...总结 介绍Action中一些常用设置的参数,需要注意的是 fulfillment / Authorization URL / Token URL参数的设置 Firebase 部署必须路由器访问外国网站才可以

3.8K20

iOS iOS与html进行交互

首先先说一下思路:我的项目中是那样的:首先h5后台拿到数据,然后我请求h5的界面,然后通过h5的按钮进行选择,通过ios控制按钮到那个界面。 这个小demo不涉及数据传输,只是界面的交互。...------------------------------------------------------------------------ 最近又在看oc与h5交互,所以又补充一点,就是 例如你原生的界面登录成功之后怎么给...我这边采用的方式是:通知传值的方式 思路: webviewVC的界面初始化的时候就要把通知加上 然后 登录成功之后  发送通知 将值传给h5 //添加一个通知 等着需要传值给html的时候就用这个通知...All rights reserved. // #import "ViewController.h" #import @interface ViewController...的文件路径 根据实际情况定 ,如果是项目中本地的就用我注释的方法,如果是电脑桌面上就可以用没有注释的路径,根据实际情况来。

2.3K100

iOS性能优化之启动优化

系统由进程直接访问内存的物理地址,这种方式存在严重的安全隐患。...进程持有的虚拟地址(Virtual Address)会经过内存管理单元(Memory Mangament Unit)的转换变成物理地址,然后再通过物理地址访问内存 操作系统以页为单位管理内存,iOS系统...,操作系统会选择合适的物理内存页驱逐回磁盘,为新的内存页让出位置,选择待驱逐页的过程操作系统叫做页面置换 例如,同一台设备上,依次打开微信、微博、淘宝、京东、抖音,此时再回到微信,又会看到微信的启动界面...,这个启动方式就是冷启动 热启动:当启动应用时,后台已有该应用的进程(例:按home键回到桌面,但是该应用的进程是依然会保留在后台,可进入任务列表查看),所以已有进程的情况下,这种启动会已有的进程来启动应用...[AppDelegate load] _main 复制代码 让Xcode使用.order文件,Build Setting→Order File配置 编译项目,打开LinkMap文件 # Symbols

1.7K11

【IOS开发基础系列】Storyboard专题

你可以 Object Library拖控件(右下角)到viewcontroller ,并修改它的布局。... AppDelegate.m ,它实际上什么也没做,所有的方法都是空的。甚至application:didFinishLaunchingWithOptions:也只是简单地返回 Yes。...具体实现方法:          例如,故事板Level1VC添加一个按钮,然后将level2VC拖入故事板,按住cmd键,鼠标点击按钮并拖入level2VC,弹出的菜单中选择show事件,即完成了...这将导致增加一个 ViewController 到画布:         当然你也可以直接 Object Library 拖一个NavigationController,但 Embed In 命令更简单一些...以前,如果你要定制表视图单元格,你要么代码向cell对象添加自己的 subviews ,要么新建一个 nib 然后nib 中加载你自己的 cell。

85630

避免Swift中使用单例

单例通常可以作为访问某些核心值或对象的捷径,因为它们基本上可以任何地方访问。...看看这个例子,我们想在ProfileViewController显示当前登录用户的名字,并在点击按钮时将用户退出登录: class ProfileViewController: UIViewController...由于单例应用程序的整个生命周期中都是存活的,管理它们可能真的很困难,而且它们通常必须依靠可选值来跟踪数值。这也使得依赖单例的代码很难测试,因为你不能轻易地每个测试案例的 "白板 "上开始。...我们之前的ProfileViewController例子,我们已经可以看到这三个问题的迹象。...同样的技术也可以用来改造我们应用程序的其他核心对象,我们可能一直以 "类似单例 "的方式使用这些对象,例如使用AppDelegate进行导航. extension UserManager: LoginService

47830

GitXcode的配置与使用常见问题总结

书接上回提出的GitXcode的配置与使用常见问题4个问题 问题1,如何在Xcode创建代码库,并添加和提交代码到代码库? 问题2,如何在Xcode中提交推送给远程服务器代码库?...in ~/.git/ 初始化完成之后添加并提交HelloWorld工程,终端执行如下命令: $ git add . $ git commit -m ‘tony init’ [master (root-commit...2、问题2 本地有代码库提交推送给远程服务器代码库,Xcode可以通过菜单File→Source Control→Push…进行推送,但是如果是第一次访问,会出现对话框,没有可以推送的远程服务器代码库名...Xcode可以通过菜单Window → Organizer,选中Repositories→myrepo→Remotes,点击左下角的“Add Remote”按钮,弹出对话框,Remote Name...3、问题3 这 个问题是服务器代码库克隆到本地,首先需要在Xcode添加一个远程代码库,需要通过菜单Window → Organizer进入到Repositories画面,点选左下角的“+”按钮,选择

3.5K110

我们弃用 Firebase

的确,纯性能上讲, AWS/Azure/ GCP 上构建的定制化原生服务包优于 Firebase 套件。但是,当我们考虑到开发时间和维护成本时,Firebase 通常是一个合乎逻辑的选择。...Firebase:不那么好的地方 另一方面,Firebase 也有不少地方让我们犹豫: Firebase 要求使用谷歌 /GSuite 登录——我们喜欢分散我们的供应商和服务。...直接 Google Cloud Console 下载。 GCP 似乎正在蚕食 Firebase 开发环境。 运营的角度来看,这是合理的。... CI 代码,过滤掉未更改的文件,并部署与已更改的文件相对应的函数。不用说,这两种变通方法都有很多需要改进的地方。...点击底部阅读原文访问 InfoQ 官网,获取更多精彩内容!

32.5K30

Mac开发基础练习:制作一个状态栏(NSStatusBar)上的App(二)

为了响应系统的鼠标事件,我们需要使用Cocoa框架的NSEvent类来为应用添加监听对象,Mac 开发,通常我们都是被(鼠标或键盘)事件驱动的,当OSX系统接收到一个事件后,会添加到窗口服务进程的处理队列...1.4 选中Main.storyboard文件,项目中删除,并清空工程配置,入下图: ?...像iOS中一样,应用启动加载完成后,设置UI是AppDelegate的这个方法-applicationDidFinishLaunching:开始的,如果我们在上面的工程对这个方法设置调试断点,你会发现应用启动后...main.m文件实现代码 1.6 因为我们去除了window,因此ViewController对我们来说已经没有价值了,我们只需要把之前ViewController写的代码,放置到AppDelegate.m...来实现就可以了,这样我们就可以删除ViewController这个类了。

1.4K30

iOS动态更新补丁策略JSPatch运用基础一

一、从一个官方的小demo看起         通过cocoapods将JSPath集成进一个Xcode工程AppDelegate类的编写如下代码: - (BOOL)application:(UIApplication...文件没有编写任何其他的方法,运行工程,可以看到程序并没有崩溃,ViewController执行了creatView方法。         ...(0,0.5,0.5,1)) 对于Objective-C类的属性变量,JavaScript只能使用getter与setter方法来访问,示例如下: label.setText("JSPatch")...3.JavaScript操作与修改Objective-C类     JSPatch的最大应用是应用运行时动态的操作和修改类。...关键字调用的方法,JavaScript可以使用self.super()来调用,例如: defineClass('ViewController', {             // replace the

86820

【iOS开发】自动识别剪贴板内容

,注意http和https都要写上,这点很容易被忽略(浏览器地址栏复制以www.开头的文本会自动剪贴板中转为http或https开头的链接)。...更值得注意的是,因为你需要让 App 每次后台进入前台的时候都检测一下剪贴板中有没有链接,所以以上方法要放在 AppDelegate 文件的 applicationWillEnterForeground...AppDelegate.swift 而这个方法是不能通过 self 来调用 ViewController 的,所以要曲线救国的话,你需要手动获取 Storyboard、ViewController,再设置...(这里我只是把剪贴板的链接输出到控制台了,想要自己用 UIWebView 打开链接的话,// your implementation 这句注释这里写自己的方法吧) 【150928 更新】 对比 applicationWillEnterForeground...和 applicationDidBecomeActive 这两个方法,前者是指 App后台进入前台,后者是指 App处于活跃状态,所以前者相对于后者,缺少的部分是,当 App 刚刚启动,而不是后台取出的时候

1.5K30
领券