[swift] Swift와 Firebase를 이용한 앱 푸시 알림 기능 구현하기

많은 앱이 사용하는 푸시 알림 기능은 사용자에게 중요한 정보를 전달하고 앱의 활성화를 도모하는 역할을 합니다. Firebase는 푸시 알림을 구현하는 데 매우 편리한 기능과 API를 제공합니다. 이번 글에서는 Swift와 Firebase를 이용하여 앱 푸시 알림 기능을 구현하는 방법에 대해 알아보겠습니다.

Firebase 프로젝트 설정하기

Firebase를 사용하기 위해 먼저 Firebase 프로젝트를 생성해야 합니다. Firebase 콘솔에 접속하여 새 프로젝트를 생성하고, iOS 앱을 추가합니다. Bundle Identifier를 입력하고, GoogleService-Info.plist 파일을 다운로드하여 프로젝트에 추가합니다.

Firebase SDK 설치하기

Firebase SDK를 설치하기 위해 CocoaPods를 사용합니다. Podfile 파일을 생성하고 아래 코드를 추가합니다.

platform :ios, '9.0'

target 'YourAppName' do
  use_frameworks!

  pod 'Firebase/Core'
  pod 'Firebase/Messaging'

end

터미널에서 pod install 명령어를 실행하여 Firebase SDK를 설치합니다.

앱에 Firebase 설정하기

AppDelegate.swift 파일을 열고 Firebase SDK를 초기화하는 코드를 추가합니다.

import UIKit
import Firebase

@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {

    func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {

        FirebaseApp.configure()

        return true
    }
}

푸시 알림 구현하기

Firebase Console에서 프로젝트 설정 페이지로 이동하여, ‘클라우드 메시징’ 탭을 선택합니다. 여기에서 푸시 알림을 전송할 수 있습니다.

iOS 앱에서 푸시 알림을 수신하기 위해 알림 권한을 요청해야 합니다. 앱이 처음 실행될 때, 사용자에게 알림 권한을 요청하는 코드를 추가합니다.

import UIKit
import Firebase

class ViewController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()

        UNUserNotificationCenter.current().delegate = self
        Messaging.messaging().delegate = self

        FirebaseApp.configure()
        requestNotificationAuthorization()
    }

    func requestNotificationAuthorization() {
        UNUserNotificationCenter.current().requestAuthorization(options: [.alert, .sound, .badge]) { (granted, error) in
            if granted {
                print("알림 권한이 허용되었습니다.")
            } else {
                print("알림 권한이 거부되었습니다.")
            }
        }
    }
}

extension ViewController: UNUserNotificationCenterDelegate {

}

extension ViewController: MessagingDelegate {
    func messaging(_ messaging: Messaging, didReceiveRegistrationToken fcmToken: String) {
        print("Firebase registration token: \(fcmToken)")
    }
}

위 코드에서 requestNotificationAuthorization() 메소드는 알림 권한을 요청하는 로직을 처리합니다.

Firebase Console에서 푸시 알림을 전송하기 위해 알림 페이로드를 구성합니다. 사전에 등록한 iOS 앱의 Bundle Identifier와 매칭되는 토픽을 선택하여 푸시 알림을 보낼 수 있습니다.

앱에서 푸시 알림 처리하기

푸시 알림을 수신하면, 앱의 AppDelegate.swift 파일에서 application(_:didReceiveRemoteNotification:fetchCompletionHandler:) 메소드가 호출됩니다. 이 메소드에서 알림의 내용을 처리하고 사용자에게 표시할 수 있습니다.

import UIKit
import Firebase

@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {

    func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {

        FirebaseApp.configure()

        if let notification = launchOptions?[.remoteNotification] as? [String: AnyObject] {
            self.handleNotification(notification)
        }

        return true
    }

    func application(_ application: UIApplication, didReceiveRemoteNotification userInfo: [AnyHashable : Any], fetchCompletionHandler completionHandler: @escaping (UIBackgroundFetchResult) -> Void) {

        self.handleNotification(userInfo)

        completionHandler(UIBackgroundFetchResult.newData)
    }

    func handleNotification(_ notification: [String: AnyObject]) {
        // 푸시 알림 처리 로직 구현
    }
}

앱이 백그라운드 또는 종료된 상태에서 푸시 알림을 수신할 때, 알림의 내용은 launchOptions?[.remoteNotification]로 전달됩니다.

마무리

이제 Firebase를 사용하여 Swift로 앱의 푸시 알림 기능을 구현하는 방법을 알아보았습니다. Firebase의 강력한 기능을 활용하여 사용자에게 중요한 정보를 전달하고, 앱의 활성화를 높일 수 있는 푸시 알림 기능을 구현해보세요.

더 많은 Firebase 기능과 옵션에 대해서는 Firebase 공식 문서를 참고하시기 바랍니다.