2015-01-24 4 views
1

개발중인 iOS 앱에서 Google+ 로그인 기능을 추가해야합니다. 이 응용 프로그램은 Swift에서 개발되었습니다.Google 플러스 Swift의 CocoaPod 포함

GooglePlus iOS SDK를 CocoaPods를 통해 추가했습니다. Swift를 공식적으로 지원하는 CocoaPods v0.36 베타가 설치되어 있습니다. 나는 전에 Objective-C 라이브러리를 Swift 프로젝트와 통합했다.

포드 설치가 성공적이었습니다. 그런 다음 프레임 워크를 파일에 가져 와서 메서드를 사용하고자 할 때 아래 줄을 파일의 맨 위에 추가해야했습니다.

import GooglePlus 
import GoogleOpenSource 

그러나 프로젝트를 빌드 할 때 다음 오류가 발생합니다.

이러한 모듈 '하여 Google+'

이러한 모듈 'GoogleOpenSource'는

내가 잘못 여기서 뭐하는 거지? 정확한 이름을 지정하고 있습니까?


편집 :은 내가 브리지 헤더를 사용하여 알고 있어요. 하지만 최신 CocoaPod는 Obj-C 라이브러리를 프로젝트에 추가하는 것을 지원합니다. 신속하게 사용할 수 있도록 프레임 워크로 자동 변환합니다. 전에 다른 브리징 헤더없이 다른 Obj-C 라이브러리를 사용해 보았습니다. Google +의 iOS SDK에서는 실패합니다.

+0

두 번째 포드 'Alamofire'를 추가하면 거의 동일한 동작을 보입니다. 오류 : 브리징 헤더를 가져 오지 못했습니다. – avgx

+0

@avgx 브리징 헤더에 아무 것도 추가 할 필요가 없습니다. 나는 Alamofire를 CocoaPods를 통해서도 사용하고 있으며 실제로는 잘 작동합니다. – Isuru

+0

8 개월 후 운이 좋았나요? – Melvin

답변

1

Swift에 공개 할 Objective-C 클래스를 가져 오는 브리지 헤더를 만들어야합니다. 이 작동 방식에 대한 설명서는 here에서 볼 수 있습니다.

하나를 만드는 가장 쉬운 방법은 프로젝트에서 Objective-C 클래스를 만드는 것입니다. 그런 다음 Xcode는 브리징 헤더를 만들지 묻습니다. 예라고 말한 다음 생성 한 클래스를 삭제하십시오.

이 헤더에 필요한 Google 프레임 워크를 가져 오면 Swift에서 해당 클래스에 액세스 할 수 있습니다.

+0

고마워요. 그렇습니다. 브리징 헤더를 사용하고 있습니다. 하지만 최신 CocoaPod는 Obj-C 라이브러리를 프로젝트에 추가하는 것을 지원합니다. 신속하게 사용할 수 있도록 프레임 워크로 자동 변환합니다. 전에 다른 브리징 헤더없이 다른 Obj-C 라이브러리를 사용해 보았습니다. Google +의 iOS SDK에서 왜 실패하는지 잘 모르겠습니다. – Isuru

0

아직 응용 프로그램을 설치하지 않았다면 Google developer console에 응용 프로그램을 설치하십시오. 당신이 Cocoapods을 사용하여 구성하려는 경우

, 당신은 단지 Podfile을 생산해야합니다

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

그런 다음 프로젝트가 들어있는 폴더에서 pod install를 실행하고 생성 project.xcworkspace를 엽니 다.

SDK 만 사용하여 구성하는 경우 download the Google+ SDK을 프로젝트에 포함하십시오.

첫 번째 부분은 프로젝트에 Obj-C 파일을 추가하여 브리지 헤더를 강제로 만드는 것입니다. 브리징 헤더 내에서 Google+ 라이브러리를 포함하십시오.

// example bridging header... 

#ifndef swiftsignin_Bridging_h 
#define swiftsignin_Bridging_h 

#import <GooglePlus/GooglePlus.h> 
#import <GoogleOpenSource/GoogleOpenSource.h> 

#endif 

다음은 코드에 있습니다.의 ViewController는 객체에 로그인 - 더를 구성합니다

// 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를 가리 키도록 어딘가에 정의 될 필요가있다. 앱 정보에서

// 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) 
} 

: 앱 위임에서

, 당신은 인증 코드를 받아들 때의 OAuth 2.0 인증 단계 완료 및 승인 라이브러리에 전달 오픈 URL 핸들러를 추가해야합니다. plist, 귀하의 애플 리케이션 번들 이름으로 설정된 구성표와 식별자를 가지고 URL 처리기를 추가합니다.

나는 당신을 위해 도움이 될 a demo Google+ Sign-in Swift app on GitHub을 만들었습니다.

+0

귀하의 예제는 cocoapods를 사용하지 않습니다 ... – Jgubman

+0

프로젝트에 예제 podfile 추가 – class

관련 문제