[swift] SwiftGen을 활용한 소셜 로그인 기능

소셜 로그인은 앱에서 사용자가 소셜 미디어 계정을 사용하여 로그인 할 수 있는 기능입니다. 이 기능을 구현하기 위해서는 소셜 미디어의 SDK를 사용하고 해당 SDK에 필요한 정보를 제공해야 합니다. 하지만 이러한 정보를 일일이 작성하고 관리하는 것은 번거로운 일일 수 있습니다.

이러한 문제를 해결하기 위해 SwiftGen이라는 유용한 도구를 사용할 수 있습니다. SwiftGen은 앱의 리소스를 자동으로 생성해주는 도구로, 이미지, 색상, 문자열 등을 관리할 수 있습니다. 이를 활용하여 소셜 로그인에 필요한 리소스를 간편하게 관리할 수 있습니다.

SwiftGen 설정하기

  1. SwiftGen을 프로젝트에 추가합니다. SwiftGen을 사용하기 위해서는 CocoaPods를 사용하여 프로젝트에 설치해야 합니다.

    pod 'SwiftGen', '~> 6.0'
    
  2. 터미널을 열고 프로젝트 폴더로 이동한 뒤 다음 명령어를 실행하여 SwiftGen의 설정 파일을 생성합니다. (이미 생성되어 있다면 생략해도 됩니다.)

    swiftgen init
    
  3. 프로젝트 폴더 내부에 swiftgen.yml 파일이 생성되었는지 확인합니다. 이 파일은 SwiftGen의 설정 파일이며, 소셜 로그인에 필요한 리소스를 관리하기 위해 사용할 수 있습니다.

소셜 로그인 리소스 관리하기

SwiftGen을 사용하여 소셜 로그인에 필요한 리소스를 관리할 수 있습니다. 예를 들어, 페이스북 로그인 버튼의 이미지와 타이틀 문자열을 관리하려면 다음과 같이 설정할 수 있습니다.

  1. swiftgen.yml 파일을 열고 다음과 같이 설정합니다.

    strings:
      - name: facebookButtonTitle
        tableName: "Localizable"
        value: "Facebook으로 로그인하기"
    
    assets:
      - name: facebookButtonImage
        tags:
          - social
        paths:
          - "Resources/Images/FacebookButton.png"
    
  2. 터미널을 열고 다음 명령어를 실행하여 SwiftGen을 사용하여 리소스를 생성합니다.

    swiftgen
    

    이 명령어를 실행하면 Generated 폴더 내부에 Strings.swiftAssets.swift 파일이 생성됩니다. 이 파일들에는 소셜 로그인에 필요한 리소스 정보가 자동으로 포함되어 있습니다.

소셜 로그인 구현하기

자동으로 생성된 Strings.swiftAssets.swift 파일을 활용하여 소셜 로그인 기능을 구현할 수 있습니다. 예를 들어, 페이스북 로그인 버튼을 생성하고 액션을 처리하는 코드는 다음과 같습니다.

import UIKit

class SocialLoginViewController: UIViewController {
    
    @IBOutlet weak var facebookButton: UIButton! // 페이스북 로그인 버튼 IBOutlet
    
    override func viewDidLoad() {
        super.viewDidLoad()

        facebookButton.setImage(Asset.facebookButtonImage.image, for: .normal) // 페이스북 로그인 버튼 이미지 설정
        facebookButton.setTitle(Strings.facebookButtonTitle, for: .normal) // 페이스북 로그인 버튼 타이틀 설정
    }
    
    @IBAction func facebookLoginButtonTapped(_ sender: UIButton) {
        // 페이스북 로그인 버튼 액션 처리
    }

}

위의 코드에서 Asset.facebookButtonImageStrings.facebookButtonTitle은 SwiftGen에서 자동으로 생성된 리소스 정보를 참조하는 것을 볼 수 있습니다. 이를 활용하여 소셜 로그인 기능을 구현할 수 있습니다.

이처럼 SwiftGen을 활용하면 소셜 로그인과 같은 기능을 구현할 때 리소스 관리가 훨씬 편리해지고 실수를 방지할 수 있습니다. 또한, 코드의 가독성을 높일 수 있어 유지보수성을 개선할 수 있습니다.