`
贝壳水母
  • 浏览: 147971 次
  • 性别: Icon_minigender_1
  • 来自: 广州中低收入人群
社区版块
存档分类
最新评论

iOS GoogleSignIn接入

阅读更多
https://developers.google.com/identity/sign-in/ios/start-integrating
Google官方文档在这里,以下主要介绍不使用CocoaPods而进行手动配置需要留意的地方,以及怎么使用自定义的按钮

1.导入需要的资源和框架

下载玩SDK包后,会得到
·GoogleSignIn.framework
·GoogleSignIn.bundle
其中GoogleSignIn.bundle是google登录按钮的资源包,如果自己的应用里已经做了自定义的登录按钮,这个是用不到的,可以不加。

添加必须的依赖框架:
·AddressBook.framework
·StoreKit.framework
·SystemConfiguration.framework
还有一些框架没有列出来但可能会用到,比如遇到过一个报错

报错:
_CTFontManagerRegisterGraphicsFont Undefined symbols for architecture x86_64

解决:加CoreText.framework


2.项目配置

文档里提到的configuration file,在仅使用googleSignIn的时候不是必须的,而且后台下载对中文命名是拒绝的……(sad……)
所谓的GoogleService-Info.plist,其实作用只是在初始化的时候配置clientID,所以我们可以手动在自己target的Info.plist里加入一个,比如我就起名叫G_CLIENT_ID,甚至你在代码里hardcode都可以……



接着加URL Types,里面白纸黑字加截图,只填了Url Schemes的值


但其实Identifier也要填上的,这个可以在SDK附带的例子里可以看到


3.编码
参考这里:https://developers.google.com/identity/sign-in/ios/sign-in

文档中建议是把view controller也作为GIDSignInUIDelegate,这个是最简单的做法,但有时候我们自己关于googleSignIn,可能会有专门一个管理的类,mvc里叫controller吧,而且想把相关的代码都集中在这里,那么就需要曲折一点,实现:
signInWillDispatch:error:
signIn:presentViewController:
signIn:dismissViewController:
3个方法,
重点是 signIn:presentViewController: 和
signIn:dismissViewController:
举个例子,如果是cocos2d-x开发的话,可以在AppController里提供一个RootViewController的getter,然后在 signIn:presentViewController: 中,
RootViewController* ctrl = (RootViewController*)[AppController getRootViewCtrl];
[ctrl presentViewController:viewController animated:YES completion:nil];

signIn:dismissViewController:则是
RootViewController* ctrl = (RootViewController*)[AppController getRootViewCtrl];
[ctrl dismissViewControllerAnimated:YES completion:nil];


初始化,参考例子可以这样:
NSString *clientID = @"";
clientID = [[[NSBundle mainBundle] infoDictionary] objectForKey:@"G_CLIENT_ID"];
NSLog(@"clientID = %@", clientID);
GIDSignIn* signIn = [GIDSignIn sharedInstance];
signIn.clientID = clientID;
signIn.shouldFetchBasicProfile = YES;
signIn.delegate = self;
signIn.uiDelegate = self;


登录的调用则最为简单,不需要导入GIDSignInButton什么的,在自己按钮的事件回调里直接:
[[GIDSignIn sharedInstance] signIn];

登出则是:
[[GIDSignIn sharedInstance] signOut];


以上是接入的关键以及文档可能没写好的地方,另外附上的是可能遇到的问题及解决方案

======================
报错:
-[__NSDictionaryM gtm_httpArgumentsString]: unrecognized selector sent to instance 0x1e887ea0'

解决:Other Linker Flags: -ObjC

======================
报错:
’When |allowsSignInWithWebView| is enabled, uiDelegate must either be a |UIViewController| or implement the |signIn:presentViewController:| and |signIn:dismissViewController:| methods from |GIDSignInUIDelegate|.

解决:implement GIDSignInUIDelegate

======================
报错:
LaunchServices: ERROR: There is no registered handler for URL scheme com-google-gidconsent-google
LaunchServices: ERROR: There is no registered handler for URL scheme com-google-gidconsent
LaunchServices: ERROR: There is no registered handler for URL scheme com.google.gppconsent.2.4.1
LaunchServices: ERROR: There is no registered handler for URL scheme com.google.gppconsent.2.4.0
解决:
无视,千万不要处理,如果把这几个加到了URL Type,会导致iOS9以下无法弹出web登录页面
  • 大小: 14 KB
  • 大小: 116.1 KB
  • 大小: 56 KB
分享到:
评论

相关推荐

    unity接入微信iOS 支付代码工具

    本“unity接入微信iOS 支付代码工具”是专门为Unity开发者设计的,旨在简化在Unity项目中接入微信iOS支付的过程。以下将详细解释这个工具的关键知识点: 1. **Unity与iOS平台交互**: Unity原生支持C#编程,但iOS...

    unity3d ios平台,接入第三方sdk

    在Unity3D游戏开发中,将游戏发布到iOS平台时常需要接入第三方SDK,以实现诸如广告展示、社交网络分享、用户登录验证、支付系统等功能。本教程将详细讲解如何在Unity3D中接入iOS的第三方SDK,以实现跨平台的游戏功能...

    cocos creator 发布IOS版本(三) google admob广告sdk接入

    详细讲解:https://blog.csdn.net/weixin_41843959/article/details/119682017 这个demo在虚拟器上会出现,调用广告有时候会出现Cannot find an ad network adapter with the name(s): ...

    IOS接入各种SDK的框架,兼容多渠道

    使用object-c编写的一套接入各渠道平台SDK的代码框架,使用时只需引入工程并添加相关的依赖framework既然使用,所以渠道采用配置的方法实现,简单明了。框架实现了application的所有delegate,只需同意协议即可。

    iOS 微信 Apple登录 内购 Google Facebook AppsFlyer接入工具类

    本文将详细介绍如何通过Package Dependencies方式接入这些SDK,以及在项目中使用`OCHelp.h`和`OCHelp.mm`这两个文件来简化这一过程。 首先,让我们关注Apple登录。Apple提供了一个名为AuthenticationServices的SDK...

    ios接入微信支付

    ios接入微信支付,需额外引入微信支付库文件(有两个文件需要改成MRC)。 参考使用说明: http://a3.work/a/oc/252.html

    Unity 2019接入iOS SDK步骤1

    Unity 2019 接入 iOS SDK 步骤 1 Unity 2019 接入 iOS SDK 步骤 1 是 Unity 2019 中的一步骤,用于将 iOS SDK 集成到 Unity 项目中。这个步骤非常重要,因为它可以帮助开发者在 iOS 平台上实现广告展示和其他功能...

    思科Aironet无线接入点的配置指南及简明配置指南

    首先,我们来看看“用于思科Aironet无线接入点的思科IOS软件配置指南”。该文档是基于Cisco IOS(Internetwork Operating System)软件,这是思科网络设备的核心操作系统。它提供了全面的指导,涵盖了从初始设置到...

    swift-简单封装微信与支付宝支付代码帮助大家快速完成iOS端支付的接入

    本文将基于提供的资源“swift-简单封装微信与支付宝支付代码帮助大家快速完成iOS端支付的接入”来详细讲解如何在Swift项目中实现这两个支付方式的接入。 首先,我们需要了解Swift编程语言的基础知识,它是一种由...

    Delphi调用iOS三方SDK教程&微信接口示例&工具

    2. **接入流程**:遵循微信提供的SDK文档,了解如何初始化SDK、处理授权和获取access_token。 3. **接口调用**:根据需求选择合适的微信接口,例如使用OAuth2.0进行用户授权,调用支付接口进行交易,或者使用分享...

    GoogleSignIn-iOS:迦太基(iOS)的Google登录框架

    GoogleSignIn-iOS:迦太基(iOS)的Google登录框架

    UnityIAP接入-使用UnityIAP轻松接入GooglePlay与AppStore

    项目接入前自己写的Demo,在手机上跑过没有问题,才接入到项目中, 各位可以放心使用。源码中没有包含说明文档,百度上面有很多博客文档查看。可以保证下载下来可直接打包运行。Unity版本:Unity2018.4.10 KeyStore...

    cocos2d-x项目ios-android版接入微信分享功能

    公司需要,历经一周,终于把cocos2d-x项目接入微信分享功能搞定了,含android版及ios版接入。 功能实现:1.截屏并分享截屏图片到微信;2.网页链接分享到微信. 局限:cocos2d-x项目. 方便:截屏分享和链接分享就只需...

    穿山甲ios集成SDK

    通过集成穿山甲SDK,开发者可以轻松接入字节跳动的广告网络,实现广告的智能化展示和优化,从而提升应用的变现能力。 二、集成步骤 1. **获取SDK**:在集成穿山甲SDK之前,首先需要从官方渠道获取SDK。虽然通常...

    OpenSSL-for-IOS

    OpenSSL 是一个强大的安全套接层 (SSL) 和传输层安全 (TLS) 实现,它包含各种加密算法、常用的密钥和证书管理工具,以及一个用于网络通信的 SSL/TLS 协议库。在 iOS 开发中,OpenSSL 可用于实现安全的数据传输,如...

    arcgis runtime for iOS加载天地图

    《ArcGIS Runtime for iOS加载天地图的实现与详解》 在移动GIS开发领域,ArcGIS Runtime SDK for iOS是一个强大的工具,它允许开发者构建能够在iOS设备上运行的地图应用程序。本篇文章将详细探讨如何利用该SDK加载...

    iOS外设接口(充电口)配件连接检测

    然后,创建一个`EAAccessoryManager`实例,监听接入的配件: ```swift let accessoryManager = EAAccessoryManager.shared() accessoryManager.registerForLocalNotifications() accessoryManager....

    ios设备连接pc端

    在iOS中,实现这样的功能可以借助Apple的Foundation框架中的`GCDAsyncSocket`库,它提供了异步套接字编程的支持。然而,标签中提到了"java socket",这可能意味着在PC端是使用Java来编写服务器端的代码,Java的`java...

Global site tag (gtag.js) - Google Analytics