Firebase Functions는 서버리스 백엔드를 구축하기 위한 Google Cloud의 기능을 활용한 서비스입니다. Swift 앱에서 Firebase Functions를 사용하면 클라이언트 측에서 서버리스 아키텍처를 구축하여 데이터 처리, 비즈니스 로직 실행 등의 작업을 수행할 수 있습니다.
Firebase Functions 설정
-
Firebase 프로젝트를 생성하고 Firebase 콘솔로 이동합니다.
-
Functions 섹션으로 이동하여 Firebase Functions를 활성화합니다.
-
functions
폴더를 생성한 후 해당 폴더에서 터미널을 열고firebase init
명령을 입력합니다. 기본 설정으로 설정 파일(.firebaserc
,firebase.json
)이 생성됩니다. -
functions
폴더 안에index.js
파일을 생성하고 Firebase Functions의 로직을 작성합니다.
Firebase Functions에 Swift 코드 추가하기
-
Firebase Functions에서 Swift 코드를 실행하려면 Firebase Functions을 TypeScript로 작성하고 Firebase SDK를 활용하여 Swift 코드를 호출하는 방식으로 구성해야 합니다.
-
functions
폴더 안에 Swift 파일을 생성하고 Firebase Functions와의 인터페이스를 구현합니다. 예를 들어,MyFunctions.swift
파일에MyFunctions
클래스를 작성합니다. -
MyFunctions
클래스 안에 Firebase Functions에서 호출될 때 실행되는 메서드를 구현합니다.
import Foundation
import FirebaseFunctions
import Firebase
class MyFunctions {
let functions = Functions.functions()
func myFunction(data: [String: Any], completion: @escaping (String?, Error?) -> Void) {
functions.httpsCallable("myFunction").call(data) { (result, error) in
if let error = error {
completion(nil, error)
return
}
guard let result = result?.data as? [String: Any],
let message = result["message"] as? String else {
completion(nil, nil)
return
}
completion(message, nil)
}
}
}
index.js
파일에myFunction
을 호출하는 함수를 작성합니다.
const functions = require('firebase-functions');
const admin = require('firebase-admin');
admin.initializeApp();
exports.myFunction = functions.https.onCall(async (data, context) => {
// Swift 코드와 상호 작용할 수 있는 로직을 작성합니다.
const message = `Hello, ${data.name}!`;
return {
message: message
};
});
- Firebase Functions를 배포합니다. 터미널에서
firebase deploy --only functions
명령을 실행하여 Firebase Functions를 배포합니다.
Swift 앱에서 Firebase Functions 사용하기
- Swift 앱에서 Firebase Functions를 사용하기 위해서는 Firebase SDK를 설치해야 합니다.
Podfile
에 다음과 같이 추가합니다.
pod 'Firebase/Functions'
AppDelegate.swift
파일에 Firebase를 초기화합니다.
import Firebase
// ...
class AppDelegate: UIResponder, UIApplicationDelegate {
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
FirebaseApp.configure()
return true
}
// ...
}
- Swift 코드에서 Firebase Functions를 사용하여 서버로부터 데이터를 가져올 수 있습니다.
let myFunctions = MyFunctions()
myFunctions.myFunction(data: ["name": "John"]) { (message, error) in
if let error = error {
print("Error: \(error)")
return
}
if let message = message {
print("Message: \(message)")
}
}
Firebase Functions를 사용하여 Swift 앱의 서버리스 아키텍처를 구축하는 방법에 대해 알아보았습니다. Firebase Functions를 활용하면 클라이언트 측에서 간편하게 서버 기능을 실행할 수 있으며, 더 유연하고 확장 가능한 앱을 개발할 수 있습니다.