[iOS/swift] Google Sign In 연동하기 #1[iOS/swift] Google Sign In 연동하기 #2 마지막으로 AppDelegate와 ViewController 간의 상호 작용과 View를 변경하는 방법이다.1) Custom Protocol과 Delegate 생성하기 2) NSNotification을 보내기 3) AppDelegate의 속성을 세팅하기 (ViewController가 AppDelegate에 callback 함수를 넘겨주고 AppDelegate에서 로그인이 끝나면 해당 콜백 함수를 호출하는 방식으로 진행.) 내가 참고한 Google 동영상에서는 3번째 방법을 사용하고 Google 예시 프로젝트에서는 2번을 사용함. 여기서는 3번 방법을 포스팅한다. 1. MainStor..
[iOS/swift] Google Sign In 연동하기 #1 (API 다운로드 및 설정) 구글 로그인은 나의 앱에서 구글로 사용자 인증을 요청하고 구글에서 인증이 완료되면 나의 앱으로 인증이 정상적으로 되었다고 알려주는 형식이다. 그래서 나의 앱에서 구글 로그인 버튼을 눌렀을때 구글로 로그인 요청을 보내고, 구글에서 로그인 요청이 종료되었을때 나의 앱에서 해달 URL에 대한 처리를 해주어야 한다. 로그인 버튼을 만들기 전에 구글 사용자 인증이 완료되고 난 후의 URL 처리하는 과정을 먼저 구현한다. 1. 구글에서 로그인을 완료하고 보낸 URL을 처리하기 위해 나의 App Delegate 파일에 application:openURL:options: 함수를 구현한다. 여기서는 GIDSignIn 객체의 han..
1. 나의 xcode 프로젝트를 만든다 (swift)2. 터미널에서 나의 프로젝트 경로로 이동하고, pod을 이용하여 google api를 가져온다. $ cd 프로젝트 경로$ pod init$ vi Podfile (Podfile에서 i를 눌러 입력 모드로 전환 후 pod 'Google/SignIn' 을 추가그리고 esc :wq 명령어를 입력해 파일을 저장 후 vi editor를 종료 한다) $ pod install3. 2번까지 진행하면 나의 프로젝트 경로에 .xcworkspace 파일이 생성된다. 이 파일을 xcode로 오픈하여 이후 작업을 진행하면 된다. 4. google 설정 plist 파일을 추가해준다. https://developers.google.com/identity/sign-in/ios/st..
iOS 개발시 라이브러리를 관리하는 방법으로 cocoapods가 있다. 설치는 터미널에서 다음 명령어를 입력한다. $ sudo gem install cocoapods 설치 후 자신의 개발 프로젝트 디렉토리로 이동하여 다음 명령어를 입력한다.$ pod init 나는 Google API를 사용해 보기 위해 다음 명령어를 사용했다. $ pod Google try Setting up CocoaPods master repo 라는 결과가 보여지고 한참 후에 추가적인 안내와 이용할 프로젝트를 선택하라는 문구가 나왔고 SignInExample.xcodeproj를 선택하였더니 xcode에 샘플 프로젝트가 오픈됐다. *여기서부터 삽질.... (다음을 위해 적어둬야징) swift로 변환하겠냐는 물음이 나와서 그냥 잘 모르니..
영어 공부와 iOS 공부를 위해서 apple 개발자 문서를 번역한것입니다. 공부하는 중에 번역한 것이라서 오타나, 잘못된 부분이 있을 수 있습니다. https://developer.apple.com/library/content/documentation/UserExperience/Conceptual/AutolayoutPG/AutoLayoutWithoutConstraints.html#//apple_ref/doc/uid/TP40010853-CH8-SW1 Auto Layout Without Constraints제약사함이 없는 auto layoutStack views provide an easy way to leverage the power of Auto Layout without introducing the c..
영어 공부와 iOS 공부를 위해서 apple 개발자 문서를 번역한것입니다. 공부하는 중에 번역한 것이라서 오타나, 잘못된 부분이 있을 수 있습니다. https://developer.apple.com/library/content/documentation/UserExperience/Conceptual/AutolayoutPG/index.html#//apple_ref/doc/uid/TP40010853-CH7-SW1 Understanding Auto LayoutAuto Layout이해하기Auto Layout dynamically calculates the size and position of all the views in your view hierarchy, based on constraints placed on..
var str = "Hello, playground" // Ifif str != "Hello, playground" { print(true)} else{ print(false)} // For// deprecated: 강의에는 가능하다고 되어있지만 playground에서 실행하니까 deprecated되었다고 경고가 떴다. 아래와 같이 수정해야한다. for var index = 0; index < 3; index += 1 { print("index is \(index)")} // fixedfor index in 0.. 30). // 만약 변수 선언이 필요 없을 경우 변수 대신 _ 를 사용한다. var result:String switch(value){ case 1: result = "\(key)는 1"; c..
// Dictionary: Map처럼 key와 Value를 쌍으로 저장하는 구조var roomCapacity:[String:Int] = ["small":10, "medium":50, "large":100] // 추가하기roomCapacity["xsmall"] = 5;roomCapacity["xlarge"] = 200;roomCapacity // 값 읽기roomCapacity["medium"] // Key값 value값을 따로 만들기let roomName = roomCapacity.keyslet capacities = roomCapacity.values // Key값 value값을 arr로 만들기let roomNameArr = [String](roomCapacity.keys)let capacitiesArr..
// Array 생성하기: 한개의 Array 안에는 동일한 타입이 들어감. 따라서 Type도 설정 해주어야 함.let arr1:Array = ["test1","test2","test3"]var arr2:[Int] = [1,2,3] // Array 값 읽기arr1[0]arr1.firstarr1[2]arr1.lastarr1.startIndexarr1.endIndexarr1.indexOf("test2") // 역순 Array 만들기var reverseArr1:[String] = arr1.reverse()reverseArr1 // Array 값 추가arr2.append(4)arr2 += [5]arr2 += [Int(6.32)] // Array 값 삭제arr2.removeAtIndex(2)arr2.removeFi..
// Tuple: 콤마로 구분된 값의 리스트 // 여러개의 Type을 함께 사용할 수 있다. (String,Int,Double) 등으로 구성 가능. // 이름을 설정하지 않은 경우 index 값으로 접근var time1 = (12,19,30)time1.0time1.1time1.2 time1.0 = 14time1.1 = 20time1.2 = 00 // 이름과 타입을 설정한 경우 설정한 이름으로 접근var time2:(h:Int, m:Int, s:Int) = (10,12,30)time2.htime2.mtime2.s let (start,end) = (time1,time2)let endHour = end.h // Typealias: 원하는 타입을 생성typealias Time = (h:Int, m:Int, s:..