Google加上CocoaPods在Swift中

在我正在开发的iOS应用中,我需要添加Google+loginfunction。 该应用程序是在Swift中开发的。

我通过CocoaPods添加了GooglePlus iOS SDK。 请注意,我已经安装了CocoaPods v0.36 beta,它正式支持Swift。 我以前用这种方式集成了许多Objective-C库和Swift项目。

吊舱安装成功。 然后,我需要将框架导入到我想要使用它的方法的文件中,所以我将下面的几行添加到文件的顶部。

import GooglePlus import GoogleOpenSource 

但是当我build立项目时,我得到以下错误。

没有这样的模块“GooglePlus”

没有这样的模块“GoogleOpenSource”

我在这里做错了什么? 我是否指定了正确的名字?


编辑:我知道使用桥头。 但最新的CocoaPods支持将Obj-C库添加到项目中。 它会自动将它们转换为框架,以便您可以使用Swift方法。 我之前已经做了一些没有桥接头的其他Obj-C库。 它与谷歌+的iOS SDK失败。

您将需要创build一个桥接头,您将在其中导入要暴露给Swift的Objective-C类。 你可以在这里看到关于这个工作的文档。

创build一个最简单的方法是在你的项目中创build一个Objective-C类。 然后Xcode会询问你是否想创build一个桥接头,只是说Yes,然后删除你创build的类。

在这个头文件中导入必要的Google框架,然后你就可以在Swift中访问这些类。

如果您还没有,请在Google开发者控制台中设置您的应用程序。

如果你想使用Cocoapods进行configuration,只需要生成一个Podfile:

 target 'swiftsignin' do pod 'googleplus-ios-sdk' end 

然后从包含项目的文件夹运行pod install并打开生成的project.xcworkspace。

如果您仅使用SDK进行configuration,请下载Google+ SDK并将其包含在您的项目中。

第一部分是通过添加一个Obj-C文件到你的项目来强制创build一个桥接头。 在桥接标题中,包含Google+库:

 // example bridging header... #ifndef swiftsignin_Bridging_h #define swiftsignin_Bridging_h #import <GooglePlus/GooglePlus.h> #import <GoogleOpenSource/GoogleOpenSource.h> #endif 

接下来,在您的代码的某个地方,例如ViewController,configurationlogin对象:

  // Configure the sign in object. var signIn = GPPSignIn.sharedInstance() signIn.shouldFetchGooglePlusUser = true signIn.clientID = kClientId signIn.shouldFetchGoogleUserEmail = toggleFetchEmail.on signIn.shouldFetchGoogleUserID = toggleFetchUserID.on signIn.scopes = [kGTLAuthScopePlusLogin] signIn.trySilentAuthentication() signIn.delegate = self 

自然, kClientId需要定义在某处指向您的客户端ID。

在您的应用程序委托中,您需要添加一个开放的URL处理程序,以便在OAuth 2.0身份validation步骤完成时接受授权代码并将其传递给授权库:

 // Added to handle the Authorization code returned from sign-in. func application(application: UIApplication, openURL url: NSURL, sourceApplication: String?, annotation: AnyObject?) -> Bool { return GPPURLHandler.handleURL(url, sourceApplication: sourceApplication, annotation: annotation) } 

在您的应用程序info.plist中,添加一个URL处理程序,其中的scheme和标识符设置为您的应用程序的软件包名称。

我在GitHub上创build了一个演示Google+loginSwift应用程序 ,可能对您有所帮助。