[swift] Swift FirebaseUI를 사용하여 앱 소셜 공유 구현하기

앱을 개발할 때, 사용자들이 앱의 내용을 소셜 미디어에 공유할 수 있는 기능은 매우 중요합니다. FirebaseUI는 Firebase와 Swift를 쉽게 통합하고, 소셜 공유 기능을 구현하는 데 도움을 줍니다. 이번 블로그 포스트에서는 Swift FirebaseUI를 사용하여 앱에서 소셜 공유를 구현하는 방법을 알아보겠습니다.

FirebaseUI 설치하기

FirebaseUI를 사용하기 위해 먼저 CocoaPods를 통해 FirebaseUI를 설치해야 합니다. Podfile에 다음과 같은 행을 추가하고, 터미널에서 pod install 명령어를 실행하세요.

pod 'FirebaseUI'

Google 공유 구현하기

Google 공유 기능을 구현하기 위해 GIDSignIn.sharedInstance()?.presentingViewController 속성을 설정해줘야 합니다. 이 속성은 Google 로그인 창이 표시될 뷰 컨트롤러를 지정합니다. 아래의 코드를 AppDelegate.swift 파일에 추가하세요.

import Firebase
import FirebaseUI

class AppDelegate: UIResponder, UIApplicationDelegate, FUIAuthDelegate {

    func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
        
        // Firebase 설정
        FirebaseApp.configure()
        
        // Google 소셜 로그인 설정
        let authUI = FUIAuth.defaultAuthUI()
        authUI?.delegate = self
        let providers: [FUIAuthProvider] = [FUIGoogleAuth()]
        authUI?.providers = providers
        
        return true
    }
    
    // Google 로그인 처리
    func application(_ app: UIApplication, open url: URL, options: [UIApplication.OpenURLOptionsKey : Any] = [:]) -> Bool {
        return (FUIAuth.defaultAuthUI()?.handleOpen(url, sourceApplication: options[UIApplication.OpenURLOptionsKey.sourceApplication] as! String, annotation: options[UIApplication.OpenURLOptionsKey.annotation]))!
    }
}

위의 코드에서 FUIGoogleAuth()는 Google 소셜 로그인을 위한 FUIAuthProvider 객체입니다.

Facebook 공유 구현하기

Facebook 공유 기능을 구현하기 위해 AppDelegate 파일에 다음과 같은 코드를 추가하세요.

import FBSDKCoreKit
import FBSDKLoginKit

class AppDelegate: UIResponder, UIApplicationDelegate, FUIAuthDelegate {

    func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
        
        // Firebase 설정
        FirebaseApp.configure()
        
        // Facebook 소셜 로그인 설정
        let authUI = FUIAuth.defaultAuthUI()
        authUI?.delegate = self
        let providers: [FUIAuthProvider] = [FUIFacebookAuth()]
        authUI?.providers = providers
        
        // Facebook 초기화
        ApplicationDelegate.shared.application(application, didFinishLaunchingWithOptions: launchOptions)
        
        return true
    }
    
    // Facebook 로그인 처리
    func application(_ application: UIApplication, open url: URL, options: [UIApplication.OpenURLOptionsKey : Any] = [:]) -> Bool {
        let handled = ApplicationDelegate.shared.application(application, open: url, options: options)
        return handled
    }
    
    // Facebook 로그인 처리
    func application(_ application: UIApplication, open url: URL, sourceApplication: String?, annotation: Any) -> Bool {
        let handled = ApplicationDelegate.shared.application(application, open: url, sourceApplication: sourceApplication, annotation: annotation)
        return handled
    }

}

위의 코드에서 FUIFacebookAuth()는 Facebook 소셜 로그인을 위한 FUIAuthProvider 객체입니다.

소셜 공유 버튼 추가하기

앱의 UI에 소셜 공유 버튼을 추가합니다. 버튼을 누르면 FirebaseUI에서 제공하는 기능을 사용하여 공유를 처리할 수 있습니다.

import UIKit
import FirebaseUI

class ViewController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()
        
        let shareButton = UIButton(frame: CGRect(x: 100, y: 100, width: 200, height: 50))
        shareButton.setTitle("Share on Social Media", for: .normal)
        shareButton.setTitleColor(.blue, for: .normal)
        shareButton.addTarget(self, action: #selector(shareButtonTapped), for: .touchUpInside)
        view.addSubview(shareButton)
    }
    
    @objc func shareButtonTapped() {
        let authUI = FUIAuth.defaultAuthUI()
        let authViewController = authUI!.authViewController()
        present(authViewController, animated: true, completion: nil)
    }
}

소셜 공유 버튼을 추가한 후, 버튼을 누르면 FirebaseUI의 로그인 화면이 나타납니다. 사용자가 로그인 후, 소셜 공유 기능을 사용할 수 있습니다.

결론

이번 포스트에서는 Swift FirebaseUI를 사용하여 앱 소셜 공유 기능을 구현하는 방법을 살펴보았습니다. FirebaseUI는 Firebase와의 통합을 간소화하며 다양한 소셜 미디어 플랫폼에서 소셜 공유 기능을 쉽게 구현할 수 있도록 도와줍니다. 이러한 기능을 활용하여 앱의 사용자들이 콘텐츠를 소셜 미디어에 공유할 수 있도록 개발하세요.

참고 자료